Multiinstance - detailní popis fungování

Multiinstanční má na rozdíl od běžných úkolů svoji "sadu" proměnných tzv. snapové proměnné. Na následujících příkladech popíšeme pravidla chování v rámci platformy.

Příklady budou demonstrovány na základním WF, kde po splnění prvního úkolu Regular task dojde k aktivaci multiinstančního úkolu Multi-instance-task.

Nastavení multiinstančního úkolu

V rámci definice úkolu je možnost úkol označit jako "multiinstanční". Po nastavení se definuje podle jaké proměnné chceme úkol iterovat => kolik položek je v dané proměnné tolik úkolů se poté vygeneruje.

Pokud tedy v proměnné users následně v procesu zadáme 5 uživatelů, bude úkol vygenerován 5x.

V rámci nastavení řešitele úkolu je v tomto případě potřeba definovat, že se má uživatel brát z iterované proměnné, toto se provedene nastavením iterator(1) do pole Referenční osoba v nastavení úkolu v šabloně.

Nyní když v úkolu Regular task budou v proměnné s názvem users vybráni 2 uživatelé, úkol Multi-instance task se vygeneruje 2x a přidělí se vybraným uživatelům.

Přiřazenén úkoly na případu:

Nastavení a chování proměnných v multiinstančním úkolu

V defaultním nastavení nejsou proměnné nastaveny jako multiinstanční. Je to z důvodu úspory místa v DB. Pokud by všechny proměnné byly nastaveny jako multiinstanční, s každým vygenerovaným úkolem by se všechny museli zapsat do DB aniž by se někdy v budoucnu využily.

Nastavení se provádí na úrovni proměnné pomocí volby Kopírovat do multiinstancí.

Pokud v přiřazení proměnných přidáte proměnné na úkol a není u proměnných zaškrtnuta volba Kopírovat do multiinstancí, tak se proměnné na formuláři nezobrazí!

Chování multiinstančních proměnných na formuláři

V rámci formulářů se multiinstanční proměnné chovají tak, že se globální hodnota vyplněna v běžném úkolu "kopíruje" do multiinstančních úkolů => V době generování multiinstančního úkolu se do snapových proměnných těchto úkolů nastavují proměnné z případu.

Při jednotlivém plnění multiinstančních úkolů dochází k přepisování proměnné na případu viz následující znázornění:

  1. Na začátku obou multiinstančních úkolů jsou v každém úkolu hodnoty pole text stejné jako bylo vyplněno v úkolu Regular task (text = "Global variable - Regular task")
  2. V každém multiinstančním úkolu uživatel upraví hodnotu pole text.
  3. Multiinstanční úkol Task 1 se splní jako první, v ten moment se do globální proměnné na případu zapíše hodnota "Global variable - Regular task - edit 1".
  4. Multiinstanční úkol Task 2 se splní jako druhý, v ten moment se do globální proměnné na případu zapíše hodnota "Global variable - Regular task - edit 2".
  5. Výsledkem tedy bude, že po splnění obou úkolů bude v případu vyplněna hodnota z úkolu, který se splnil jako poslední.

Chování multiinstančních proměnných ve výpočtech

V rámci výpočtů na multiinstančním úkolu se používá jiný zápis pro práci s proměnnou. Běžná proměnná se čte pomocí vars['text'].getValue() a zápis se provádí pomocí vars['text'].setValue().

U multiinstančních proměnných na multiinstančním úkolu se používají snaps, proto zápis je snaps['text'].getValue() a snaps['text'].setValue()

Ukázka chování na základním výpočtu:

Regular task má nastaveno na konci úkolu výpočet vars['text'].setValue('Global variable - regular task') => do proměnné text se tedy nastaví hodnota "Global variable - regular task"

Na začátek multiinstančního úkolu Multi-instance task je nastaven výpočet snaps['text'].setValue('Snap variable - task1')

Po splnění Regular task a otevření Multi-instance task uvidí uživatel v úkolu v proměnné text hodnotu "Snap variable - task1" zatímco na případu v proměnných bude hodnota "Global variable - regular task".

Důvod proč se toto používá se nejlépe demonstruje na paralelním schvalování s využitím multiinstančního úkolu:

Frantisek Brych Updated by Frantisek Brych

Multiinstance - obecný popis

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)