Použití XML nastavení

Upravit obsah stránky

V podobě validních celých XML se na Flexideo server posílají k uložení entity jako nastavení (settings). Tato nastavení je možné na server ukládat a pak je opět získávat dle potřeby.
Nastavení je možné třídit a zpřístupňovat dle tří základních vlastností ukládaných do atributů požadavků pro ukládání a získávání nastavení.
    bullet

    type
    - povinný atribut určující typ oblasti nastavení;

    bullet

    user
    - identifikační číslo uživatele (primární klíč dokumentu definovaného jako registr uživatelů);

    bullet

    tb-id
    - identifikační číslo nastavení ...-table, u typů ...-root je ignorováno;


Tyto tři atributy slouží pro identifikaci uložené XML nastavení a pro řízení dostupnosti. Obecně platí, že pokud je při save-setting přidělen atribut uživatele, může k tomuto nastavení přistupovat jen tento uživatel. Pouze uživatel registrovaný jako admin může ukládat a přistupovat k nastavením jiných uživatelů. Pokud tedy běžný uživatel v jakékoli roli uloží nastavení, zejména typu user-root nebo user-table, může k němu přistupovat opět pouze tento uživatel. Atribut tb-id se pak může pro různé uživatele shodovat a přesto jsou ukládána jiná XML (do jiných záznamů). Číslo uživatele tak slouží nejen k omezení přístupu, ale také k identifikaci nastavení.

Typy oblastí @type

Nastavení systému flexideo jsou z důvodů třídění a dostupnosti rozděleny do čtyř základních okruhů nebo oblastí:
  • user - oblast nastavení určená separátně jednotlivým uživatelům, jsou však administrátorsky přístupná;
  • shared - oblast pro možnost sdílení nastavení s dalšími uživateli
  • corporate - společná oblast určená pro interní uživatele a jejich společná nastavení, je základem intranetu;
  • public - veřejná nastavení slouží převážně jako podklad pro přípravu externích přístupů, tedy extranetů;

Tato klíčová slova jsou uváděna v atributu @type a jsou doprovázena specifikací druhu root nebo table:
  • root - kmenová nastavení oblasti;
  • table - dílčí nastavení entity v oblasti;

Zmíněnými entitami mohou být různá XML sloužící např. jako nastavení přehledů a transformačních procesů, datová makra, průvodci činnosmi, záložky a nastavení pracovní plochy uživatele, šablony dokumentů a příp. další data a nastavení. V typu tak mohou, pro určení oblasti a druhu, nastat následující kombinace:
  • user-root - hlavní nastavení uživatele (pouze u oblasti user)
  • user-table - dílčí nastavení uživatele;
  • shared-root - nemá zvláštní opodstatnění;
  • shared-table - dílčí nastavení sdílená více uživateli;
  • corporate-root - společná kmenová nastavení interních uživatelů (prozatím nevyužito);
  • corporate-table - dílčí nastavení společné oblasti
  • public-root - veřejná kmenová nastavení externích uživatelů (prozatím nevyužito);
  • public-table - dílčí nastavení veřejné oblasti

Oblasti shared, corporate a public mohou měnit jen uživatelé registrovaní jako power-user nebo admin viz. dále.

Všimněte si, že jako kmenové uzly platného XML obsahu jsou uzly s názvy user-settings a table-file. Zatímco struktura user-root vč. kmenového tagu obsahu user-settings je pevně dána, obsah dílčích nastavení vč. názvu kmenového tagu závisí na účelu jeho využití. I v případě dílčích nastavení table je ale využívána konvence sjednoceného kmenového tagu table-file, který teprve dále obsahuje potřebný obsah. Je dobré tuto konvenci dodržovat.
Požadavek na získání uživatelských nastavení v předchozím příkladu bude mít tedy následující formu:

