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:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Beállítás | Leírás |
|---|---|
<id> |
Elágaztatandó munkafolyamat-azonosító (kötelező) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Működés
Munkafolyamat elágaztatásakor:
- Az eredeti munkafolyamatsor zárolódik és beolvasásra kerül
- Új munkafolyamatsor jön létre ugyanazzal az állapottal, lépésdefiníciókkal és aktuális lépéssel
- Az új munkafolyamat neve
{original_name}_fork_{timestamp} - Az aktuális lépés feldolgozásra kerül az elágaztatott munkafolyamatban
- Egy
workflow_forkednaplóesemény rögzül mind az eredeti, mind az elágaztatott munkafolyamatban - 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:
// 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:
// 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_idaz új munkafolyamatra mutat - Az elágazásban: a
context.forked_from_workflow_idaz eredetire mutat
A naplók lekérdezésével megkeresheti egy munkafolyamat összes elágazását:
$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.