Příloha 2 – Vzorová agenda pro testování API
Pro usnadnění testování API a ukázku, jak využít výše popsané dotazy, byla vytvořena vzorová agenda.
Cílem agendy je prezentovat možnost spouštění zprávou zaslanou přes GQL (buď za uživatele, nebo za externí informační systém), prvek přijetí zprávy a globální proměnné.
Workflow agendy vypadá takto:
Zahájení zprávou
Na prvku Zahájení zprávou probíhá zpracování přijatých dat, ve kterých lze parametrizovat chování agendy. Automaticky dochází k naplnění globálních proměnných zaslanými hodnotami, pokud přijatá zpráva danou globální proměnnou neobsahuje, zůstává v globální proměnné výchozí hodnota (nebo proměnná zůstává prázdná). Pokud příchozí zpráva obsahuje přílohy, je vytvořeno XML pro FAS a tyto přílohy jsou následně zobrazeny ve formuláři. Pokud zpráva přílohy neobsahuje, uživatel je ve formuláři informován.
Příchozí zpráva můžu obsahovat v klíči $.data libovolná data uložená jako string. V tomto případě je ukázáno, jak lze tímto způsobem předat JSON, kterým se parametrizuje chování agendy.
Očekávaný tvar řídícího JSONu je následující:
{
"sofaUserId": "779d1c28-3f72-436c-b5f0-1531fab1b834",
"adIdent": "f1c8b24b-a9cb-4725-aaf3-c2b2dec50378",
"xpath": "/root/neco",
"jsonpath": "klic1",
"defxpath": "/root/element"
}
-
sofaUserId: pokud je vyplněn validní Sofa identifikátor (uživatele/skupiny/role) je tento objekt nastaven jak aktér prvního kroku
-
adIdent: pokud je vyplněn validní AD identifikátor, pod kterým v Sofě je uložen nějaký uživatel, je zjištěn Sofa identifikátor daného uživatele a tento uživatel je nastaven jak aktér prvního krok
-
xpath: pokud je vyplněn, lze tento xpath vyhodnotit nad obsahem globální proměnné globVarXml
-
jsonpath: pokud je vyplněn, lze tento klíč vyhodnotit nad obsahem globální proměnné globVarJson (ve verzi Sofa 4.6.0.89 práce s JSON proměnnými ještě není plně funkční a ladí se)
-
defxpath: pokud je vyplněn, lze tento xpath vyhodnotit nad obsahem globální proměnné globVarXmlDef.
Vyhodnocování aktéra funguje následujícím způsobem:
-
Pokud řídící JSON obsahuje klíč sofaUserId, vyhodnocuje se, jestli je jeho hodnota validní GUID a jestli k ní v Sofě existuje odpovídající objekt. Pokud ano, je tento objekt (uživatel/skupina/role) nastaven jako aktér prvního kroku. Pokud řídící JSON klíč sofaUserId neobsahuje, tento krok se přeskakuje.
-
Pokud řídící JSON obsahuje klíč adIdent a zároveň nebyl nalezen odpovídající objekt ke klíči sofaUserId, vyhodnocuje se, jestli je jeho hodnota validní GUID a jestli k ní v Sofě existuje odpovídající uživatel s tímto AD identifikátorem. Pokud ano, je zjištěn Sofa identifikátor a tento uživatel je nastaven jako aktér prvního kroku. Pokud řídící JSON klíč adIdent neobsahuje, tento krok se přeskakuje. Klíč sofaUserId má tedy v této agendě přednost před klíčem adIdent!
-
Pokud není správně vyhodnocen aktér na základě sofaUserId ani adIdent, používá se jako aktér výchozí hodnota, v tomto případě skupina "Všichni uživatelé".
První krok
V tomto kroku je zobrazen kompletní přijatý JSON, informace o odesílateli zprávy, identifikátor instance, přijatá custom data, přijaté přílohy a obsah všech globálních proměnných.
Hodnoty globálních proměnných lze ve formuláři měnit a vyzkoušet tak správné přenesení hodnot do dalších kroků.
Druhý krok
V tomto kroku jsou zobrazeny hodnoty všech globálních proměnných a je možné jejich hodnoty dále měnit. Slouží k otestování správného přenesení hodnot z minulého a do dalších kroků.
Přijetí zprávy
V tuto chvíli agenda čeká na prvku "Přijetí zprávy", kde setrvá, dokud zprávu neobdrží. Tuto zprávu může zaslat buď ExtIS, nebo uživatel obsazený v roli administrátor. Tato zpráva může obsahovat stejné informace jako zpráva zasílaná při startu (jen již nedochází k vyhodnocení aktéra a nevyhodnocuje se xpath/json path). Je ale možné tedy zaslat agendě nové přílohy (budou zobrazeny v kroku 3 v samostatném přílohovém poli) a hlavně je možné zasílat hodnoty globálních proměnných. Tyto přijaté hodnoty budou zobrazeny ve třetím kroku.