Podmíněnost segmentů

Krom omezení přístupu na databázové úrvoni je možné omezovat viditelnost či editovatelnost na úrovni formuláře. K tomuto účelu slouží dvě vlastnosti definovatelné u oblasti anebo prvku:

appear-if - podmíněné zobrazení segmentu dokumentu,

edit-if - podmíněná editovatelnost segmentu dokumentu.

Obě vlastnosti mají stejnou syntaxi, pro příklad tedy projdeme pouze jednu z obou vlastností. Jediným rozdílem, je pouze to, že pokud je výraz vlastnosti vyhodnocen kladně jednou jse segment zobrazen a podruhé je editovatelný. Z podstaty věci je v generovaném tiskovém náhledu uplatnitělné pouze appear-if. Obě vlastnosti jsou přitom vzájemně kombinovatelné.

Uvažujme dokument "Pojistná smlouva", u kterého musíme vyřešit následující problém. Pojistná smlouva má údaje jako "Roční pojistné", "Počátek pojištění", "Typ pojištění" apod.. Tyto údaje (resp. prvky) jsou pro všechny typy pojištění shodné (tj. řeší je každá pojistná smlouva bez ohledu na typ). Pak však existují prvky, které se liší podle typu pojištění. Například u typu "Pojištění domácnosti" řešíme evidenci prvků "Movitý majetek celkem", "Nemovitý majetek celkem", "Odpovědnost" atd.. Zatímco u typu "Havarijní pojištění" řešíme evidenci položek "VIN", "SPZ", "Zabezpečení" atd..

Díky podmíněnosti segmentu můžeme pro každý typ pojištění nadefinovat jednu oblast se specifickými prvky a této oblasti přiřadit podmínku pomocí atributu appear-if. Tak bude oblast "Údaje pro pojištění domácnosti" obsahovat atribut:

appear-if = "typ_pojisteni == 'dom'"

Obdobně u typu "Havarijní pojištění" bude uvedeno:

appear-if = "typpojisteni == 'hav'"

Typ pojištění samozřejmě nemusíme řešit textovým řetězcem, ale číselnou hodnotou. Pak bychom byli schopni například vyřešit i kombinaci, kdy existují příbuzné typy pojištění, které evidují údaj "Pojistná částka", zatímco jiná skupina tento údaj (prvek) nemá (a bylo by dokonce chybou jej vyžadovat). Stanovili bychom, že typy pojištění, které budou mít číslo do stovky budou vyžadovat prvek "Pojistná částka" a typy, které jej nevyžadují budou mít číslo větší než 100. Pak bychom vytvořili oblast s následující podmínkou:

appear-if = "typ_pojisteni -+ 100"

Tato oblast by obsahovala prvek "Pojistná částka" a případně jiné další prvky, které náleží pouze dané skupině pojištění.

Speciální využití má zadání klíčového slova none do atributu appear-if. Toto klíčové slovo zapříčiní, že segment bude vždy skrytý. Může se například jednat o segment využívaný pouze akcemi dokumentu, nebo přiřazovaný dokumentu na základě propojení s jiným dokumentem apod.

Jiným klíčovým slovem, které je ovšem používáno v rámci logického výrazu a nikoli jako soliterní výskyt je slovo emptyValue.


Možnost výskytu ...-if ve službách dokumentu

Atribut podmíněnosti zobrazení a editovatelnosti se může přenášet pomocí služeb dokumentů. Tím zůstává zachována funkčnost přenášených částí dokumentů. Atribut appear-if není nutné uvádět do služby, přenáší se z obsahu dokumentu. Pokud tomu tak je, je zapotřebí dohlédnout na to, aby odkazy v tomto výrazu byly platné - tj. aby odkazovaly na ty prvky, na které odkazovat mají. Jde o to si uvědomit, že stromová struktura služby často neodpovídá struktuře dokumentu a to může mít vliv také na odkazy v appear-if. Pokud taková situace nastane, je zapotřebí atribut appear-if uvést i ve službě s upravenými odkazy. Je rovněž zapotřebí, aby všechny takto odkazované prvky byly součástí služby. Pokud není žádoucí, aby se v cizím dokumentu zobrazovaly, pak do jejich appear-if nastavíme klíčové slovo none. Pokud nechceme, aby se appear-if v cizím dokumentu vůbec používalo, tj. aby segmenty v cizím dokumentu byly vždy vidět (samozřejmě pokud k nim má daný uživatel oprávnění), pak do služby uvedeme prázdný atribut appear-if.

Ať již se však appear-if nebo edit-if do služby převádí z obsahu dokumentu nebo je psáno přímo v segmentu služby, vždy musí platit, že všechny případné odkazy, které obsahuje musí být relativní a odkazovat na jiný segment téže služby. Vzhledem k tomu, že všechny absolutní odkazy mohou být převedeny na relativní a že relativní jsou z pravidla jednoduššími, nečiní toto omezení v definici žádný zásadní problém.


Kmen definiceSpecifikace skupin dokumentůDefinice šablon prvkůDefinice šablon oblastíSyntaxe odkazů na segmentyPodmíněnost segmentůVýrazy pro filtrySlužby - propojování dokumentů