Požadavek do-import
Účel a dopady
Naplánuje importní úlohu, která podle typu dokumentu doc-type načte data (ze souborů v importní složce, nebo z dat přiložených přímo v požadavku) a uloží je do databáze. Požadavek samotný jen zaeviduje úlohu do plánovače (cronu) a vrací se okamžitě – skutečný import proběhne asynchronně v jiném vlákně, případně opakovaně dle repeat. Vedlejší účinky: založení záznamu naplánované úlohy (typicky perzistovaného v databázi), později (při běhu úlohy) zápis importovaných dokumentů a log průběhu.
Dostupnost, kontext, oprávnění apod.
- Vyžaduje aktivovanou vlastnost uživatele
p_import(interně rolir_import) nebop_admin(r_admin). - Nastavit
repeatnebofailsafena jinou hodnotu nežnone/prázdnou vyžaduje navícp_repeat(r_repeat) nebor_admin. - Atribut
run-as(naplánování úlohy ke spuštění pod jiným uživatelem) vyžadujer_admin, nebor_impersonateu volajícího a úspěšné ověření vůči cílovému uživateli. - Server oprávnění ověřuje znovu při každém skutečném spuštění úlohy (i při opakování) – pokud je uživatel mezitím ztratí nebo je smazán, běh selže bez dalšího zásahu klienta.
- Podléhá standardnímu transakčnímu zpracování obálky
<request>(přeskočení/odvolání transakce) – viz obálka požadavku.
XML požadavek (syntax + popis)
<request>
<do-import
validity="{string}"
repeat="{string}"
failsafe="{string}"
sched-from-end="{bool}"
when-off="{bool}"
run-as="{number}"
by-action="{bool}"
db-log="{bool}"
doc-type="{string}"
rel-folder="{string}"
file-mask="{string}"
file-type="{string}"
tran="{number}"
attached-data="{bool}"
>
<column
xds-id="{number}"
/> +
<data
>
<row ... /> *
</data> ?
</do-import>
</request>
Parametry a pravidla (atributy, potomci)
Plánovací atributy sdílené s ostatními do-* požadavky
Základní tvar odpovídá sdílenému typu do-task; ten ale v době revize neuvádí run-as, by-action ani db-log (viz poznámka na konci této stránky). Skutečné chování:
validity- Platnost úlohy - Řídí první spuštění. Rozpoznáváonce,today,stilla výrazy sfrom-{#YYYY-MM-DD HH:MM:SS}/to-{#...}(podřetězcové hledánífrom-/to-, nikoli přesná shoda celé hodnoty). (typ:string; nepovinný; chybí-li, chová se jako okamžité jednorázové spuštění)repeat- Opakování - Syntaxehourly|daily|weekly|monthly|yearly|from-...;to-...;each-nn-jednotka[-xx...];at-hh:mm; podrobná syntaxe viz Nastavení plánovače úloh. Nastavení na cokoliv jiného nežnone/prázdné vyžadujer_repeatnebor_admin, jinak je úloha odmítnuta jako neplatná. (typ:string; nepovinný; výchozí: bez opakování)failsafe- Opakování při chybě - Syntaxe stejné rodiny jakorepeat(bezto-části); stejná privilegovaná podmínka jakorepeat. (typ:string; nepovinný)sched-from-end- Plánování od konce běhu - Interval opakování se počítá od ukončení předchozího běhu, ne od jeho plánovaného startu. (typ:bool; nepovinný; výchozí:false)when-off- Doběhnutí po výpadku - Připadne-li plánovaný běh na dobu, kdy byl server vypnutý, spustí se po jeho obnovení. (typ:bool; nepovinný; výchozí:false)run-as- Zastoupení uživatele - Číslo uživatele, pod jehož identitou se má úloha spustit. Vyžadujer_admin, nebor_impersonatea úspěšný test zastoupení. Neplatná hodnota nebo nedostatečné oprávnění => úloha se vůbec nezaloží. (typ:number; nepovinný)by-action- Založeno akcí - Příznak, že úlohu založila jiná (řetězená) akce; promítá se do atributujob/@by-actionv job-list. Přesný dopad na plánování mimo tento příznak není v této revizi upřesněn. (typ:bool; nepovinný; výchozí:false)db-log- Log úlohy do databáze - Zapíná průběžné ukládání dílčích log zpráv úlohy do databáze nad rámec standardního záznamu při dokončení/selhání. (typ:bool; nepovinný; výchozí:false)
Vlastní atributy do-import
doc-type- Typ dokumentu - Název typu dokumentu definovaného v XDS (malá/velká písmena se nerozlišují); musí odpovídat existujícímu typu, jinak se úloha vůbec nezaloží. (typ:string; nepovinný syntakticky, prakticky nutný)rel-folder- Podsložka importní složky - Volitelná podsložka importní složky dle nastavení serveru. (typ:string; nepovinný)file-mask- Souborová maska - Např.*.csv; podle masky se v importní složce/podsložce hledají soubory k importu. Zároveň se tato hodnota stává názvem úlohy (atributjob/@namev job-list). (typ:string; nepovinný)file-type- Typ importu - Jediná rozpoznávaná hodnota je"csv"(case-insensitive); jakákoli jiná hodnota, včetně chybějící, znamená import XML. (typ:string; nepovinný; výchozí:xml; povolené hodnoty:xml,csv)tran- Transakčnost -1(řádek, bez transakčnosti),2(soubor = transakce),3(všechny soubory = jedna transakce). Je-li atribut uveden a hodnota není1,2ani3, úloha se vůbec nezaloží. (typ:number; nepovinný; výchozí:2)attached-data- Data v požadavku -trueznamená import z přiložených dat (row-import) místo ze souboru; v tom případě je potomekdatapovinný. (typ:bool; nepovinný; výchozí:false)
Uzel column
- Popisuje sloupec, který má být importován, v pořadí odpovídajícím pořadí sloupců v datech. Alespoň jeden
columnje vyžadován – bez něj se úloha vůbec nezaloží. xds-id- Identifikátor segmentu - Musí odpovídat existujícímu poli strukturydoc-type; pole nesmí být typu soubor/obrázek ani vybrané interní referenční pole (ref) doplňkových/systémových tabulek – jinak se úloha vůbec nezaloží. (typ:number; povinný)
Uzel data a row
datase čte pouze je-liattached-data="true"; je-li v tomto případě chybí, nebo obsah nelze rozparsovat (u CSV navíc musí počet sloupců odpovídat počtucolumn), úloha se vůbec nezaloží.row- jeden řádek importovaných dat; přesné pravidlo mapování atributů uzlurowna jednotlivécolumn(podle pořadí, podle názvu apod.) není v tomto rozsahu dokumentováno – otevřený bod.
Příklady požadavku
(Zatím bez ověřeného příkladu; viz ukázky importu.)
Zpracování a vedlejší účinky
- Založení úlohy vyžaduje, aby server měl synchronizovanou strukturu dat; jinak se úloha vůbec nezaloží.
- Vlastní čtení souborů/importních dat probíhá až při skutečném běhu úlohy (asynchronně, případně opakovaně), ne v okamžiku přijetí požadavku – odpověď proto potvrzuje jen zaevidování úlohy, ne výsledek importu.
- Text požadavku (celý uzel
do-importvčetně potomků) se serializuje a ukládá k naplánované úloze v databázi, pokud jde o novou (nikoli znovunačtenou) úlohu.
XML odpověď (syntax + popis)
<response>
<do-import
status="ok|error"
id="{number}"
next-run="{string}"
detail="{string}"
/>
</response>
Kořenový element odpovědi má vždy stejný název jako uzel požadavku (do-import), ne do-task-result – ten je jen typový popis tvaru atributů, viz sdílený typ do-task-result (pozor: tento typ v době revize neuvádí next-run, viz poznámka na konci stránky).
status- Výsledek zaevidování -ok, pokud byla úloha úspěšně založena, jinakerror. (typ:enum; povolené hodnoty:ok,error)id- Id úlohy - Číslo přidělené serverem nové úloze. Přítomno jen přistatus="ok". (typ:number)next-run- Nejbližší spuštění - Čas prvního/nejbližšího běhu ve formátuYYYY-MM-DD HH:MM:SS(místní čas serveru). Přítomno jen přistatus="ok". (typ:datetime)detail- Popis chyby - Přítomno jen přistatus="error". (typ:string)
Příklady odpovědi
(Zatím bez ověřeného příkladu.)
Chyby a reakce
Odpověď je vždy jediný samouzavírající uzel do-import (žádný vnořený error):
status="error" detail="Nemate patricna opravneni"– volající nemár_importanir_admin.status="error" detail="Systemova chyba pri vkladani pozadavku"– jakékoli selhání validace/založení úlohy: neznámý/neexistujícídoc-type, chybějící nebo neplatnýcolumn, nepovolená hodnotatran,attached-data="true"bez platnéhodata, neúspěšný zápis do databáze aj. – všechny tyto různé příčiny vedou ke stejnému obecnému textu.status="skip" detail="Transakce byla preskocena"/status="error" detail="Transakce byla odvolana"– požadavek byl přeskočen/odvolán v rámci transakčního zpracování obálky – viz obálka požadavku.
Související požadavky
- job-list – seznam naplánovaných úloh včetně importů.
- undo – zrušení naplánované/opakované úlohy.
- do-export, do-force-import – další plánované úlohy práce se soubory.