Workflow-skabeloner
Workflow-skabeloner lader dig definere et workflows trinstruktur én gang og starte det flere gange efter navn. Det er nyttigt, når den samme proces med flere trin skal køre med forskellige nyttelaster.
Definition af en skabelon
Brug Queuety::define_workflow() til at opbygge skabelonen, og registrer den derefter:
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 );
Registrer skabeloner tidligt, for eksempel i et plugins initialiseringshook:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Kørsel af en skabelon
Start en registreret skabelon efter navn med Queuety::run_workflow():
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Det andet argument er den indledende nyttelast/tilstand, ligesom ->dispatch() på en builder. Det returnerede heltal er workflow-id'et.
Hvis skabelonen ikke er registreret, udløses en RuntimeException.
Visning af registrerede skabeloner
Få adgang til skabelonregistret:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Fuldt eksempel
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' ] );
Skabeloner sammenlignet med inline-workflows
| Inline-workflow | Skabelon | |
|---|---|---|
| Definition | Ved start | Én gang ved registrering |
| Start | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Genbrug | Opbyg kæden hver gang | Registrer én gang, start mange gange |
| Bedst til | Engangsworkflows eller workflows sammensat dynamisk | Standardiserede, gentagelige processer |