2.1.2003
Datové toky
Pro zkratku budu používat následující:
- U: uživatel
- F: formulářník
- P: pošťák (případně jiný druh externí iniciace importu)
- K: kontrolor
- C: centrála
- D: databázista
- E: export/import
Používám model komunikace z předešlého návrhu
Metadata
- sessionID
- verbose
- debug
- workflowID
- workflowIP
- dbID - s jakou databází vlastně pracuji
- dbKEY - ?klíč řádku v databázi, se kterým pracuji (pokud existuje)
- ...
Kanonická struktura formuláře
"form" => [
"formtype" => <identifikace druhu formuláře>
<formkey> => [
"type" => <identifikace typu> # musí stačit k vytvoření INPUT položky v HTML formuláři
"value" => (string) # uživatelem vložená/defaultní hodnota
"state" =>
0 ... nezkontrolovaná nepovinná položka
1 ... nezkontrolovaná povinná položka
2 ... položka prošla kontrolou
3 ... povinná položka, nezadaná hodnota (chyba)
4 ... podezřelá hodnota (uživatel může potvrdit)
5 ... nepovolená hodnota (nelze potvrdit)
"error_text" => (string) # pokud nastala chyba ve vyplnění položky, může
# o ní obsahovat krátký informativní text (komentář)
"suggest" => [ seznam navržených oprav ] # nepovinné, vynechání má stejný
# efekt jako "suggest" => [], tj. nic není navrženo
"suggest_url" => # url stránky, která vygeneruje všechny povolené možnosti;
# nepovinné
"config" => [ konfigurace kontrolního pluginu ] # z předlohy formuláře
]
]
(+ je potřeba do toho dostat okolní texty (header, footer, debug info, ...))
Požadavky zpracované jednotlivými moduly
Formulářník
Nezpracovává žádné vnitřní požadavky; obstarává vstup od uživatele.
Posílá požadavky na C: initF, answer
???D: archiveF - archivace formulářů
Centrála
Zpracovává pouze požadavky od F a P:
- initF - iniciální požadavek, pokud uživatel zahajuje novou session
(otevřel úvodní stránku)
"formtype" => <identifkace druhu formuláře> # pozná podle URL?
odpovídá zasláním předlohy z formuláře
"form" => kanonický tvar formuláře
- answer - uživatel vrátil vyplněný formulář
"form" => kanonický tvar formuláře
odpovídá zasláním okomentovaného/opraveného formulář k potvrzení v případě, že
byl vyplněn chybně; jinak vrací další formulář podle workflow (typu aktualního
formuláře?).
- initP - iniciace dávkového zpracování
???
Kontrola
- test
"form" => ...
Z formuláře v kanonickém tvaru musí K umět zjistit, které kontrolní pluginy
na co použít.
Odpovídá zasláním okomentovaného/opraveného formuláře
"form" => ...
Vyvolává řadu požadavků na D.
Export
Databáze
- archive
"form"
- querytype
"fieldtype" => <identifikace typu položky>
Vrací povolené/známé varianty hodnot pro tuto položku
"variant" => [ ... ] # [pokud je jich rozumně málo
"type" => boolean|int|date|... # známý vestavěný typ
- select
"cols" => [ názvy sloupců k vybrání ] # jediné povinné
"eq" => [ sloupec => hodnota ] # test na rovnost
"neq" => [ ... ] # na nerovnost
"in" => [ sloupec => [ low => .., high = > ... ] ] # příslušnost do intervalu
"tree" => [ preorder strom s "and", "or", "not", ... ]
- auth
???
vrací privilegia uživatele (úroveň zamykání, přístupy k akcím, speciální povolení k přístupu)
- save
"form"
rozlišení opravy starých údajů od vkládání nových
- find
"form" => # nekomplentní formulář
vyhledává a vrací záznam odpovídající údajům z požadavku (v "form"); je-li takových
záznamů více, vrací pouze náhledy (pouze některé položky v poli v "selection").
- lock[123]
"form" (nebo pomocí dbKEY v metadatech)
zamkni (potvrď) záznam jenž jsi (1) vložil (2) zkontroloval jako odpovědný pracovník katedry
(3) zkontroloval jako odpovědný pracovník fakulty
? a je potvrzený na všech nižších úrovních.
- unlock[123]
opak lock - odemkni záznam, který je odemčený na všech vyšších úrovních
- initialize
???
Inicializace databází pro nový sběr dat.