Darbplūsmas veidnes
Darbplūsmas veidnes ļauj vienreiz definēt darbplūsmas darbību struktūru un vairākas reizes to palaist pēc nosaukuma. Tas noder, ja viens un tas pats vairāku darbību process jāizpilda ar dažādām datu paketēm.
Veidnes definēšana
Izmantojiet Queuety::define_workflow(), lai izveidotu veidni, un pēc tam reģistrējiet to:
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 );
Reģistrējiet veidnes savlaicīgi, piemēram, spraudņa inicializācijas āķī:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Veidnes palaišana
Palaidiet reģistrētu veidni pēc nosaukuma, izmantojot Queuety::run_workflow():
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Otrais arguments ir sākotnējā datu pakete/stāvoklis, tāpat kā ->dispatch() veidotājā. Atgrieztais veselais skaitlis ir darbplūsmas ID.
Ja veidne nav reģistrēta, tiek izmests RuntimeException.
Reģistrēto veidņu uzskaitījums
Piekļūstiet veidņu reģistram:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Pilns piemērs
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' ] );
Veidnes un iekļautās darbplūsmas
| Iekļautā darbplūsma | Veidne | |
|---|---|---|
| Definēšana | Palaišanas laikā | Vienreiz, reģistrācijas laikā |
| Palaišana | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Atkārtota izmantošana | Veidojiet ķēdi katru reizi | Reģistrējiet vienreiz, palaidiet vairākas reizes |
| Piemērotākais lietojums | Vienreizējām vai dinamiski veidotām darbplūsmām | Standarta, atkārtojamiem procesiem |