Как контролировать пользовательский интерфейс (например, Vaadin) через «камунду» или «текучие» BPM? - PullRequest
1 голос
/ 15 апреля 2019

Hello!

У меня проблема с Камуандой или Текучим BPMS. Мне нужно изменить свой интерфейс в зависимости от бизнес-процесса.

Например:

  1. У меня есть процесс A (пользовательская задача) и камунда (текучая) должна генерировать форму в Vaadin. Затем он должен дождаться активности пользователя и продолжить ... (или камунде нужно просто вызвать форму vaadin, дождаться окончания обработки в бэкэнде и получить какой-то ответ)
  2. Если у меня есть другой процесс, камунда должна сгенерировать другую форму и т. Д.

Имеет ли этот подход смысл? Или было бы более целесообразно использовать bpms, такие как camunda, для использования только для бизнес-процессов (не для пользовательского интерфейса)?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Я нашел какое-то решение. Просто используйте «FormKey» на стороне Камунды. А в приложении Vaadin создайте FormFactory (шаблон метода Factory), который возвращает нужную форму по идентификатору.

public CustomForm getForm(Task task) {
   String formKey = task.getFormKey();

   if(formKey.equalsIgnoreCase("formId1") {
      return new Form1(...);
   }


etc

Такой подход позволит вам использовать дополнительные кнопки, пользовательские формы и так далее.

0 голосов
/ 16 апреля 2019

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

При этом механизмы процессов обычно не очень хорошо подходят для "волшебников", таких как потоки пользовательского интерфейса. Движок обрабатывает «TaskA» как одну задачу, сохраняет ее, а затем создает в списке задач неподписанную «TaskB», которая затем может быть снова востребована и обработана пользователем (необязательно тем же пользователем).

Однако, если вы хотите придерживаться своего подхода, взгляните на шаблон UI Mediator , который является поведенческим шаблоном, скрывающим основное асинхронное продолжение от пользователя «мастера».

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

...