Nastavení kroku transformace

Nastavení kroku transformace jsou dostupné pomocí tlačítka "Upravit..." pod seznamem kroků v hlavním okně transformací. Po jeho zvolení se zobrazí následující dialog.

Pod názvem kroku najdeme základní volbu typu tohoto kroku, tedy zda jde o "zadávací krok". Pokud je zvoleno, název i poznámky ve spodní části jsou zobrazeny uživateli a je požadováno zadání vstupních údajů nastaveného typu. Není-li volba zvolena, jde o běžný transformační krok. Je však možné do jednoho kroku zahrnout jak vstup od uživatele, tak také následné provedení transformace a to hned další volbou "obojí". Není-li zvolena první volba a krok tedy obsahuje transformaci, je třeba označit názvem souboru dodanou šablonu, pomocí které se má transformace provést. V našem příkladu jde o šablonu make-save.xsl, kterou jsme popsali v úvodu. Pokud transformace obsažena není, je kolonka pro zadání šablony nedostupná. Pokud krok neobsahuje zadání, jsou nedostupné další dvě kolonky pro zadání QName proměnné a její typ a případné možností. Pokud je ale zadání požadováno, musí být nastaveno QName proměnné a tuto uvést se shodným atributem name v kmenovém uzlu xsl:variable nebo xsl:param a to v tom kroku a jeho šabloně, kde má být zadané proměnné využito. Nezadání této kmenové proměnné šablony není chybou, ale znamená to, že nebude možné ji v šabloně využít. Někdy je to i záměr, neboť proměnné je možné využít i v dotazu, který na vstup generuje XML data jako podklad transformace. Vedle volby typu proměnné, je možné navolit i možnosti. Pokud tak učiníte prostřednictvím pomocného dialogového okna, bude vstupní dialog obsahovat roletku s vámi definovanými možnostmi pro výběr uživatelem.

Pokud jde o transformační krok, pak je třeba nastavit vstupní XML transformace, tedy to na co bude dodaná šablona aplikována - viz. volba nalevo ve střední části okna. Vstupů může být několik s tím, že XML je reprezentováno vždy kmenovým tagem input a jeho potomci korespondují s položkami navolenými v této části - tj. každý přidaný vstup rovná se jednomu kmenovému potomku vstupního XML. Vstupy se přidávají a odebírají tlačítky "Přidat vstup" a "Odebrat vstup" pod seznamem vstupních uzlů. Vstupní XML je možné kombinovat z následujících vstupních možností:

výsledek dotazu - zřejmě nejčastějším je načtení dat pomocí vstupního dotazu; pokud je zvolena, zobrazí se u této možnosti tlačítko "Dotaz", pomocí kterého je zobrazován dialog pro zadání či tvorbu dotazu - viz. popis níže v této sekci;

vstup z předchozího kroku - data, která vstupují do jednoho kroku můžete využít i v krocích dalších; v dalších krocích při této volbě naleznete jako potomka kmenového tagu input rovněž tag input, který ovšem obsahuje data pro vstup předchozí; tato schopnost může být využita na důkladnou kontrolu pomocí generování typu XML-to-text (viz. popis níže) a teprve je-li vše v pořádku, uplatnit na stejná data aplikační záměr v dalším kroku;

výstup z předchozího kroku - "manuální" tvůrce transformačních procesů umožňuje totou volbou další elegantní možnost přípravy vstupních dat finálního kroku; můžete např. pomocí šablony A v předchozím kroku připravit na základě ruzných okolností různý dotaz na vstupní data a výsledek pak bude vstupem pro další krok podobně, jako je vstupem relativně pevně daný dotaz pomocí předchozí volby vstupních informací; můžete také transformační proces rozdělit z hlediska transakčnosti na více sekvencí (požadavky jsou v rámci jednoho kroku zpracovávány transakčně) - můžete tak v kroku A dát uložit jeden balík dokumentů a výsledek např. s novými pdk (opět viz. XML protokol pro ukládání dokumentů a jeho odpovědi) pak použít pro transformaci na vstupní dotaz či jinou operaci v dalších krocích;

pdk XML list z přehledu / dokument - tato volba, která je použita i v našem příkladu, zpřístupňuje pdk-list v jeho XML formě jako jeden z potomků kmenového input (viz. popis pdk-list)

