Příklad na úvod

Než se pustíme do popisu, ukážeme si stručně, jak definice vypadá. Nenechte se odradit XML zápisem definice, součastí systému flexideo je i nástroj XDS designer, který vás od zápisu v XML oprostí. Na místo příkladu tedy můžete rovnou postoupit dále k základním pojmům a postupům definice.

V následujícím příkladu je reálná definice subjketu, který je zde chápán jako dokument pro evidenci firem a dalších typů subjektů:

<DocumentDef>
<label>Subjekt</label>
<name>subjekt</name>
<group>kontakty</group>
<content>
<area label="Označení" name="oznaceni">
<element label="Obchodní jméno" name="obchodni_jmeno" short="ojm" based-on="kratky_text"/>
<area label="Adresa sídla" name="adresa_sidla" based-on="adresa"/>
</area>
<area label="Provozovna" name="provozovna" repeat="user">
<element label="Označení provozovny" name="oznaceni_provozovny" short="opr" based-on="kratky_text"/>
<area label="Korespondenční adresa" name="korespondencni_adresa" based-on="adresa"/>
<area name="telefon" based-on="telefon" repeat="user"/>
<element label="E-mail" name="email" short="eml" based-on="kratky_text" repeat="user"/>
</area>
<area label="Další údaje" name="dalsi_udaje">
<element label="IČ" name="ic" short="ico" based-on="cislo"/>
<element label="WWW" name="www" short="www" based-on="kratky_text"/>
</area>
<area label="Zařazení subjektu" name="zarazeni_subjektu">
<element label="Je subjekt zákazníkem" name="je_subjekt_zakaznikem" short="jezak" based-on="volba" initial="false"/>
<area label="Zařazení zákazníka" name="zarazeni_zakaznika" short="zarzak" appear-if="~je_subjekt_zakaznikem == true">
<element name="bonita_zakaznika" based-on="bonita"/>
<element label="Datum zařazení jako zákazníka" name="datum_zarz_zakaznika" short="dtmzrz" based-on="datum" initial="today()"/>
</area>
</area>
</content>
</DocumentDef>

Dokument subjekt je v podstatě evidenční kartou kontaktu typu firma, úřad, podnikatel atd. Stejně tak bychom mohli ještě mít jeden dokument osoba pro evidenci privátních osob nebo naopak mít jen jeden univerzální dokument kontakt a rozlišovat jej typologicky a osobu a subjekt definovat jen jako pohledové typy (což je ostatně i doporučovaný postup, ale vždy záleží na představě a potřebě konkrétního využití). Uvedený dokument má několik hlavních oblastí, kde první obsahuje název subjektu, další pak jeho provozovny a další zase zařazení subjektu v evidenci.

Zajímají-li vás významy jednotlivých vlastností (u dokumentu ve formě elementů, v obsahu dokumentu pak ve formě atributů), můžete se podívat na jejich výklad - viz. přehled vlastností.

Pro využití dokumentu subjekt v jiných dokumentech, např. fakturách, dopisech apod. se u tzv. zdrojových dokumentů, jakým je v tomto případě i subjekt definují služby, které nabízené zdrojové struktury popisují. Pak v tagu definice dokumentu DocumentDef za tagem struktury content přibude další struktura v podobě tagu struktury services a definice dokumentu bude vypadat přibližně takto:

<DocumentDef>
<label>Subjekt</label>
...
<content> ... </content>
<services>
<area name="sidlo" take-from="/oznaceni/adresa_sidla" based-on="adresa">
<element name="obchodni_jmeno" order="1" take-from="/-/obchodni_jmeno"/>
</area>
<area name="korespondencni_adresa" take-from="/provozovna/korespondencni_adresa" based-on="adresa">
<element name="obchodni_jmeno" order="1" take-from="/oznaceni/obchodni_jmeno"/>
<element name="oznaceni_provozovny" order="2" take-from="/-/oznaceni_provozovny"/>
</area>
<element name="bonita_subjektu_jako_zakaznika" take-from="/zarazeni_subjektu/zarazeni_zakaznika/bonita_zakaznika"/>
</services>
</DocumentDef>

