Ugrás a tartalomhoz

Munkafolyamat elágaztatása

A Queuety egy futó munkafolyamatból teljesen független másolatot hozhat létre. Az elágaztatott munkafolyamat ugyanattól a lépéstől és ugyanazzal az állapottal indul, mint az eredeti, de ettől kezdve a két munkafolyamat egymástól függetlenül halad tovább. Az egyik módosításai nem érintik a másikat.

Munkafolyamat elágaztatása

PHP API

Hívja meg a Queuety::fork_workflow() elemet a munkafolyamat-azonosítóval. Az új munkafolyamat azonosítóját adja vissza:

PHP
use Queuety\Queuety;

$forked_id = Queuety::fork_workflow( $workflow_id );

CLI

Shell
wp queuety workflow fork <id>
Beállítás Leírás
<id> Elágaztatandó munkafolyamat-azonosító (kötelező)
Shell
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.

Működés

Munkafolyamat elágaztatásakor:

  1. Az eredeti munkafolyamatsor zárolódik és beolvasásra kerül
  2. Új munkafolyamatsor jön létre ugyanazzal az állapottal, lépésdefiníciókkal és aktuális lépéssel
  3. Az új munkafolyamat neve {original_name}_fork_{timestamp}
  4. Az aktuális lépés feldolgozásra kerül az elágaztatott munkafolyamatban
  5. Egy workflow_forked naplóesemény rögzül mind az eredeti, mind az elágaztatott munkafolyamatban
  6. Az eredeti munkafolyamat a megszokott módon folytatja a feldolgozást

Az elágaztatott munkafolyamat teljesen független. Saját munkafolyamat-azonosítója, saját állapotmásolata és saját feladatsor-bejegyzései vannak. Az elágaztatástól kezdve a két munkafolyamat szabadon eltérhet egymástól.

Felhasználási esetek

Lépéskezelők A/B tesztelése

Ágaztasson el egy munkafolyamatot, hogy egy közelgő lépés két különböző megvalósítását tesztelje:

PHP
// Original workflow will use the existing CallLLMHandler (GPT-4).
// Fork it to test with a different handler.
$forked_id = Queuety::fork_workflow( $workflow_id );

// Modify the forked workflow's state to use a different model.
// (Update the state via a custom step or direct DB update.)

Mi lenne, ha? elemzés

Ágaztasson el egy munkafolyamatot egy döntési pontnál, hogy különböző ágakat próbáljon ki:

PHP
// Workflow is at step 3, about to process data.
// Fork it so we can try two different processing strategies.
$fork_a = Queuety::fork_workflow( $workflow_id );
$fork_b = Queuety::fork_workflow( $workflow_id );

Minden elágazás ugyanabból a bemeneti állapotból indul, de módosítható úgy, hogy más útvonalat válasszon.

Párhuzamos kísérletezés

Ha a munkafolyamat olyan ponthoz ér, ahol több megközelítést szeretne párhuzamosan kipróbálni, hozzon létre mindegyikhez elágazást, majd hasonlítsa össze az eredményeket az összes elágazás befejeződése után.

Elágazások követése

Az egyes munkafolyamatok naplóeseménye hivatkozást tartalmaz a másikra:

  • Az eredetiben: a context.forked_workflow_id az új munkafolyamatra mutat
  • Az elágazásban: a context.forked_from_workflow_id az eredetire mutat

A naplók lekérdezésével megkeresheti egy munkafolyamat összes elágazását:

PHP
$logs = Queuety::logger()->for_workflow( $workflow_id );

foreach ( $logs as $entry ) {
    if ( 'workflow_forked' === $entry['event'] ) {
        $context = json_decode( $entry['context'] ?? '{}', true );
        // $context['forked_workflow_id'] is the new workflow
    }
}

Korlátozások

  • Az elágaztatott munkafolyamat nem örökli az eredeti eseménynaplóját. Tiszta eseménynaplóval indul.
  • A munkafolyamat-indítási kapcsolatok nem duplikálódnak. Ha az eredeti munkafolyamatban futott egy munkafolyamat-indítás, annak az elágazás nem kap másolatot.
  • Az elágazás az aktuális állapot pillanatképe. Az eredeti munkafolyamat folyamatban lévő feladatai nem duplikálódnak.