Pereiti prie turinio

Darbo eigos šablonai

Darbo eigos šablonai leidžia vieną kartą apibrėžti darbo eigos žingsnių struktūrą ir kelis kartus paleisti ją pagal pavadinimą. Tai naudinga, kai tą patį kelių žingsnių procesą reikia vykdyti su skirtingais duomenų paketais.

Šablono apibrėžimas

Šablonui sukurti naudokite Queuety::define_workflow(), tada jį užregistruokite:

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

Užregistruokite šablonus iš anksto, pavyzdžiui, papildinio inicijavimo kabliuke:

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

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

Šablono vykdymas

Užregistruotą šabloną pagal pavadinimą paleiskite naudodami Queuety::run_workflow():

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

Antrasis argumentas yra pradiniai duomenys / būsena, kaip ir ->dispatch() konstruktoriuje. Grąžinamas sveikasis skaičius yra darbo eigos ID.

Jei šablonas neužregistruotas, išmetama RuntimeException.

Užregistruotų šablonų sąrašas

Pasiekite šablonų registrą:

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

Išsamus pavyzdys

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

Šablonai ir tiesioginės darbo eigos

Tiesioginė darbo eiga Šablonas
Apibrėžimas Paleidimo metu Vieną kartą registruojant
Paleidimas Queuety::workflow('name')->then(...)->dispatch() Queuety::run_workflow('name', $payload)
Pakartotinis naudojimas Kiekvieną kartą sukurkite grandinę Užregistruokite vieną kartą, paleiskite daug kartų
Tinka Vienkartinėms arba dinamiškai sudaromoms darbo eigoms Standartiniams, pasikartojantiems procesams