Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi
Plugin Událost před akcí poskytuje mechanismus pro zachycení (intercepci) akcí. Spouští se po odeslání požadavku na vytvoření, aktualizaci nebo odstranění záznamu, ale ještě před jeho zpracováním.
Pokud se ve spuštěném pracovním postupu provede uzel „Ukončit pracovní postup“, nebo pokud selže provedení jiného uzlu (například kvůli chybě nebo jinému nedokončení), bude akce formuláře zachycena. V opačném případě se zamýšlená akce provede normálně.
Ve spojení s uzlem „Zpráva odpovědi“ můžete pro tento pracovní postup nakonfigurovat zprávu, která se vrátí klientovi, a poskytnout mu tak příslušné informace. Události před akcí lze využít pro obchodní validaci nebo logické kontroly, které buď schválí, nebo zachytí požadavky klienta na vytvoření, aktualizaci a odstranění záznamů.
Při vytváření pracovního postupu zvolte typ „Událost před akcí“:

Ve spouštěči zachycujícího pracovního postupu je nejprve nutné nakonfigurovat kolekci, ke které se akce vztahuje:

Poté vyberte režim zachycení. Můžete zvolit, zda se má zachytit pouze tlačítko akce vázané na tento pracovní postup, nebo zda se mají zachytit všechny vybrané akce pro tuto kolekci (bez ohledu na to, z jakého formuláře pocházejí a bez nutnosti vázat odpovídající pracovní postup):

V současné době jsou podporovány typy akcí „Vytvořit“, „Aktualizovat“ a „Odstranit“. Lze vybrat více typů akcí současně.
Pokud jste v konfiguraci spouštěče vybrali režim „Spustit zachycení pouze při odeslání formuláře vázaného na tento pracovní postup“, musíte se také vrátit do rozhraní formuláře a navázat tento pracovní postup na příslušné tlačítko akce:

V konfiguraci navázání pracovního postupu vyberte odpovídající pracovní postup. Obvykle postačí výchozí kontext pro spouštění dat, „Celá data formuláře“:

Tlačítka, která lze navázat na Událost před akcí, v současné době podporují pouze tlačítka „Odeslat“ (nebo „Uložit“), „Aktualizovat data“ a „Odstranit“ ve formulářích pro vytvoření nebo aktualizaci. Tlačítko „Spustit pracovní postup“ není podporováno (lze jej navázat pouze na „Událost po akci“).
V „Události před akcí“ existují dvě podmínky, které způsobí zachycení odpovídající akce:
Po splnění podmínek pro zachycení se odpovídající akce již neprovede. Například pokud je odeslání objednávky zachyceno, nebudou vytvořena odpovídající data objednávky.
V pracovním postupu typu „Událost před akcí“ jsou pro různé akce ve spouštěči k dispozici různá data, která lze použít jako proměnné v rámci postupu:
| Typ akce \ Proměnná | „Operátor“ | „Identifikátor role operátora“ | Parametr akce: „ID“ | Parametr akce: „Odeslaný datový objekt“ |
|---|---|---|---|---|
| Vytvořit záznam | ✓ | ✓ | - | ✓ |
| Aktualizovat záznam | ✓ | ✓ | ✓ | ✓ |
| Odstranit jeden nebo více záznamů | ✓ | ✓ | ✓ | - |
Proměnná „Data spouštěče / Parametry akce / Odeslaný datový objekt“ v Události před akcí nejsou skutečná data z databáze, ale spíše parametry odeslané s akcí. Pokud potřebujete skutečná data z databáze, musíte je v pracovním postupu dotázat pomocí uzlu „Dotaz na data“.
Dále, pro akci odstranění je „ID“ v parametrech akce jednoduchá hodnota, pokud se týká jednoho záznamu, ale je to pole, pokud se týká více záznamů.
Po nakonfigurování spouštěče můžete v pracovním postupu přizpůsobit relevantní logiku rozhodování. Obvykle použijete režim větvení uzlu „Podmínka“, abyste na základě výsledků konkrétních obchodních podmínek rozhodli, zda „Ukončit pracovní postup“, a vrátili přednastavenou „Zprávu odpovědi“:

