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 |