Liigu sisu juurde

Töövoomallid

Töövoomallide abil saate määratleda töövoo sammude struktuuri ühe korra ja käivitada seda mitu korda nime järgi. See on kasulik, kui sama mitmest sammust koosnevat protsessi tuleb käivitada erinevate algandmetega.

Malli määratlemine

Kasutage malli koostamiseks Queuety::define_workflow()-i ja seejärel registreerige see:

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 );

Registreerige mallid varakult, näiteks plugina lähtestamise konksus:

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

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

Malli käivitamine

Käivitage registreeritud mall nime järgi, kasutades Queuety::run_workflow()-i:

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

Teine argument on algsed andmed/olek, nagu koostaja ->dispatch() puhulgi. Tagastatav täisarv on töövoo ID.

Kui mall pole registreeritud, visatakse RuntimeException.

Registreeritud mallide loetlemine

Avage mallide register:

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

Täielik näide

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' ] );

Mallid ja tekstisisesed töövood

Tekstisisene töövoog Mall
Määratlemine Käivitamise ajal Üks kord registreerimisel
Käivitamine Queuety::workflow('name')->then(...)->dispatch() Queuety::run_workflow('name', $payload)
Taaskasutus Koostage ahel iga kord Registreerige üks kord, käivitage mitu korda
Sobib kõige paremini Ühekordsetele või dünaamiliselt koostatud töövoogudele Tavapärastele, korratavatele protsessidele