Töövoomallid
Töövoomallide abil saate määratleda töövoo sammude struktuuri ühe korra ja käivitada seda mitu korda nime järgi. See on kasulik, kui sama mitmest sammust koosnevat protsessi tuleb käivitada erinevate algandmetega.
Malli määratlemine
Kasutage malli koostamiseks Queuety::define_workflow()-i ja seejärel registreerige see:
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 );
Registreerige mallid varakult, näiteks plugina lähtestamise konksus:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Malli käivitamine
Käivitage registreeritud mall nime järgi, kasutades Queuety::run_workflow()-i:
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Teine argument on algsed andmed/olek, nagu koostaja ->dispatch() puhulgi. Tagastatav täisarv on töövoo ID.
Kui mall pole registreeritud, visatakse RuntimeException.
Registreeritud mallide loetlemine
Avage mallide register:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Täielik näide
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' ] );
Mallid ja tekstisisesed töövood
| Tekstisisene töövoog | Mall | |
|---|---|---|
| Määratlemine | Käivitamise ajal | Üks kord registreerimisel |
| Käivitamine | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Taaskasutus | Koostage ahel iga kord | Registreerige üks kord, käivitage mitu korda |
| Sobib kõige paremini | Ühekordsetele või dünaamiliselt koostatud töövoogudele | Tavapärastele, korratavatele protsessidele |