Workflow lze skládat z následujících komponent:
StartEvent - tato komponenta musí být na začátku každého workflow
EndEvent - tato komponenta musí být na konci každého workflow
SendTask - tato komponenta odesílá zprávy na kontakty z distribučních listů
Může obsahovat parametry:
priority - může obsahovat hodnoty 1 nebo 2 a určuje na který distribuční list v kampani se budou zprávy odesílat, 1 - primární, 2 - sekundární,
pokud není uvedeno, zprávy se odesílají na obě priority současně
onlyOnShift - pokud obsahuje hodnotu true, odesílá zprávy jen na kontakty, které jsou příhlášené ve směně,
pokud není uvedeno, zprávy se odesílají na všechny kontakty
timeout - může obsahovat hodnotu v sekundách, po uplynutí času je komponenta ukončena,
pokud není uvedeno, komponenta může běžet neomezeně dlouhou dobu
type - pokud obsahuje hodnotu sms, odesílá zprávy vždy typem sms,
pokud není uvedeno, zprávy se odesílají stejným kanálem, jakým byla kampaň spuštěna
message - může obsahovat text, který bude při vytváření odchozí zprávy vložen do proměnné „%in_message%“, tento parametr se použije jen pokud je odchozí blok typu sms, původní zpráva v "%in_message%" z kampaně bude ignorována,
pokud není uvedeno, zůstane v "%in_message%" původní zpráva z kampaně
Do komponenty lze vložit více parametrů oddělených středníkem.
Režimy odesílání zpráv: paralelní – všechny zprávy současně; sekvenční – postupně jednu zprávu za druhou, musí být vytvořena smyčka; není nastaveno - řídí se nastavením kampaně.
ManualTask - tato komponenta provede manuální úkol dle zadaného parametru
Může obsahovat parametry:
setSuccessfullyContacted - pokud obsahuje hodnotu true, nastaví příznak, že kampaň byla úspěšně dokončena, použije se např. ve chvíli, kdy v dané větvi je splněna podmínka, kterou považujeme za cíl kampaně
callHung - pokud obsahuje hodnotu true, vyvolá položení příchozího hovoru, komponenta funguje jen pokud je kampaň spuštěna kanálem IVR, pokud je spuštěná z jiného zdroje, tak komponenta nic nevykoná
Do komponenty lze vložit více parametrů oddělených středníkem.
ConditionalEvent - tato komponenta kontroluje splnění podmínky z předchozího bloku (např. SendTask), je možné přiřadit více podmínek, oddělené středníkem, které se vyhodnocují tak, že pokud je alespoň jedna splněna, pak je komponenta vyhodnocena jako úspěšná, tento blok musí být navázán na komponentu EventGateway, která umožňuje větvení workflow dle na ni navazujících podmínek
Může obsahovat parametry:
source - detekuje kanál, kterým byla kampaň spuštěna, v tuto chvíli může nabývat hodnot ivr nebo sms, případně tyto hodnoty negované !ivr nebo !sms,
pokud obsahuje hodnotu sms a kampaň je spuštěna sms zprávou, vyhodnotí podmínku jako splněnou,
pokud obsahuje hodnotu !sms a kampaň je spuštěna sms zprávou, vyhodnotí podmínku jako nesplněnou
successSend - detekuje kolik musí být minimálně úspěšně doručených zpráv, aby byla podmínka splněna, počítají se pouze ty zprávy, které byly odeslány v rámci předcházejícího kroku,
pokud je předchozí blok sekvenční a tedy odesílá jen jednu zprávu, pak je třeba nastavit kontrolu na hodnotu 1, vyšší číslo způsobí, že podmínka nebude nikdy splněna, hodnota musí být 1 nebo vyšší
noMessage - detekuje že předcházející komponenta, neodeslala žádnou zprávu, což je způsobeno tím, že tam již nejsou žádné další kontakty, obsahuje hodnotu true
callerContacted - detekuje jestli byl v dané kampani úspěšně kontaktován původní žadatel, pokud obsahuje hodnotu true, podmínka hledá odchozí zprávu, kde je jako příjemce číslo původního volajícícho a má jeden ze stavů označující doručení,
test tedy nedetekuje, zda-li byl žadatel při volání přímo spojen s řešitelem, to je třeba detekovat např pomocí "successSend:1"
order - určuje pořadí, prioritu podmínky v rámci jejich vyhodnocování u EventGateway, musí obsahovat hodnoty od 0 do Int. max, čím nižší hodnota, tím vyšší priorita, podmínky bez hodnoty order jsou vyhodnoceny jako poslední v pořadí, jak byly v xml vytvořeny.
Pokud některá podmínka vrací workflow zpět, měla by proběhnout v pořadí jako nejposlednější tak, aby nemohlo dojít k zacyklení. Naopak podmínky detekující chybu je dobré mít v pořadí jako první.
sentFailed - detekuje selhání odesílání zprávy či volání z předcházejcí komponenty, obsahuje hodnotu true
receivedFailed - detekuje chybu na příjmu spouštěcí akce workflow, v případě IVR se jedná o ukončení hovoru volajícím ještě před spojením s řešitelem, obsahuje hodnotu true,
pro další kanály spouštění kampaně není tato funkce definována
campaignStopped - detekuje ukončení kampaně, například stisknutím tlačítka u kampaně, obsahuje hodnotu true (porovnává zda-li je hodnota času Finished starší než aktuální čas)
EventGateway - tato komponenta znázorňuje rozhodování, větvení dle ConditionalEventu
TimerGateway - tato komponenta odpočítává čas, je úspěšně splněna ve chvíli, kdy uběhne odpovídající počet sekund
Může obsahovat parametry:
duration - může obsahovat hodnotu času čekání v sekundách, po uplynutí času je komponenta považována za úspěšnou
order - určuje pořadí, prioritu podmínky v rámci jejich vyhodnocování u EventGateway, musí obsahovat hodnoty od 0 do Int. max, čím nižší hodnota, tím vyšší priorita, podmínky bez hodnoty order jsou vyhodnoceny jako poslední v pořadí, jak byly v xml vytvořeny.
Pokud některá podmínka vrací workflow zpět, měla by proběhnout v pořadí jako nejposlednější tak, aby nemohlo dojít k zacyklení. Naopak podmínky detekující chybu je dobré mít v pořadí jako první.