Darbplūsmas sazarojums
Queuety var sazarot darbojošos darbplūsmu pilnīgi neatkarīgā kopijā. Sazarotā darbplūsma sākas tajā pašā darbībā un ar tādu pašu stāvokli kā sākotnējā darbplūsma, bet pēc tam abas turpinās neatkarīgi. Izmaiņas vienā neietekmē otru.
Darbplūsmas sazarojums
PHP API
Izsauciet Queuety::fork_workflow(), norādot darbplūsmas ID. Tiek atgriezts jaunās darbplūsmas ID:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Opcija | Apraksts |
|---|---|
<id> |
Atzarojamās darbplūsmas ID (obligāts) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Kā tas darbojas
Sazarojot darbplūsmu:
- Sākotnējās darbplūsmas rinda tiek bloķēta un nolasīta
- Tiek ievietota jauna darbplūsmas rinda ar tādu pašu stāvokli, darbību definīcijām un pašreizējo darbību
- Jaunās darbplūsmas nosaukums ir
{original_name}_fork_{timestamp} - Sazarotajai darbplūsmai rindā tiek ievietota pašreizējā darbība
- Gan sākotnējā, gan sazarotajā darbplūsmā tiek reģistrēts
workflow_forkedžurnāla notikums - Sākotnējā darbplūsma turpina darboties kā parasti
Sazarotā darbplūsma ir pilnīgi neatkarīga. Tai ir savs darbplūsmas ID, savas stāvokļa kopijas un savi darbu rindas ieraksti. Pēc sazarojuma katra darbplūsma var brīvi attīstīties atšķirīgi.
Lietojuma gadījumi
Darbību apstrādātāju A/B testēšana
Sazarojiet darbplūsmu, lai pārbaudītu divas dažādas gaidāmās darbības implementācijas:
// 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.)
Analīze “kas būtu, ja”
Sazarojiet darbplūsmu lēmuma pieņemšanas punktā, lai izpētītu dažādus atzarus:
// 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 );
Katrs sazarojums turpinās ar to pašu ievades stāvokli, taču to var mainīt, lai izvēlētos citu ceļu.
Paralēli eksperimenti
Kad darbplūsma sasniedz punktu, kur vēlaties paralēli izmēģināt vairākas pieejas, sazarojiet to katrai pieejai un salīdziniet rezultātus, kad visi sazarojumi ir pabeigti.
Sazarojumu uzskaite
Katras darbplūsmas žurnāla notikumā ir atsauce uz otru darbplūsmu:
- Sākotnējā darbplūsmā:
context.forked_workflow_idnorāda uz jauno darbplūsmu - Sazarotajā darbplūsmā:
context.forked_from_workflow_idnorāda uz sākotnējo darbplūsmu
Vaicājiet žurnālus, lai atrastu visus darbplūsmas sazarojumus:
$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
}
}
Ierobežojumi
- Sazarotā darbplūsma nepārņem sākotnējās darbplūsmas notikumu žurnāla vēsturi. Tai ir jauns, tukšs notikumu žurnāls.
- Darbplūsmas izpildes attiecības netiek dublētas. Ja sākotnējai darbplūsmai bija izpildē esoša darbplūsmas izpilde, sazarotā darbplūsma tās kopiju nesaņem.
- Sazarojums ir pašreizējā stāvokļa momentuzņēmums. Sākotnējās darbplūsmas izpildē esošie darbi netiek dublēti.