Zum Inhalt springen

Workflow-Vorlagen

Mit Workflow-Vorlagen definierst du die Schrittstruktur eines Workflows einmal und kannst ihn anschließend mehrmals anhand seines Namens starten. Das ist nützlich, wenn derselbe mehrstufige Prozess mit verschiedenen Nutzlasten ausgeführt werden soll.

Eine Vorlage definieren

Verwende Queuety::define_workflow(), um die Vorlage zu erstellen, und registriere sie anschließend:

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 );

Registriere Vorlagen frühzeitig, zum Beispiel in einem Initialisierungshook eines Plugins:

PHP
add_action( 'init', function () {
    $builder = Queuety::define_workflow( 'onboarding' )
        ->then( CreateAccountHandler::class )
        ->then( SendWelcomeEmailHandler::class )
        ->then( NotifyAdminHandler::class );

    Queuety::register_workflow_template( $builder );
} );

Eine Vorlage ausführen

Starte eine registrierte Vorlage anhand ihres Namens mit Queuety::run_workflow():

PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );

Das zweite Argument ist die initiale Nutzlast bzw. der initiale Zustand, genau wie bei ->dispatch() eines Builders. Die zurückgegebene Ganzzahl ist die Workflow-ID.

Ist die Vorlage nicht registriert, wird ein RuntimeException ausgelöst.

Registrierte Vorlagen auflisten

Rufe die Vorlagenregistrierung auf:

PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null

Vollständiges Beispiel

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' ] );

Vorlagen und Inline-Workflows im Vergleich

Inline-Workflow Vorlage
Definition Beim Starten Einmalig bei der Registrierung
Starten Queuety::workflow('name')->then(...)->dispatch() Queuety::run_workflow('name', $payload)
Wiederverwendung Kette bei jedem Aufruf erstellen Einmal registrieren, beliebig oft starten
Am besten geeignet für Einmalige oder dynamisch zusammengestellte Workflows Standardisierte, wiederholbare Prozesse