Выполнение задания
Job Runs
Job Run — сущность для хранения информации о выполнениях задания. Для всех операций CRUD с записями Job Run используется репозиторий
[Pimcore\Bundle\GenericExecutionEngineBundle\Repository\JobRunRepositoryInterface].
Локализация текущего сообщения
Текущее сообщение о выполнении задания может быть локализовано, то есть в пользовательском интерфейсе сообщение переводится на язык пользователя. Чтобы упростить работу с такими сообщениями, JobRunRepository предоставляет специализированный метод updateLogLocalized, который помогает сформировать локализованную запись в логе. Метод записывает нетранслированное сообщение в объект Job Run, при этом переводит сообщение на английский и добавляет перевод в лог Job Run, основываясь на контексте выполнения (execution context) данного задания.
Вы можете передать message методу, которое затем можно перевести с помощью меню Translations в Pimcore, выбрав ваш пользовательский домен.
Кроме того, также можно добавить перевод непосредственно в соответствующий your-domain.<language>.yaml файл.
Информация
по умолчанию для перевода используется домен admin. Если вы хотите использовать другой домен, его можно задать в конфигурации pimcore_generic_execution_engine.
Пример использования:
$this->jobRunRepository->updateLogLocalized(
$jobRun, 'pimcore_copilot_job_execution_job_cancelled', ['%job_run_id%' => $jobRun->getId()]
);
Доступ к JobStep в обработчике
Объект JobStep можно получить в обработчике через метод getJobStep. Это полезно, когда в обработчике необходимо обратиться к конфигурации шага.
$jobRun = $this->getJobRun($message);
$steps = $jobRun->getJob()?->getSteps();
if($steps !== null) {
$step = $steps[$jobRun->getCurrentStep()] ?? null;
if($step) {
return $step->getSelectionMode();
}
}
Отмена выполнения задания
Чтобы отменить выполнение задания, используйте метод cancelJobRun интерфейса JobExecutionAgentInterface.
Метод принимает идентификатор Job Run в качестве аргумента:
$jobExecutionAgent->cancelJobRun($jobRun->getId());
Состояние Job Run будет установлено в cancelled, и выполнение задания будет остановлено.
Повторный запуск выполнения задания
Чтобы перезапустить выполнение задания, используйте метод rerunJobRun интерфейса JobExecutionAgentInterface.
$jobExecutionAgent->rerunJobRun($jobRun->getId(), $ownerId);
Состояние Job Run будет установлено в running и выполнение будет перезапущено.
Отмена отдельных шагов выполнения задания
В настоящий момент отменить отдельные шаги выполнения задания нельзя. Пока возможна только отмена всего Job Run целиком.
Состояния Job Run
Доступны следующие состояния выполнения задания:
running- Задание в данный момент выполняется.failed- Выполнение задания завершилось с ошибкой.finished- Выполнение задания успешно завершено.cancelled- Выполнение задания было отменено.finished_with_errors- Выполнение задания завершено, но при выполнении возникли одна или несколько ошибок.
Добавление дополнительных записей в лог
Это удобно, если требуется добавить дополнительную информацию о причинах отмены или ошибок выполнения задания.
$this->jobRunExtractor->logMessageToJobRun(
$jobRun,
'translation_key',
[
'%param1%' => $var1,
'%param2%' => $var2
]
);
Логи ошибок Job Run
Job Run Error Logs — сущность для хранения информации логов об ошибках Job Run. Для всех операций CRUD с такими логами используется репозиторий [Pimcore\Bundle\GenericExecutionEngineBundle\Repository\JobRunErrorLogRepositoryInterface].
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.