Menu

Editace pipelines

Dušan Rychnovský

Problém:

Konfigurace pipeliny se přes webový frontend provádí v několika krocích. Je potřeba nakonfigurovat samotnou pipelinu,
nakonfigurovat každý transformer, přidat transformery k pipelině a navázat na ně pravidla. Po každém z těchto
mezikroků je potřeba uložit změny do databáze.

Engine před zpracováním každého grafu načítá z databáze aktuální nastavení pipelines. Pokud by začal zpracovávat
graf v době, kdy uživatel přes frontend provedl polovičatou editaci pipeliny, došlo by k aplikaci nesprávně
nakonfigurované pipeliny a tedy by do databáze prošla chybně zpracovaná data.

Skutečnosti:

Očekává se (viz korespondence mezi DR, JM a TK), že vytvoření a drobné úpravy nastavení pipeliny se budou
typicky provádět na začátku - v době, kdy ještě nebudou proudit do DB data na ni navázaná. Pravděpodobnost,
že bude pipelinu nutno editovat později a tedy že se výše zmíněný problém projeví, je malá (nicméně nenulová).

Řešení:

Uživatel v roli POC může vytvářet/upravovat nastavení pipelines bez omezení, pokud ví, že ve frontě ke zpracování
se nenacházejí žádná data ke zpracování přes upravovanou pipelinu. Toto by mělo typicky nastávat.

Pokud uživatel tuto jistotu nemá, může stiskem tlačítka frontu zpracovávaných grafů zamknout. Pokud je fronta
zamčená, engine nemůže začít zpracovávat nový graf. V takovém případě usne a za chvíli znovu otestuje, zda je
fronta zamčená.

Každý uživatel v roli POC má možnost na frontu pověsit nejvýše jeden zámek. Zámek se na frontu pověsí stiskem
tlačítká "Zamknout frontu grafů". Pokud má daný uživatel na frontě pověšený zámek, má místo toho možnost stiskem
tlačítka "Odemknout frontu grafů" svůj zámek odstranit.

Uživatel v roli ADM má možnost stiskem tlačítka všechny existující zámky zlomit.

Engine smí grafy zpracovávat právě když na frontě žádný zámek není.

Technicky by se vytvořila tabulka zámků, kde každý řádek reprezentuje zámek některého uživatele. Tabulka obsahuje
jediný sloupec - userId. Uživatel může zamknout frontu, pokud ještě v této tabulce není řádek s jeho userId.
Pokud už v této tabulce řádek s jeho userId existuje, může místo toho frontu odemknout. Engine vždy před zpracováním
grafu otestuje, zda je tato tabulka prázdná - pokud ano, načte nastavení a zpracuje graf, jinak usne a za chvíli
testuje znovu.

Výhody

  • Relativně nenáročná implementace.
  • Není omezen počet uživatelů, kteří mohou zároveň editovat nastavení pipelines.
  • V typickém případě probíhají úpravy úplně bez omezení (uživatel nebude frontu zamykat).
  • Řeší úpravy nejen pipelines, ale i pravidel.
  • Neznemožní uživateli editovat pipeliny/pravidla založená jinými uživateli.