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

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 graph

Prechá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 null

Kaž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 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.