Tímto je konfigurace odpovídajícího pracovního postupu dokončena. Nyní můžete zkusit odeslat data, která nesplňují podmínky nakonfigurované v uzlu podmínky pracovního postupu, abyste spustili logiku zachycení. Poté uvidíte vrácenou zprávu odpovědi:

Pokud je uzel „Ukončit pracovní postup“ nakonfigurován tak, aby se ukončil se stavem „Úspěch“, a při provedení tohoto uzlu „Ukončit pracovní postup“ bude požadavek na akci stále zachycen, ale vrácená zpráva odpovědi se zobrazí se stavem „Úspěch“ (namísto „Chyba“):

Kombinací výše uvedených základních pokynů si vezměme jako příklad scénář „Odeslání objednávky“. Předpokládejme, že při odeslání objednávky uživatelem potřebujeme zkontrolovat skladové zásoby všech vybraných produktů. Pokud je zásoba kteréhokoli vybraného produktu nedostatečná, odeslání objednávky se zachytí a vrátí se odpovídající zpráva. Pracovní postup bude procházet a kontrolovat každý produkt, dokud nebudou zásoby všech produktů dostatečné, v takovém případě bude pokračovat a vytvoří data objednávky pro uživatele.
Ostatní kroky jsou stejné jako v pokynech. Jelikož však jedna objednávka zahrnuje více produktů, je kromě přidání vztahu mnoho k mnoha „Objednávka“ <-- M:1 -- „Položka objednávky“ -- 1:M --> „Produkt“ v datovém modelu, nutné také přidat uzel „Cyklus“ do pracovního postupu „Událost před akcí“, který se použije k iterativní kontrole, zda je zásoba každého produktu dostatečná:

Objekt pro cyklus je vybrán jako pole „Položka objednávky“ z odeslaných dat objednávky:

Uzel podmínky v rámci cyklu se používá k určení, zda je zásoba aktuálního objektu produktu v cyklu dostatečná:

Ostatní konfigurace jsou stejné jako v základním použití. Když je objednávka nakonec odeslána, pokud má kterýkoli produkt nedostatečné zásoby, odeslání objednávky bude zachyceno a vrátí se odpovídající zpráva. Během testování zkuste odeslat objednávku s více produkty, kde jeden má nedostatečné zásoby a druhý dostatečné. Můžete vidět vrácenou zprávu odpovědi:

Jak můžete vidět, zpráva odpovědi neuvádí, že první produkt „iPhone 15 pro“ je vyprodán, ale pouze to, že druhý produkt „iPhone 14 pro“ má nedostatečné zásoby. Je to proto, že v cyklu má první produkt dostatečné zásoby, takže nebyl zachycen, zatímco druhý produkt měl nedostatečné zásoby, což zachytilo odeslání objednávky.
Událost před akcí je sama o sobě vložena do fáze zpracování požadavku, takže podporuje i spouštění prostřednictvím volání HTTP API.
Pro pracovní postupy, které jsou lokálně navázány na tlačítko akce, je můžete volat takto (například tlačítko pro vytvoření v kolekci posts):
Struktura zprávy, když je „Uzel ukončení“ nakonfigurován pro úspěch, je:
Jelikož lze v pracovním postupu přidat více uzlů „Zpráva odpovědi“, datová struktura vrácené zprávy je pole.
Pokud je Událost před akcí nakonfigurována v globálním režimu, nemusíte při volání HTTP API používat parametr URL triggerWorkflows k určení odpovídajícího pracovního postupu. Spustí se jednoduše voláním odpovídající akce kolekce.
Při spouštění události před akcí prostřednictvím volání HTTP API je také třeba věnovat pozornost stavu povolení pracovního postupu a tomu, zda konfigurace kolekce odpovídá, jinak se volání nemusí podařit nebo může dojít k chybě.