Základné pojmy
Workflow je graf uložený ako JSON (uzly, hrany, nastavenia), verzovaný v rámci definície. Publikované verzie sú nemenné; každá inštancia beží na verzii, na ktorej začala. Kroky bežia po jednom vo vašom fronte (alebo priamo), čakania sú riadky, plánovač prebúdza časovače a každá zmena stavu prebieha pod zámkami riadkov s prevzatím cez compare-and-set.
| Pojem | Význam |
|---|---|
| Definition | Pomenovaný workflow jedného vlastníka (kľúč je jedinečný v rámci vlastníka) pre jeden typ subjektu (alebo žiadny). Stav draft / active / retired. Ukazuje na aktuálnu verziu. |
| Version | Jedna číslovaná snímka grafu, spúšťača, režimu aktéra a nastavení. draft (upraviteľná, najviac jedna na definíciu) → published (nemenná; najnovšia je aktuálna) → superseded. |
| Instance | Jeden beh jednej verzie pre jeden subjekt (alebo žiadny), spustený jedným spúšťačom. Stav running / waiting / completed / failed / cancelled. Svoje version_id si drží navždy. |
| Node / edge | Vrchol grafu (id, type, config, ui, voliteľne retry a escalations) a orientované spojenie (from, to, voliteľne outcome). |
| Step type | Čo uzol robí: položka katalógu (trieda StepType) s JSON Schema konfigurácie, výsledkami a handlerom. |
| Step run | Jeden pokus jednej návštevy jedného uzla v jednej inštancii — záznam krokov. Ukladá vstup (konfiguráciu uzla s vyhodnotenými odkazmi), výstup, výsledok a chybu. |
| Failure code | Prečo inštancia alebo pokus zlyhal: hodnota FailureCode pre engine, vstavané kroky a prepojenia, alebo vlastný reťazec hostiteľského kroku. |
| Visit | N-tý vstup inštancie do uzla (slučky). Idempotentný kľúč tvorí návšteva a uzol, nie pokus. |
| Wait | Riadok, na ktorý engine reaguje: časovač (due_at), kľúč udalosti, kontrola podmienky, opakovanie alebo časový limit. |
| Escalation | Riadok pre návštevu kroku a úroveň: čas splatnosti + akcie. Zruší sa, keď krok skončí. |
| Signal | Čo obnoví čakanie: timer, event (kľúč + payload), condition, probe, retry, timeout. |
| Party | Osoba alebo skupina, ktorej sa krok týka: schvaľovateľ, príjemca, cieľ eskalácie. |
| Actor | Pod kým verzia beží: system, alebo on_behalf_of používateľa, ktorý ju spustil. |
| Owner | Tenant, ktorému definícia patrí (napr. tím). Null = platí pre celú aplikáciu. |
| Subject | Model, ktorého sa inštancia týka (žiadosť o nákup). Registrovaný pod kľúčom, s deklarovanými poľami. |
| Bridge | Voliteľný kód pre iný balík Roundly, aktívny len vtedy, keď je ten balík nainštalovaný. |
Život inštancie
- Spustí ju spúšťač: start() (ručne), emit() (udalosť), plánovač (plán) alebo webhook route / triggers()->webhook() (webhook). Krok spúšťača sa dokončí okamžite a jeho výstupom je payload spúšťača.
- Engine nasleduje hranu podľa výsledku kroku, vytvorí ďalší krok a odošle ho.
- Krok sa buď dokončí s výsledkom, čaká (časovač, udalosť, podmienka), alebo zlyhá (opakovateľne alebo natrvalo).
- Čakajúci krok pokračuje, keď jeho čakanie nastane; medzitým môže nastať eskalácia.
- Dosiahnutím uzla end sa inštancia dokončí (alebo zlyhá).
Každá zmena prebieha pod zámkom riadka inštancie, potom kroku a potom čakania alebo eskalácie. Naraz beží vždy len jeden krok inštancie.
Práve raz a aspoň raz
- Zmeny stavu prebehnú práve raz: prevzatia sú compare-and-set, výsledky strateného lease sa zahodia a čakanie nastane raz.
- Handlery bežia aspoň raz: po páde alebo opakovaní môže handler bežať znova, vždy s rovnakým idempotencyKey() pre tú istú návštevu. $context->once() zaručí, že sa databázový efekt vykoná práve raz.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.