Työnkulkumallit
Työnkulkumallien avulla voit määrittää työnkulun vaiherakenteen kerran ja käynnistää sen useita kertoja nimellä. Tästä on hyötyä, kun sama monivaiheinen prosessi on suoritettava eri hyötykuormilla.
Mallin määrittäminen
Rakenna malli kohteen Queuety::define_workflow() avulla ja rekisteröi se sitten:
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 );
Rekisteröi mallit ajoissa, esimerkiksi lisäosan alustusjäsennyksessä:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Mallin suorittaminen
Käynnistä rekisteröity malli nimellä kohteen Queuety::run_workflow() avulla:
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Toinen argumentti on alkuperäinen hyötykuorma/tila, kuten rakentajan kohteessa ->dispatch(). Palautettu kokonaisluku on työnkulun tunnus.
Jos mallia ei ole rekisteröity, heitetään poikkeus RuntimeException.
Rekisteröityjen mallien luettelo
Käytä mallirekisteriä:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Täydellinen esimerkki
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' ] );
Mallit ja upotetut työnkulut
| Upotettu työnkulku | Malli | |
|---|---|---|
| Määrittely | Käynnistettäessä | Kerran rekisteröinnin yhteydessä |
| Käynnistys | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Uudelleenkäyttö | Rakenna ketju joka kerta | Rekisteröi kerran, käynnistä useita kertoja |
| Sopii parhaiten | Kertaluonteisiin tai dynaamisesti koottuihin työnkulkuihin | Vakiomuotoisiin, toistuviin prosesseihin |