Задачи

Эта функция доступна исключительно в редакции OpenBPM Control Enterprise.

Раздел Jobs предназначен для просмотра и управления асинхронными задачами движка BPM.

Задача (job) — это внутренний элемент исполнения, который движок создаёт для отложенной или асинхронной работы: срабатывания таймеров, асинхронного выполнения активностей и иных операций, выполняемых в фоне исполнителем задач (Job Executor). Подробное описание механизма приведено в разделе Job Executor.

Управлять задачами можно в трёх местах приложения:

  • на отдельном экране Jobs — по всем задачам движка;

  • на вкладке Jobs в подробном просмотре экземпляра процесса — по задачам конкретного экземпляра;

  • на вкладке Job definitions в подробном просмотре определения процесса — по определениям задач.

Экран Jobs

Экран Jobs доступен как отдельный пункт меню приложения и отображает все задачи подключённого движка BPM, независимо от экземпляра процесса.

jobs screen

Таблица поддерживает сортировку и фильтрацию; для каждой задачи выводится:

  • Id — идентификатор задачи (с возможностью открыть подробный просмотр).

  • Process instance — экземпляр процесса, к которому относится задача.

  • Process — определение процесса и его версия.

  • Creation date — дата и время создания задачи.

  • Due date — срок выполнения (для таймерных задач).

  • Retries — оставшееся количество попыток выполнения (значение 0 означает исчерпание попыток).

  • State — состояние задачи (Active / Suspended).

  • Priority — приоритет задачи.

  • Failed activity — активность, на которой возникла ошибка.

Над таблицей доступны фильтры по типу задач — Executable jobs (готовые к выполнению) и Timers (таймерные). Значения фильтров сохраняются в параметрах запроса URL, поэтому отфильтрованный список можно сохранить в закладку или передать ссылкой.

Загрузка данных экрана выполняется отложенно, как и на других списочных экранах приложения.

Операции на экране Jobs

Операции Retry, Activate и Suspend можно применять сразу к нескольким задачам, отметив их в таблице (массовые операции). Для отдельной задачи доступны действия View (открыть подробный просмотр), Set job priority (изменить приоритет) и Update due date (изменить срок выполнения).

Состояние исполнителя задач

В верхней части экрана располагается панель Job executor state, отражающая текущее состояние исполнителя задач (Job Executor) движка:

Показатель Описание

Active threads

Количество потоков, обрабатывающих готовые к выполнению задачи в данный момент. Дополнительно отображается доля активных потоков относительно размера пула в процентах. Цвет значения зависит от величины: до 50% — зелёный, от 50% до 80% — жёлтый, свыше 80% — красный.

Thread pool size

Максимальное количество потоков, которые могут обрабатывать задачи. Задаётся в свойстве приложения, имя которого зависит от движка: camunda.bpm.job-execution.max-pool-size (Camunda 7), operaton.bpm.job-execution.max-pool-size (Operaton) или openbpm.bpm.job-execution.max-pool-size (OpenBPM Engine). Фактическое значение может меняться в зависимости от нагрузки на движок.

Executable jobs

Количество задач, готовых к выполнению.

Панель Job executor state отображается только при выполнении следующих условий:

  1. На стороне движка BPM и на стороне OpenBPM Control настроен Actuator.

  2. Для движка BPM включены метрики executor.active и executor.pool.size, а также добавлен тег с именем name и значением camundaTaskExecutor (для Camunda 7) или operatonTaskExecutor (для Operaton или OpenBPM Engine).

Вкладка Jobs в экземпляре процесса

Вкладка Jobs доступна на экране подробного просмотра экземпляра процесса (блок Runtime) и отображает задачи выбранного экземпляра.

jobs tab

Для каждой задачи выводятся колонки Job, Failed activity, Create time, Retries, Priority и State; доступны действия Retry, Activate и Suspend.

При нажатии на значение в колонке Failed activity соответствующий элемент подсвечивается на диаграмме экземпляра процесса, что помогает быстро найти место возникновения ошибки.