na soubor jméno ... - jako vstup akce je možné použít soubor ve složce site/work (která může být i virtuální); tento soubor musí mít dán předem svůj název a může být povinný či nikoli - určuje volba za kolonkou pro zadání názvu;

Vybraný/é odkaz(y) z proměnné - prozatím nevyužito;

info o aktulálně přihlášeném uživateli - vstupem transformace (a potomkem kmenového input může být i odpověď na dotaz serveru o detailech uživatele, který je momentálně přihlášen, a v rámci kterého se transformace provádí (role a autor uložených změn);


Zadání dotazu pro načtení vstupních dat

Pokud jako vstup zvolíte načtení dat pomocí dotazu, máte možnost zobrazit následující dialog pro zadání vstupního SQL dotazu:

Dotaz je na server aplikován v rámci přípravy vstupních dat transformace a to ve formě odpovídající komunikačnímu protokolu pro přímé SQL dotazy. Výsledek i s obálkou response je pak vložen jako kmenový potomek uzlu input sestavených XML dat vstupujících do transformace jako jeden dokument. Pokud tedy máte na vstupu více dotazů, je třeba jednotlivé výsledky nějak odlišit. Děje se tak pomocí typového názvu, který se v dialogu nastavuje pomocí kolonky "ID název dotazu", kde rovněž doporučujeme používat pravidla pro QName. Ve výstupu je pak soubor dotazem získaných dat odlišen vložením tohoto názvu do atributu type tagu result. Více o podobě odpovědi na dotaz viz. zmíněný popis protokolu.

Vedle názvu dotazu je k dispozici roletka pro vložení seznamu klíčů vybraných položek, id přihlášeného uživatele (=pdk dokumentu uživatele v registru uživatelů) nebo jiné proměnné získané jako vstup od uživatelele do dotazu v rámci jeho přípravy před odesláním a to na místo kurzoru v editovaném dotazu. Vzhledem k tomu, že náš příklad s transformací "Vyhodit do koše" není vázán na konkrétní typ dokumentu, není ani využíván konkrétní dotaz. Kdyby však akce byla navržena pro vyhození do koše pro jeden nebo několik konkrétních typů dokumentů, bylo by možné navrhout jeden nebo několik dotazů, které by mohli vypadat takto:

SELECT pdk as 'pdk', xc_del as 'bin' FROM dbo.table as 'tab' WHERE pdk IN (##pdkList##) AND xc_del = 0

Pomocí takového dotazu se vyberou jen ty položky, které dosud v koši nejsou, zatímco univerzální příklad ukázaný v této časti problém s aktuálním stavem neřeší (ono to ale v důsledku ani ničemu moc nevadí). Podívejme se však na použití proměnné v dotazu. Program na přípravu dotazu před jeho aplikováním totiž projde seznam proměnných a v dotazu je nahradí zadanými hodnotami. V případě pdk-listu, který je uveden výše, je na místo proměnné vložen řetězec s čísli odděelenými čárkami, uvedení závorek je na vás. Pro účely ladění pomocí nástroje replikátoru je však třeba vybrat "ladící množinu" a uložit soubor pdkList.txt s obsahem, který bude mít tuto jednořádkovou formu:

1, 2, 33, 444

Ladící nástroj pak vloží za proměnnou ##pdkList## obsah tohoto souboru. Ve finálním použití na webu či transformačním addOn je pdkList dosazován na základě volby uživatele či jako jediná výchozí položka v podobě stejné, jako je v uvedeném příkladu souboru, vložen do dotazu a odeslán na server pro získání potřebných dat.

Dalším prvkem okna pro dotaz je tlačítko s odkazem na stručného tvůrce SQL dotazů, jehož hlavní předností je snadné získávání databázových jmen pomocí výběru ve struktuře dokumentů, na základě které sestaví dotazy vč. příp. propojení tabulek. Jiným způsobem jak získat výchozí nebo i finální dotaz je využít nastavení přehledu v intranetu, kde je široká škála možností pro tvorbu dotazů napříč celou strukturou databáze. Tento dotaz pak můžete pomocí nástroje XML v horní nástrojové liště pracovní plochy zobrazit v rámci XML entity s nastaveními (hledejte přímého potomka select tagu table a jeho atribut select-string).

Ve zbytku okna je již jen prostor pro samotný dotaz a vložení případných pracovních poznámek, které se nikde jinde neprezentují.


Nastavení kroku transformaceCo je a jak vypadá pdk-list?