Darbo eigos šablonai
Darbo eigos šablonai leidžia vieną kartą apibrėžti darbo eigos žingsnių struktūrą ir kelis kartus paleisti ją pagal pavadinimą. Tai naudinga, kai tą patį kelių žingsnių procesą reikia vykdyti su skirtingais duomenų paketais.
Šablono apibrėžimas
Šablonui sukurti naudokite Queuety::define_workflow(), tada jį užregistruokite:
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 );
Užregistruokite šablonus iš anksto, pavyzdžiui, papildinio inicijavimo kabliuke:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Šablono vykdymas
Užregistruotą šabloną pagal pavadinimą paleiskite naudodami Queuety::run_workflow():
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Antrasis argumentas yra pradiniai duomenys / būsena, kaip ir ->dispatch() konstruktoriuje. Grąžinamas sveikasis skaičius yra darbo eigos ID.
Jei šablonas neužregistruotas, išmetama RuntimeException.
Užregistruotų šablonų sąrašas
Pasiekite šablonų registrą:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Išsamus pavyzdys
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' ] );
Šablonai ir tiesioginės darbo eigos
| Tiesioginė darbo eiga | Šablonas | |
|---|---|---|
| Apibrėžimas | Paleidimo metu | Vieną kartą registruojant |
| Paleidimas | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Pakartotinis naudojimas | Kiekvieną kartą sukurkite grandinę | Užregistruokite vieną kartą, paleiskite daug kartų |
| Tinka | Vienkartinėms arba dinamiškai sudaromoms darbo eigoms | Standartiniams, pasikartojantiems procesams |