Preskoči na vsebino

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