Siirry sisältöön

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