Какую среду рабочего процесса Java можно использовать, чтобы связать ее с графическим интерфейсом - PullRequest
3 голосов
/ 24 февраля 2011

Контекст

Мне нужно создать рабочий процесс разработки (регистрация, проверка, проверка ...).

Для некоторых переходов состояний пользователь должен заполнить отчет.Когда пользователь изменяет состояние объекта O с состояния S1 на состояние S2, он должен заполнить отчет.

  1. Пользователь может отменить отчет, O остается в состоянии S1.
  2. Пользователь может закрыть браузер, O остается в состоянии S1.
  3. Если он проверяет отчет, O переходит в состояние S2.

Я пытаюсь найти структуру, в которой я могу реализовать эти ограничения.

jBPM/ Drools

Я могу реализовать 1 и 3 с «Человеческой задачей» между S1 и S2, но для простого отчета это немного излишне.Для реализации 1 я должен установить двунаправленную связь между S1 и «Человеческим заданием».Я не могу выполнить пункт 2: если пользователь закрывает браузер, O остается в состоянии «Человеческая задача».

Другой способ?

Другим способом было бы иметь внешний файл.Этот файл даст для данного перехода S1-> S2, который должен отображать отчет.

Есть ли другой способ?И какой, по вашему мнению, лучший вариант использования?

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 26 февраля 2011

Я бы сделал это так:

Добавить пользовательский логический атрибут commitState (по умолчанию true) для всех узлов в процессе.

Итак, есть 3 узла: S1 - с commitState = true, Отчет - с commitState = false, S2 - с commitState = true

Когда выполнение переходит к S1 из того, что было раньше, движок фиксирует состояние в БД и показывает пользователю, что находится в S1. Затем пользователь выполняет sth, и выполнение переходит к узлу Report, показывает пользователю экран «SubmitReport», но транзакция БД все еще не зафиксирована.

Когда пользователь закрывает браузер в этот момент, в конце концов происходит тайм-аут сеанса, генерируется исключение и в состоянии db откатывается до S1.

Когда пользователь отменяет отчет, мы также можем выбросить исключение и вернуться к S1, но я предпочитаю, чтобы такие переходы были явными в графе процесса, и просто принимали этот переход.

Когда пользователь отправляет отчет, мы переходим к S2, и состояние фиксируется.

Для этого требуется, чтобы транзакция БД могла удерживаться между отображением экранов пользователю - например, в StatefulBean (в jbpm 3 была некоторая ошибка, когда она использовалась из StatefulBean, я не знаю, возможно ли это в новых версиях jbpm, чтобы сделать это).

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