Pāriet uz saturu

Darbplūsmas veidnes

Darbplūsmas veidnes ļauj vienreiz definēt darbplūsmas darbību struktūru un vairākas reizes to palaist pēc nosaukuma. Tas noder, ja viens un tas pats vairāku darbību process jāizpilda ar dažādām datu paketēm.

Veidnes definēšana

Izmantojiet Queuety::define_workflow(), lai izveidotu veidni, un pēc tam reģistrējiet to:

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

Reģistrējiet veidnes savlaicīgi, piemēram, spraudņa inicializācijas āķī:

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

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

Veidnes palaišana

Palaidiet reģistrētu veidni pēc nosaukuma, izmantojot Queuety::run_workflow():

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

Otrais arguments ir sākotnējā datu pakete/stāvoklis, tāpat kā ->dispatch() veidotājā. Atgrieztais veselais skaitlis ir darbplūsmas ID.

Ja veidne nav reģistrēta, tiek izmests RuntimeException.

Reģistrēto veidņu uzskaitījums

Piekļūstiet veidņu reģistram:

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

Pilns piemērs

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

Veidnes un iekļautās darbplūsmas

Iekļautā darbplūsma Veidne
Definēšana Palaišanas laikā Vienreiz, reģistrācijas laikā
Palaišana Queuety::workflow('name')->then(...)->dispatch() Queuety::run_workflow('name', $payload)
Atkārtota izmantošana Veidojiet ķēdi katru reizi Reģistrējiet vienreiz, palaidiet vairākas reizes
Piemērotākais lietojums Vienreizējām vai dinamiski veidotām darbplūsmām Standarta, atkārtojamiem procesiem