Treci la conținut

Șabloane de fluxuri de lucru

Șabloanele de fluxuri de lucru vă permit să definiți o singură dată structura pașilor și să lansați apoi fluxul de mai multe ori după nume. Sunt utile când același proces cu mai mulți pași trebuie rulat cu date inițiale diferite.

Definirea unui șablon

Folosiți Queuety::define_workflow() pentru a crea șablonul, apoi înregistrați-l:

PHP
use Queuety\Queuety;
use Queuety\Enums\Priority;

$builder = Queuety::define_workflow( 'onboarding' )
    ->on_queue( 'pipelines' )
    ->with_priority( Priority::Normal )
    ->max_attempts( 5 )
    ->then( CreateAccountHandler::class )
    ->then( SendWelcomeEmailHandler::class )
    ->then( NotifyAdminHandler::class );

Queuety::register_workflow_template( $builder );

Înregistrați șabloanele devreme, de exemplu în funcția hook de inițializare a unui plugin:

PHP
add_action( 'init', function () {
    $builder = Queuety::define_workflow( 'onboarding' )
        ->then( CreateAccountHandler::class )
        ->then( SendWelcomeEmailHandler::class )
        ->then( NotifyAdminHandler::class );

    Queuety::register_workflow_template( $builder );
} );

Rularea unui șablon

Lansați un șablon înregistrat după nume folosind Queuety::run_workflow():

PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );

Al doilea argument reprezintă datele/starea inițială, la fel ca ->dispatch() pentru un constructor. Numărul întreg returnat este ID-ul fluxului de lucru.

Dacă șablonul nu este înregistrat, se aruncă o excepție RuntimeException.

Listarea șabloanelor înregistrate

Accesați registrul de șabloane:

PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null

Exemplu complet

PHP
// Register templates on init.
add_action( 'init', function () {
    // User onboarding pipeline
    $onboarding = Queuety::define_workflow( 'onboarding' )
        ->on_queue( 'users' )
        ->then( CreateAccountHandler::class )
        ->then( SetupDefaultsHandler::class )
        ->then( SendWelcomeEmailHandler::class );
    Queuety::register_workflow_template( $onboarding );

    // Content generation pipeline
    $content = Queuety::define_workflow( 'generate_content' )
        ->on_queue( 'llm' )
        ->max_attempts( 5 )
        ->then( BuildPromptHandler::class )
        ->then( CallLLMHandler::class )
        ->then( ReviewOutputHandler::class )
        ->then( PublishHandler::class );
    Queuety::register_workflow_template( $content );
} );

// Dispatch them anywhere in your application.
$wf1 = Queuety::run_workflow( 'onboarding', [ 'email' => 'alice@example.com' ] );
$wf2 = Queuety::run_workflow( 'generate_content', [ 'topic' => 'WordPress performance' ] );

Șabloane și fluxuri de lucru inline

Flux de lucru inline Șablon
Definire La lansare O singură dată, la înregistrare
Lansare Queuety::workflow('name')->then(...)->dispatch() Queuety::run_workflow('name', $payload)
Reutilizare Construiți lanțul de fiecare dată Înregistrați o dată, lansați de mai multe ori
Potrivit pentru Fluxuri de lucru unice sau compuse dinamic Procese standard, repetabile