Požadavek action
Účel a dopady
Spustí registrovanou transformační/SOAP akci (nastavenou jako služba) přímo v rámci běžného XML požadavku, bez nutnosti volat ji přes samostatné SOAP rozhraní. Konkrétní vedlejší účinky závisí na volané akci samotné (může měnit data, spouštět transformace apod.) – server na této úrovni jen předá volání do interního SOAP dispatcheru.
Dostupnost, kontext, oprávnění apod.
- Dostupné každému přihlášenému uživateli; konkrétní oprávnění k volání dané akce řeší samostatné zpracování SOAP.
- Atribut
run-asumožňuje zavolat akci jménem jiného uživatele (systémová autentizace). Smí jej použít jen uživatel sr_admin, nebo sr_impersonate, pokud smí daného uživatele zastupovat; jinak je požadavek zamítnut. - Je-li aktuální session sama impersonovaná,
run-asnavíc vůbec nelze použít. - Atribut
debugmá efekt jen tehdy, je-li na serveru globálně povolen. - Podléhá standardnímu transakčnímu zpracování obálky
<request>(transactional/přeskočení při odvolané transakci) – viz obálka požadavku.
XML požadavek (syntax + popis)
<request>
<action
name="{string}"
call-type="{string}"
run-as="{number}"
opt-roles="{string}"
debug="{bool}"
>
<{soap-envelope} ... > ... </{soap-envelope}> ?
</action>
</request>
Parametry a pravidla (atributy, potomci)
name- Název akce - Musí odpovídat registru akcí; při soap volání je tento název součástí URL volané služby. (typ: string; nepovinný – chybí-li, požadavek skončí chybouNezname jmeno akce)call-type- Typ spuštění akce - Stává se součástí interní URL cesty volané služby (/{call-type}/{name}, nebo//{name}, není-li uveden). Server hodnotu nevaliduje proti konkrétnímu výčtu; konvenční hodnoty (table/form/service) a jejich význam popisuje schéma run-action. (typ: string; nepovinný)run-as- Volání jménem jiného uživatele - Číslo uživatele, jehož jménem se má akce zavolat; viz omezení v sekci Dostupnost výše. Je-li rovno ID volajícího, žádné zvláštní zpracování se neuplatní. (typ: number; nepovinný)opt-roles- Volitelná role - Přepíše roli použitou při volání SOAP služby. Prázdný řetězec se chová jako neuvedeno. (typ: string; nepovinný; výchozí: role volajícího)debug- Ladicí režim volání - Uplatní se jen je-li zároveň povoleno na serveru; přesná hodnota"true"aktivuje ladicí režim SOAP volání. (typ: bool; nepovinný; výchozí:false)
Potomek: libovolný jeden element (nepovinný), typicky SOAP Envelope ze jmenného prostoru http://schemas.xmlsoap.org/soap/envelope/. Server serializuje celý obsah uzlu action mezi jeho otevírací a uzavírací značku a předává jej jako tělo SOAP volání; chybí-li potomek, tělo volání je prázdné.
Příklady požadavku
(Zatím bez ověřeného příkladu; viz příklad spuštění akce.)
Zpracování a vedlejší účinky
- Sestaví se interní URL
/{call-type}/{name}(nebo//{name}) a volání se předá službě SOAP. - Je-li zadán
run-asodlišný od volajícího, provede se nejprve systémová autentizace cílového uživatele; při neúspěchu nebo nedostatečném oprávnění se požadavek ukončí chybou dřív, než dojde na volání akce samotné. - Otevírací značka odpovědi (
<action type="ok">, nebo<action type="error" detail="Pri provadeni doslo k chybe">) se vytváří až po volání služby SOAP; podle jeho výsledku server rozhodne, zda jde o „ok“, nebo „error“. Obsah odpovědi SOAP (typickyEnvelope/Body/Fault) je vždy vložen mezi tuto otevírací a uzavírací značku</action>, bez ohledu na výsledek.
XML odpověď (syntax + popis)
<response>
<action
type="ok|error"
detail="{string}"
>
<{soap-envelope} ... > ... </{soap-envelope}> ?
</action>
</response>
Příklady odpovědi
(Zatím bez ověřeného příkladu; viz příklad spuštění akce.)
Chyby a reakce
Čtyři chyby vznikají ještě před voláním SOAP dispatche a jsou vždy sebeuzavírající (bez potomků):
type="error" detail="Nemate opravneni volat sluzbu jmenem uzivatele '{run-as}'."–run-asbez potřebného oprávnění zastupovat cílového uživatele.type="error" detail="Neplatny uzivatel '{run-as}'."– autentizace cílového uživatele zrun-asselhala.type="error" detail="Impersonate uzivatel nemuze volat jmenem jineho uzivatele."– volající je sám impersonovaný a zároveň použilrun-as.type="error" detail="Nezname jmeno akce"– chybí atributname.
Dvě další chyby vznikají už při/po volání SOAP dispatche:
type="error" detail="Neznamy zpusob volani."– služba SOAP nerozpoznala cíl volání; odpověď je sebeuzavírající.type="error" detail="Pri provadeni doslo k chybe"– volání SOAP skončilo neúspěchem; uzel není sebeuzavírající – obsahuje cokoli, co služba SOAP do odpovědi stihla zapsat (ne standardní vnořený uzelerror).
Výraz pro identifikaci chyb: action[@type='error'].
Související požadavky
- do-action – totéž volání odloženě nebo opakovaně.
- run-action – popis vnitřního protokolu volaných akcí (obsah předávaný jako tělo SOAP volání).