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:
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:
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():
$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:
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Vollständiges Beispiel
// 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 |