Pro nadstavbu comex jsou pak využívány například následující oblasti, které kopírují různé třídy a rozsahy definic:
  • comex.table.data - definice pro získávání dat tabulky (bez jazykových nastavení);
  • comex.table.forms - definice filtrů a dalších formulářů tabulky (bez jazykových nastavení);
  • comex.table.lang.cs - definice jazykových nastavení tabulky pro formuláře, sloupce, nástroje (více rozsahů, jeden jazyk);
  • comex.page - definice stránek, standardně vč. dostupných jazykových nastavení (mixed);
  • comex.table.content - definice složkového obsahu (větve) tabulky - přehled především podtabulek (bez jazykových nastavení);
  • comex.table.lang.cs - definice jazykových nastavení složky (více rozsahů, jeden jazyk);
  • comex.folder.content - definice složkového obsahu (větve) složky (bez jazykových nastavení);
  • comex.folder.lang.cs - definice jazykových nastavení složky (více rozsahů, jeden jazyk);
Vedle povinného type obsahují požadavky též další dva nepovinné identifikační atributy uživatele a čísla dílčího nastavení.

Dělba dle uživatele - @user

Každé nastavení je možné uložit s identifikátorem uživatele pomocí atributu user, kde se uvádí číslo uživatele dle registru uživatelů. Identifikátor uživatele je na rozdíl or určení typu atributem nepovinným. Neuvedení atributu má své důvody a také dopady:
  • není-li uvedeno číslo uživatele vzniká tzv. obecné nastavení ke kterému mají přístup všichni uživatelé (minimálně pro čtení - zápis je závislý na typu oblasti a oprávněních uživatele);
  • není-li uživatel adminem, nemá přístup k nastavením uloženým pod číslo jiného uživatele;
  • je-li vyžadováno neexistující nastavení pod určitým číslem uživatele, je vráceno nastavení obecné, pokud existuje s odpovídajícím typem a příp. číslem tabulky

Tyto principy platí shodně pro všechny typy oblastí. Existují však i logické rozdíly související s uživatelskými přistupy do jednotlivých oblastí:
    bullet

    do shared a user mohou ukládat všichni (jako obecné nebo i pod své číslo uživatele), do corporate a public jen power uživatelé (viz. p_power v mapování uživatele;

  • uživatelé nastavení jako administrátoři jsou jednak zároveň vždy i power uživateli a navíc mohou pracovat i s nastaveními jiných uživatelů - mohou tedy v požadavcích uvádět jiné než svoje číslo uživatele v atributu user;
Dalším nepovinným identifikátorem je číslo nastavení.

Číselný identifikátor nastavení - @tb-id

Každé nastavení druhu ...-table by mělo být vybaveno i číslem, i když to není nezbytně nutné. Toto číslo je určeno k instanční identifikaci nastavení v rámci oblasti a příp. i uživatele. V požadavcích se číselný identifikátor předává pomocí atributu tb-id. V kmenových druzích ...-root je případné uvedení tb-id ignorováno, neboť kmenový druh je pro každou oblast jen jeden (není-li děleno uživatelem).
Pro číselnou identifikaci platí, že není-li při ukládání tb-id uvedeno, je pro získání tohoto nastavení třeba opět požadavku bez této číselné identifikace, tedy bez uvední atributu tb-id. Neuvedení čísla tabulky tedy nemá význam obecného nastavení jako je tomu při neuvedení identifikace uživatele.

Výmaz nastavení

Má-li uživatel k nastavení daného typu a identifikace přístup pro uložení, může také zároveň provést jeho výmaz. Stačí k tomu uvést atribut delete do ukládacího požadavku.
Takže nastavení uložené v předchozím příkladu můžeme opět vymazat následujícícm požadavkem:
<save-settings type="corporate-table" tb-id="1234" delete="true">
...
</save-settings>
Při výmazu nastavení nehraje obsah uzlu save-settings žádnou roli a proto není třeba jej uvádět.

Identifikace chyb

Ve všech používaných oblastech může dojít k požadavku na entitu, která nebyla vložena. Můžeme tak například poslat request s obsahem:
<get-settings type="user-table" user="5" tb-id="99999"/>
Budeme-li předpokládat, že entita s id 99999 nebyla vložena, bude mít odpověď response následující obsah:
<get-settings type="error" setting-type="user-table" tb-id="99999" descr="Neexistuje"/>