2015-04-23 3 views
0

Там похожа проблема в Terminate process at any step (jbpm)Прекратить экземпляр процесса в jBPM 6

Точно так же, я хотел бы реализовать возможность прекратить экземпляр процесса в любом задаче (задаче сценария, задачи пользователя, задачи службы). Я могу попытаться добавить шлюз с промежуточным событием catch для каждой отдельной задачи в моем рабочем процессе. Но это кажется неэффективным и заставляет затухать диаграмму bpm.

В Oracle BPM легко иметь событие Message Wait и автоматическую задачу, где я могу сделать this.action=ABORT.

Oracle BPM Terminate

Точно так же в моем процессе jBPM, пользователь будет посылать команду «прекратить» через пользовательский интерфейс, который бы завершить процесс. Однако до завершения процесса этот процесс будет выполнять некоторую пост-обработку (то есть: обновить таблицу db или отправить электронное письмо, чтобы уведомить пользователей о завершении), которые я хотел бы выполнить внутри обработчика настраиваемого рабочего элемента. Пример рабочего процесса хотел бы посмотреть на это. Я знаю, что это не соответствует спецификации bpm, что задача пользователя должна иметь одно входящее и одно исходящее соединение.

Example workflow with termination signal

ответ

1

Я бы рекомендовал использовать в суб-процесса события сигнал, который будет слушать в течение некоторого «Прекратить» сигнала и выполнение сценария завершения, а затем прекратить экземпляр процесса. Вы можете указать это один раз как отдельный раздел на диаграмме (в основном удалить добавленные вами узлы и поместить новый подпроцесс события на кнопку с событием сигнала -> script -> прекратить конечное событие).

+0

Спасибо Крису за предложение. –

Смежные вопросы