Когда задача для обработки вручную (human task) запущена, она не завершится до тех пор, пока пользователь не закончит определенный пункт работы. Но что если данный пункт работы больше не требуется? Рассмотрим пример утверждения заказа на поставку. Пусть данный заказ на поставку появляется как определенный пункт работы в чьей-то очереди. Возможна ситуация, когда автор исходной заявки решит, что этот заказ больше не требуется обрабатывать, и отменит заявку. Было бы печально, если бы пункт работы все еще обрабатывался тем, кто утверждает заказы, так как эта работа больше не требуется.
Отмена задачи, обрабатываемой вручную, не так проста, как может показаться. Существует набор интерфейсов API WebSphere Process Server для отмены работы программным способом, но этот способ отмены может требовать сложного программирования. Может быть, есть другой способ?
Информацию об обработке событий см. в разделе Ресурсы в конце статьи.
BPEL и линейные задачи, обрабатываемые вручную
В IBM BPEL компонент задачи пользователя может быть вставлен как линейный. Это показано на диаграмме:
Рисунок 1 показывает, как компонент задачи пользователя линейно вставлен в структуру BPEL
Когда BPEL-процесс, содержащий линейные задачи пользователя, подходит к концу, заканчиваются и все остальные процессы, требующие участия человека. Есть интересный способ воспользоваться этим.
BPEL-процессы могут иметь "события", направленные к ним. Эти события приходят в процесс асинхронно в неопределенный момент времени. В BPEL мы можем назначить "обработчик событий", который будет обрабатывать такие события. Если в обработчике событий будет выполнено действие завершения BPEL, процесс перейдет к корректному, но немедленному завершению. Если при этом имеются незавершенные линейные задачи пользователя, которые надо обработать, они будут автоматически удалены; см. рисунок 2.
Рисунок 2 показывает процесс, который запускает задачу пользователя. Также показан обработчик событий, который при запуске останавливает этот процесс.
Встраивая линейную задачу пользователя в BPEL-процесс и добавляя обработчик событий в этот процесс, мы получаем возможность не только запускать задачу пользователя, но и выполнять отмену задачи.
Результирующий BPEL-процесс появится как компонент на SCA-полотне, и его можно будет подключить тем же способом, как автономную компоненту задачи пользователя, но с добавленной специальной операцией, позволяющей выполнять отмену.
Программа, вызывающая задачу пользователя, будет получать от соответствующего вызывающего действия исключение BPEL времени исполнения, которое может быть перехвачено обработчиком ошибок.
- Примите участие в обсуждении материала на форуме.
-
Оригинал статьи "Tip: Canceling a human task" (En).
-
Статья Обработчики событий в хореографе бизнес-процессов показывает, как использовать хореограф бизнес-процессов в WebSphere Process Server Version 6.0, чтобы сделать процесс более динамичным и реализовать схемы процессов, которые охватывают несколько экземпляров (En).
-
Раздел интеграции бизнеса WebSphere (En).
-
Ищите в специальном книжном магазине книги по этим и другим техническим темам (En).
-
Информационный центр управления бизнес-процессами в WebSphere версии 6 (En).