2013-08-25 3 views
0

Мне нужен рабочий процесс с человеческими задачами, где каждый узел может быть просмотрен в любой момент исполнения.Как реализовать рабочий процесс, управляемый контентом в jBPM/activiti/YAWL?

  /A1 -- B1 \ 
     /   \ 
Start - AND   AND - End 
     \   /
      \ A1 --- B2/ 

Таким образом, даже если текущее исполнение на уровне B2, пользователь может перейти к A1 (предполагая, что A1 присваивается одному и тому же пользователю, и это уже сделано).

Как я могу моделировать это поведение в jBPM/Activiti - так как задача после завершения удаляется из цепочки выполнения?

Есть ли какой-нибудь другой механизм документооборота, который позволяет мне это делать?

ответ

1

Я боюсь, что этого трудно достичь, потому что BPMN намеренно без гражданства.

Предположим, вы находитесь в End и хотите вернуться на A1. Это означает, что токен как-то телепортируется в A1, перетекает в B1, ко второму AND и ... мы застряли здесь. Насколько я понимаю, AND означает параллельный шлюз BPMN. И это не позволяет нам идти дальше, потому что ему нужно два входных токена сразу, чтобы создать выходной токен.

Возможно, вы можете адаптировать другой подход, называемый машиной конечного состояния. Представьте, что ваш документ (часть содержимого, токен и т. Д.), Который протекает через рабочий процесс, имеет атрибут state, который может быть одним из нескольких значений: Start, A1 и т. Д. Кроме того, у вас есть таблица перехода в следующем формате :

from | to 
---------- 
Start | AND 
AND | A1 
AND | A2 

Таким образом, ваша система знает, что AND следует Start. В этой таблице фактически не указывается классическая машина конечного состояния, так как она определяет нефункциональное отношение; другими словами, любое состояние может выполняться из двух или более состояний, как показано на диаграмме. Это зависит от вас, как реализовать это. Возможно, вы можете создать две копии экземпляра или использовать комбинированный атрибут состояния, который является списком значений.

Но так или иначе, в этом подходе: 1) система знает, как автоматически менять состояния; 2) вы можете создать пользовательский интерфейс, чтобы переключать их вручную.

Выбор библиотек рабочих процессов/состояний, если вы решите использовать их, зависит от вашей платформы, программирования langauge и требований.

+0

Спасибо, что нашли время, чтобы прочитать и ответить. Не могу согласиться с вами больше. Я, наконец, пошел по пути FSM - и разработал и реализовал архитектуру, чтобы позволить мне сделать это. –

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