Predloge potekov dela
Predloge potekov dela omogočajo, da strukturo korakov poteka dela določite enkrat in jo nato večkrat zaženete po imenu. To je uporabno, kadar je treba isti večstopenjski postopek izvajati z različnimi podatkovnimi nizi.
Določanje predloge
Za sestavo predloge uporabite Queuety::define_workflow(), nato pa jo registrirajte:
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 );
Predloge registrirajte zgodaj, na primer v inicializacijski kljuki vtičnika:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Zagon predloge
Registrirano predlogo zaženite po imenu z Queuety::run_workflow():
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Drugi argument je začetni podatkovni niz/stanje, podobno kot pri ->dispatch() v gradniku. Vrnjena celoštevilska vrednost je ID poteka dela.
Če predloga ni registrirana, se sproži RuntimeException.
Seznam registriranih predlog
Dostopajte do registra predlog:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Celoten primer
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' ] );
Predloge in vgrajeni poteki dela
| Vgrajeni potek dela | Predloga | |
|---|---|---|
| Definicija | Ob zagonu | Enkrat, ob registraciji |
| Zagon | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Ponovna uporaba | Verigo sestavite vsakič | Registrirajte enkrat, zaženite večkrat |
| Najprimernejše za | Enkratne ali dinamično sestavljene poteke dela | Standardne, ponovljive postopke |