NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Workflows for Laravel

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.

PojemVýznam
DefinitionPomenovaný 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.
VersionJedna čí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.
InstanceJeden 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 / edgeVrchol 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 runJeden 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 codePrečo inštancia alebo pokus zlyhal: hodnota FailureCode pre engine, vstavané kroky a prepojenia, alebo vlastný reťazec hostiteľského kroku.
VisitN-tý vstup inštancie do uzla (slučky). Idempotentný kľúč tvorí návšteva a uzol, nie pokus.
WaitRiadok, na ktorý engine reaguje: časovač (due_at), kľúč udalosti, kontrola podmienky, opakovanie alebo časový limit.
EscalationRiadok 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.
PartyOsoba alebo skupina, ktorej sa krok týka: schvaľovateľ, príjemca, cieľ eskalácie.
ActorPod kým verzia beží: system, alebo on_behalf_of používateľa, ktorý ju spustil.
OwnerTenant, ktorému definícia patrí (napr. tím). Null = platí pre celú aplikáciu.
SubjectModel, ktorého sa inštancia týka (žiadosť o nákup). Registrovaný pod kľúčom, s deklarovanými poľami.
BridgeVoliteľ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 kryptomien

Odoslaní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.