Операции с задачами

Действие Описание

Retry

Задаёт новое количество попыток выполнения задачи, после чего исполнитель задач сможет повторно её захватить и выполнить. Доступно только для задач, у которых количество попыток равно 0.

Activate

Возобновляет выполнение ранее приостановленной задачи. Доступно только для задач в состоянии Suspended.

Suspend

Приостанавливает выполнение активной задачи. Доступно только для задач в состоянии Active.

Set job priority

Изменяет приоритет выполнения задачи.

Update due date

Изменяет срок выполнения задачи.

Повтор выполнения задачи

Чтобы повторно запустить завершившуюся ошибкой задачу:

  1. Выберите задачу со значением Retries равным 0 и нажмите Retry.

  2. В открывшемся окне укажите количество попыток выполнения в поле Retries (по умолчанию — 1, значение должно быть положительным).

    job retry dialog
  3. Нажмите Retry, чтобы применить новое количество попыток.

Подробный просмотр задачи

Чтобы открыть подробную информацию о задаче, нажмите на её идентификатор или используйте действие View.

job details

Экран содержит подробные сведения о задаче:

  • Job Id — идентификатор задачи с возможностью копирования.

  • Job type — тип задачи, например timer-intermediate-transition (таймерное событие) или async-continuation (асинхронное продолжение). Для поля выводится локализованная всплывающая подсказка с пояснением типа.

  • State — текущее состояние задачи (Active / Suspended).

  • Creation date и Due date — время создания и срок выполнения задачи.

  • Priority — приоритет задачи.

  • Retries — оставшееся количество попыток выполнения.

  • Activity и Failed activity — активность задачи и активность, на которой возникла ошибка.

  • Process — определение процесса; кнопка перехода открывает определение процесса.

  • Process instance — экземпляр процесса; кнопка перехода открывает подробный просмотр экземпляра.

  • Exception message и стектрейс — текст и полный стек вызовов ошибки выполнения.

Для задачи, завершившейся ошибкой (Retries = 0), в полях Exception message и стектрейса отображается причина сбоя, а действие Retry позволяет повторно запустить задачу.

job details failed

Действия в подробном просмотре

В нижней части экрана доступны действия Retry, Activate / Suspend, Copy stacktrace (копировать стек вызовов) и Copy error message (копировать текст ошибки). Кнопка …​ открывает дополнительные действия — Set priority и Update due date.

job actions menu

Изменение приоритета

Действие Set priority позволяет задать новый приоритет выполнения задачи в поле New priority. Приоритет влияет на порядок захвата задач исполнителем задач.

job set priority

Изменение срока выполнения

Действие Update due date изменяет срок выполнения (Due date) задачи. Набор параметров зависит от типа задачи.

Для таймерной задачи доступен выбор операции (Operation):

  • Set — установить срок в указанные пользователем дату и время. При выборе этой операции появляется флажок Update recurring timers; если он установлен, срок также обновляется для повторяющихся таймеров.

  • Recalculate — пересчитать срок средствами движка. При выборе этой операции можно указать исходную дату для пересчёта — текущее время (current time) или время создания задачи (creation time).

job change due date

Для задач, не являющихся таймерными, достаточно указать новые дату и время выполнения без дополнительных параметров.

Для системных задач с типом batch-monitor-job или batch-seed-job дополнительные действия недоступны — при их выборе выводится предупреждение о том, что это системная задача.

Если к моменту выполнения действия задача уже завершена, выводится соответствующее предупреждение.

Вкладка Job definitions в определении процесса

Вкладка Job definitions доступна на экране подробного просмотра определения процесса и отображает определения задач (Job Definitions) выбранной версии процесса.

job definitions tab

Особенности вкладки:

  • данные обновляются при смене выбранной версии определения процесса;

  • при нажатии на значение в колонке Activity соответствующий элемент подсвечивается на диаграмме процесса;

  • для определения задачи доступны действия активации и приостановки (в зависимости от текущего состояния), а также изменение переопределяющего приоритета (overriding priority).