Șabloane de fluxuri de lucru
Șabloanele de fluxuri de lucru vă permit să definiți o singură dată structura pașilor și să lansați apoi fluxul de mai multe ori după nume. Sunt utile când același proces cu mai mulți pași trebuie rulat cu date inițiale diferite.
Definirea unui șablon
Folosiți Queuety::define_workflow() pentru a crea șablonul, apoi înregistrați-l:
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 );
Înregistrați șabloanele devreme, de exemplu în funcția hook de inițializare a unui 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 );
} );
Rularea unui șablon
Lansați un șablon înregistrat după nume folosind Queuety::run_workflow():
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Al doilea argument reprezintă datele/starea inițială, la fel ca ->dispatch() pentru un constructor. Numărul întreg returnat este ID-ul fluxului de lucru.
Dacă șablonul nu este înregistrat, se aruncă o excepție RuntimeException.
Listarea șabloanelor înregistrate
Accesați registrul de șabloane:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Exemplu complet
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' ] );
Șabloane și fluxuri de lucru inline
| Flux de lucru inline | Șablon | |
|---|---|---|
| Definire | La lansare | O singură dată, la înregistrare |
| Lansare | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Reutilizare | Construiți lanțul de fiecare dată | Înregistrați o dată, lansați de mai multe ori |
| Potrivit pentru | Fluxuri de lucru unice sau compuse dinamic | Procese standard, repetabile |