Шаблони робочих процесів
Шаблони робочих процесів дають змогу один раз визначити структуру кроків і запускати її кілька разів за назвою. Це корисно, коли один і той самий багатокроковий процес потрібно виконувати з різними даними.
Визначення шаблону
Скористайтеся Queuety::define_workflow(), щоб створити шаблон, а потім зареєструйте його:
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 );
Реєструйте шаблони заздалегідь, наприклад у хуку ініціалізації плагіна:
PHP
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Запуск шаблону
Запустіть зареєстрований шаблон за назвою за допомогою Queuety::run_workflow():
PHP
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Другий аргумент — початкові дані або стан, як і ->dispatch() у конструкторі. Повертається ціле число — ID робочого процесу.
Якщо шаблон не зареєстровано, виникає RuntimeException.
Перелік зареєстрованих шаблонів
Отримайте доступ до реєстру шаблонів:
PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Повний приклад
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' ] );
Шаблони та вбудовані робочі процеси
| Вбудований робочий процес | Шаблон | |
|---|---|---|
| Визначення | Під час запуску | Один раз під час реєстрації |
| Запуск | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Повторне використання | Щоразу створюйте ланцюжок кроків | Зареєструйте один раз, запускайте багато разів |
| Найкраще підходить для | Разових або динамічно складених робочих процесів | Стандартних процесів, які можна повторювати |