Pokud vás zajímá, jak je výše uvedený příklad dokumentu subjekt rozkládán do databáze pomocí jiného xml popisující datová pole (DAD), podívejte se na jeho rozklad zde. Pro účely definice jej ale příliš znát nepotřebujete.

Dokument subjekt pak může být využíván v dokumentech jako mohou být např. dopis, e-mail či faktura. Pro příklad si ukážeme právě jednoduchý příklad faktury:

Rozklad dokumentu faktura do databáze pomocí datových polí DAD naleznete zde, opět ale s tím, že pro návrh jej znát nepotřebujete, je to interní mechanismus převodu.

<DocumentDef>
<label>Faktura</label>
<name>faktura</name>
<group>obchod</group>
<content>
<area label="Identifikace faktury" name="identif_faktury" short="idfak">
<element label="Číslo faktury" name="cislo_faktury" short="cifa" based-on="cislo"/>
<element label="Datum vystavení" name="datum_vystaveni" short="dtmvst" based-on="datum"/>
<element label="Datum splatnosti" name="datum_vystaveni" short="dtmspl" based-on="datum"/>
<element label="Datum zdnan. plnění" name="datum_zdan_plneni" short="dtmzp" based-on="datum"/>
</area>
<area label="Odběratel" name="odberatel" short="odb" source="initial:subjekt:/sidlo">
<element label="Bonita odběratele" name="bonita_odberatele" short="bnt" appear-if="input" initial="3" source="::/bonita_subjektu_jako_zakaznika"/>
</area>
<area label="Položky faktury" name="polozky_faktury" short="plzky">
<area name="polozka" short="plzka" repeat="user" source="initial:artikl:/polozka_prodeje"/>
</area>
<area label="Suma faktury" name="suma_faktury" short="smfa">
<element label="Cena celkem bez DPH" name="cena_celkem_bez_dph" short="ccbd" based-on="castka" source="count::sum(/polozky_faktury/polozka/cena_bez_dph)"/>
<element label="DPH celkem" name="dph_celkem" short="dphc" based-on="castka" source="count::sum(/polozky_faktury/polozka/dph)"/>
<element label="Celkem k úhradě" name="celkem_k_uhrade" short="ckuh" based-on="castka" source="count::../cena_celkem_bez_dph + ../dph_celkem"/>
</area>
</content>
<services>
<area name="identifikace_faktury_s_polozkami" descr="slouží pro reklamační protokol">
<element name="cislo_faktury" take-from="/identif_faktury/cislo_faktury"/>
<element name="datum_vystaveni_faktury" take-from="/identif_faktury/datum_vystaveni"/>
<area name="polozky" take-from="/polozky_faktury/polozka">
<element name="kod"/>
<element name="nazev"/>
</area>
</area>
</services>
</DocumentDef>

V oblasti "Odběratel" znázorněného dokumentu faktura je vidět způsob využití dokumentu subjekt pomocí odkazu ve vlastnosti source. Dokument faktura má opět určeny služby v tagu struktury services pro využití v propojení na další typy, např. při reklamace apod.

Významy jednotlivých vlastností (u dokumentu ve formě elementů, v obsahu dokumentu pak ve formě atributů) opět viz. přehled vlastností.

Uplatnění definice

Takto sestavené definice jednotlivých typů dokumentů, které pro svou práci navrhnete, jsou vše co potřebujete udělat pro novou informační strukturu. Vše ostatní se ale za pomoci programu replicator vygeneruje samo díky základnímu principu, na kterém je systém postaven. Více o postupu tvorby najdete zde. Vše je však založeno na dobrém návrhu XDS, proto je třeba věnovat pozonost především pochopení definice, která řeší základní okruhy a její nesprávný návrh může výrazně snížit hlavní přednosti celého konceptu. Způsoby tvorby definice jsou vyloženy v dalších částech této oblasti.