Služby - propojování dokumentů
Pro smysluplné ukládání informací je mimo jiné zapotřebí jejich vzájemná propojitelnost souvisejících položek. K těmto propojením v systému flexideo slouží klíče, které jsou však ve struktuře databáze generovány automaticky dle potřeby. Na úrovni definice propojujeme jednotlivé dokumenty a vybrané části jejich obsahů, kdy jeden dokument obsahuje přímo či nepřímo část druhého. Vždy tak je jeden dokument brán jako zdrojový a jeden jako cílový s výběrem toho zdrojového. Jako zdrojový například můžeme chápat dokument typu zakaznik a jako cílový dokument typu smlouva, kde je na každé smlouvě vybrán patřičný klient, se kterým byla uzavřena. Tj. smlouva obsahuje kolonky jako je jméno, adresa, číslo aj. Jeden dokument se tak stává přímo (vazba foreign) nebo nepřímo (vazba initial) součástí jiného. Přesto je třeba si zachovat určitý odstup. Jde, mimo jiné, o to, aby případná úprava struktury jednoho dokumentu (zdrojového) nezpůsobila samovolnou úpravu struktury dokumentu jiného. Navíc uspořádání zdrojového dokumentu vůbec nemusí vyhovovat uspořádání dokumentu jiného a už vůbec nepotřebujeme nahlížet všechny, ale pouze na vybrané kolonky zdroje. Je tedy třeba nějakého mezičlánku, který tyto schopnosti zajistí. Tímto mezičlánkem jsou tzv. služby zdrojových dokumentů pro nabídnutí potřebných struktur pro dokumenty cílové. Zachováním či úpravou obsahu služeb řídíme nabízené struktury pro cílové dokumenty bez ohledu na úpravy či zachování struktury vlastního zdrojového dokumentu.
Metodika služeb zdrojových dokumentů má i další výhody. Vezměme jako příklad situaci, kdy máme dokument člověk (viz. definice v násl. části o způsobech a syntaxi), kam ukládáme veškeré osobní informace o všech osobách, které kde v systému flexideo používáme. Je jasné, že dokument člověk bude jako zdroje využívat celá řada dalších dokumentů. Díky službám však můžeme na dokumentu vystavit například dvě služby "Jméno a adresa" a "další údaje". V ostatních dokumentech pak jen provedeme odkaz na jednu ze služeb a struktura cílového dokumentu se nastaví dle struktury odkazované služby. Tyto struktury tak řešíme pak jediném místě a to bez ohledu na příp. potřebné změny struktury v dokumentu člověk.
Vezměme například, že z nějakého důvodu potřebujeme přeskupit strukturu zdrojového dokumentu. Potřebujeme přidat jednu adresu nebo určitý druh doplňujících údajů apod. Takové přidání velmi snadno způsobí změnu struktury dokumentu člověk. Pokud by neexistovaly mezičlánky v podobě služeb, museli bychom změnit celou tu dlouhou řadu dokumentů, které na dokument člověk odkazují. My však díky službám můžeme udělat pouze to, že službu změníme ze strany dokumentu, ale navenek služba zůstane stejná. Samozřejmě, že změna dokumentu člověk mohla být provedena na základě potřeby jiného dokumentu, který pak nemá zájem využívat služeb se starou strukturou. To je ovšem opět velmi snadno řešitelné pomocí přidání služby nové, která bude nabízet i přidané segmenty v nové struktuře dokumentu. V dokumentu, který si změnu vyžádal jen zaměníme název služby a všechny ostatní dokumenty necháme klidně netknuté!
Nyní ke konkrétním způsobům vytváření služeb dokumentů podrobněji:
Doplnění cizího segmentu vlastním
Mohou nastat situace, kdy chceme informace převzaté z cizího dokumentu pomocí oblasti doplnit ještě informacemi dalšími, které budeme ukládat v dokumentu místním nebo je budeme přebírat z jiného zdrojového dokumentu.
Můžeme, je-li to zapotřebí, do oblasti s odkazem na službu jiného dokumentu uvést jako potomka prvek nebo oblast prvků s vlastním nebo jiným cizím zdrojem a vytvářet tak potřebné sturktury či složitější propojení.
V takovém případě se struktura přebírané služby uvede za takto přidaného potomka s vlastním či jiným cizím zdrojem.
Ošetření vlastností pomocí služeb
Při přebírání segmentů z cizího dokumentu se vlastnosti přebraných segmentů v novém (cílovém) dokumentu nastavují dle segmentů v tomto cizím dokumentu. Pomocí uvedení ve službě můžeme některé z těchto vlastností upravit. Jedná se o následující vlastnosti:
-
appear-if
-
export-if
-
label
-
descr
-
order
-
repeat
-
style
-
style-of-label
-
style-of-field
Vlastnosti související se zdrojem segmentů (source...) se logicky ze segmentů zdrojového (cizího) dokumentu nepřebírají.
Ošetření bezpečnostních přístupů ve službách
Hledisko přístupu k datům (secrecy-lev a section) může být řešeno zvlášť pro vlastní dokument (v tagu content) a zvlášť pro služby, které nabízí (struktura services). Tím bude například umožněno, že zatímco dokument verze_smlouvy bude přístupný pouze pro právní oddělení, jeho služby mohou být formou read-only poskytnuty personálnímu oddělení pro uzavírání smluv se zaměstnanci formou dokumentu zamestnanec a oblasti smlouva.
Podřízené stránky
Způsoby a syntaxe tvorby služeb dokumentů
Služby dokumentu se umísťují do elementu struktury services, který je sourozencem k elementu struktury area) a na rozdíl od obsahu dokumentu může celou službu tvořit i jediný prvek (tag element).
Možnost použít jen vyjmenované potomky služby
Někdy je výhodné (zejm. u pohledových dokumentů), abychom využili již existující služby zdrojového dokumentu s tím, že nás zajímají jen vybrané potomky. Vlastností použití oblasti služby je automatické vkládání všech potomků z této oblasti služby do cílové oblasti dokumentu, jež pomocí této služby vytváří zdrojové propojení na daný dokument, kde je služba umístěna. V definici máme možnost toto automatické chování vypnout pomocí atributu enumerate-source (vyjmenovat zdroj - resp. potomky cizí oblasti). Standardně při neuvedení tothoto atributu se předpokládá jeho nastavení na hodnotu false. Pokud jej uvedeme s hodnotou true, musíme sice uvést všechny přímé potomky čerpané v rámci oblasti služby, o jejichž zařazení máme zájem, ale máme tak možnost některé potomky služby vynechat. Je-li potomkem opět oblast, je třeba v případě výčtu vlastnost opět nastavit.
Dědění struktury služby z jiné služby
Používáme-li v oblasti dokumentu odkaz na službu jiného dokumentu (a přebíráme tak připravenou strukturu dle služby), zapisujeme v drtivé většině případů jen odkaz na tuto službu bez vyjmenovávání potomků oblasti. Přitom se může stát, že tato oblast bude zapotřebí ve službě tohoto přebírajícího dokumentu k dalšímu přebírání údajů.
Základní zásady pro vytváření služeb
Je důležité si nejprve uvědomit, že službu dokumentu vytváříme až dle potřeb dokumentu jiného, který této služby bude využívat. Postup návrhu by byl tedy takový, že po vytvoření obsahu dokumentu člověk budeme pokračovat dalšími dokumenty, dokud nenarazíme na potřebu propojit některý dokument na již dříve navržený dokument člověk. Pak teprve můžeme v dokumentu člověk vytvořit smysluplnou službu. Uvažujme tedy například dokument nabidka, který bude obsahovat nabídku potenciálnímu zákazníkovi na služby či zboží firmy. Vzhledem k tomu, že naše fiktivní firma poskytuje služby i soukromým osobám, bude muset nabídka být pro adresování a správné zařazení do systému flexideo evidence propojena na dokument clovek, resp. na jeho službu, kterou je nyní třeba vytvořit. Pro účely nabídky (pro její případné zaslání poštou) potřebujeme na její první stránce uvést jméno a adresu člověka, pro kterého je určena. Tím zároveň vytvoříme žádoucí propojení v informačním systému.
Další zásady pro služby
Do oblastí a prvků vytvářených jako služby je třeba uvádět všechny segmenty, které mají být nabídnuty jiným dokumentům. Uvedeme-li prázdnou oblast s představou, že se zde nabídnou všechny prvky dokumentu, pak tomu tak nebude. Pro cizí dokument bude přístupná jen bezcenná prázdná oblast. Do oblasti ve službách však stačí uvést pouze požadované tagy element a area s patřičnými atributy name v takové struktuře v jaké jsou organizovány v dokumentu (má-li být struktura služby jiná než je struktura dokumentu, je třeba sáhnout po atributu take-from). Vždy je třeba vyjmenovat všechny segmenty, které mají být do služby zahrnuty a zpřístupněny tak jiným dokumentům.
Shrnující služba bez odkazu
Zvláštním případem jsou tzv. speciální služby, které jsou tvořeny tagem area a neodpovídají svým identifikačním jménem (name) žádné kmenové oblasti a ani nemají uveden odkaz na některou jinou z oblastí dokumentu pomocí vlastnosti take-from. Pokud se jedná o kmen služby, pak je to možné a vzniká speciální "slučující" služba.