Ga naar de inhoud

Workflowtemplates

Met workflowtemplates definieer je de stappenstructuur van een workflow één keer en start je die vervolgens meerdere keren op naam. Dit is handig wanneer hetzelfde proces met meerdere stappen met verschillende payloads moet worden uitgevoerd.

Een template definiëren

Gebruik Queuety::define_workflow() om de template op te bouwen en registreer deze vervolgens:

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

Registreer templates vroeg, bijvoorbeeld in een initialisatiehook van een 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 );
} );

Een template uitvoeren

Start een geregistreerde template op naam met Queuety::run_workflow():

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

Het tweede argument is de initiële payload/status, net als ->dispatch() op een builder. Het geretourneerde gehele getal is de workflow-ID.

Als de template niet is geregistreerd, wordt een RuntimeException gegenereerd.

Geregistreerde templates weergeven

Open het template-register:

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

Volledig voorbeeld

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

Templates versus inline workflows

Inline workflow Template
Definitie Op het moment van starten Eenmalig, bij registratie
Starten Queuety::workflow('name')->then(...)->dispatch() Queuety::run_workflow('name', $payload)
Hergebruik Bouw de keten elke keer opnieuw Eenmalig registreren, meerdere keren starten
Geschikt voor Eenmalige of dynamisch samengestelde workflows Standaardprocessen die herhaald kunnen worden