Skúšobné behy a história
Skúšobné behy
$result = Workflows::definition('purchase-approval', $team)
->dryRun() // the current version, else the draft; dryRun(3) for v3
->subject($request) // or ->sample(['amount' => '60000', 'requester' => 5])
->input(['reason' => 'laptops'])
->event('purchase_request.submitted', ['amount' => '60000'])
->assume(['legal_cfo' => 'rejected']) // outcomes for steps that can't be simulated
->at(now()->addDay())
->by($user)
->log() // write one workflow_dry_runs row
->run(); // DryRunResult — or ->explore() for every branch (DryRunTree)
$result->nodes(); // the path's node ids
$result->path; // list<DryRunStep{node, type, outcome, assumed, at, input}>
$result->actions; // list<WouldBeAction{node, type, status, description, details}>
$result->endedBy; // end | limit | invalid | not_started
Workflows::versions()->dryRun($graphOrVersion, $definition)->sample([...])->run(); // an unsaved graphPrechádzač overí graf, vyhodnotí spúšťač (vstup, podmienku spúšťača, zhodu vlastníka) a prechádza od spúšťača s virtuálnymi hodinami a počítadlom krokov:
- čisté typy (condition, branch, loop, end) sa skutočne vyhodnotia nad subjektom alebo vzorkou;
- typy s vedľajšími efektmi zavolajú simulate(), ak ho majú (vypíšu sa ich akcie wouldDo()); inak sa uvedú ako would_run a vezmú assume[node], inak svoj prvý povinný výsledok označený ako assumed;
- delay vypočíta čas splatnosti (vrátane pracovného času) a posunie hodiny;
- wait vezme assume[node], inak svoj prvý výsledok; eskalácie sa vypíšu s časmi splatnosti.
reason je jedno z invalid_graph, missing_trigger, owner_mismatch, invalid_input, condition_false, missing_edge. Každý DryRunStep nesie vstup, ktorý by krok videl — jeho konfiguráciu s vyhodnotenými odkazmi, zobrazenú presne ako vstup skutočného behu.
Nič nezapíše. Nespustí sa žiadny handler, neuloží sa žiadny model, neodošle sa žiadny job ani udalosť, odovzdaný subjekt sa naklonuje a všetko prebieha v transakcii, ktorá sa vždy vráti späť. ->log() (alebo dry_run.log = on) po vrátení zapíše jeden riadok workflow_dry_runs — jediný zápis. Vzorka prijme len registrované polia.
Všetky vetvy
->explore() prejde všetky cesty, ktorými sa graf môže uberať: všade, kde bolo treba výsledok predpokladať (krok s vedľajšími efektmi bez simulate(), čakanie), sa rozvetví na každý výsledok, ktorým krok môže skončiť. Je obmedzený na graph.max_nodes prechodov (vetva, na ktorú rozpočet nestačí, ostane listom), nikdy nezapisuje záznam a run() ostáva jednou cestou:
$tree = Workflows::definition('purchase-approval', $team)->dryRun()->subject($request)->explore();
$tree->branchesAt; // 'approve'
array_keys($tree->branches); // ['approved', 'rejected', 'expired']
$tree->paths(); // list<DryRunResult>: every complete path, left to right
$tree->toArray(); // {result, branches_at, branches}História a záznam krokov
Workflows::for($request)->instances(); // newest first, cursor-paginated
Workflows::definition('purchase-approval', $team)->instances(InstanceStatus::Waiting);
Workflows::instances()->find($ulidOrId);
Workflows::instances()->steps($instance); // every attempt, in order (each with its input)
Workflows::instances()->recent(InstanceStatus::Failed, 'purchase-approval', limit: 20);
Workflows::instances()->detail($instance); // loads the step log, pending waits and escalations
$instance->path(); // node ids of the completed steps
$instance->failure(); // FailureCode, a host step's string code, or nullKaždý pokus zaznamená svoj vstup: konfiguráciu uzla s vyhodnotenými odkazmi, modely ako {id, type}, so stropom workflows.steps_input.max_bytes.
Prehľad behov
Jeden zoskupený dopyt spočíta bežiace, čakajúce a zlyhané inštancie verzie podľa aktuálneho uzla — dáta, ktoré editor vykreslí nad grafom:
$overlay = Workflows::versions()->overlay($version); // OverlayReport{version, nodes, total}
$overlay->node('approve')?->waiting; // NodeOverlay{node, running, waiting, failed}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.