Задания (Job)
Определение заданий
Задания определяются и настраиваются с помощью объектов Pimcore\Bundle\GenericExecutionEngineBundle\Model\Job, которые
содержит имя, шаги (каждый шаг — с указанным классом сообщения и опциональной конфигурацией конкретного шага), выбранные элементы и данные окружения (например, содержимое, введённое пользователем, которое должно быть доступно обработчикам шагов задания).
Пример создания задания
$job = new Job(
'my-first-job',
[
new JobStep('Step 1', MyFirstTestMessage::class, '', [], StepSelectionMode::FOR_EACH),
new JobStep('Step 2', MySecondTestMessage::class, '', [], StepSelectionMode::FOR_EACH),
],
[new ElementDescriptor('object', 234)],
[
'foo' => 'bar'
]
);
Выполнение заданий
Выполнение заданий осуществляется через сервис [Pimcore\Bundle\GenericExecutionEngineBundle\Agent\JobExecutionAgentInterface],
который предоставляет методы для запуска и управления выполняющимися заданиями.
Чтобы запустить выполнение задания, используйте метод startJobExecution, который принимает три аргумента:
- Объект Job
- Идентификатор владельца (Owner ID) — необязательный параметр, ID пользователя, которому принадлежит выполнение задания
- Контекст выполнения (Execution context) — необязательный параметр, контекст, в котором должно выполняться задание. Контекст используется, например, для получения домена переводов (по умолчанию admin) для локализованных сообщений.
$jobExecutionAgent->startJobExecution($job, null, 'my-custom-context');
Внимание
Учтите, что движок выполнения не выполняет повторные попытки (retry) для неудачных сообщений.
pimcore_generic_execution_engine:
dsn: 'doctrine://default?queue_name=pimcore_generic_execution_engine'
retry_strategy:
max_retries: 0 # отсутствие повторных попыток, чтобы избежать повреждения данных
Для дополнительной информации о том, как работать с записями выполнения заданий (отмена, остановка и т. п.), смотрите раздел Job Runs.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.