Перейти к основному содержимому

Задания (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, который принимает три аргумента:

  1. Объект Job
  2. Идентификатор владельца (Owner ID) — необязательный параметр, ID пользователя, которому принадлежит выполнение задания
  3. Контекст выполнения (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.


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.