Вопрос

need to achieve:


Подделка обработки на несколько задач

<fork name="customFork" >
  <transition to="task1" />
  <transition to="task2" />        
  <transition to="task3" />
       ... ... ...
  <transition to="taskN" />         
</fork>

Решение JBPM должно выполнять задачи параллельно, а не то, как это делается по умолчанию, последовательно.

Я прочитал документацию JBPM, которая предлагает использовать async="true" На узлах/задачах, однако неясно, как в яблочко это должно быть реализовано. Одним из предложений было сохранить его в БД и отправить задачи в очередь JMS, чтобы не иметь дело с пользовательским многопоточным управлением. Однако я нашел это слишком странным, что JBPM не имеет простого решения для этого.

Я надеюсь, что кто -то докажет меня здесь не так, и покажет мне простое и элегантное решение с JBPM 3.2.6 Как это последнее, поддерживаемое Red Hat

Спасибо.

Это было полезно?

Решение

Как вы, наверное, заметили, JBPM не имеет параллельных элементов управления для данных экземпляра процесса. Например, переменные процесса не могут быть заблокированы при доступе, и они неявно заблокированы двигателем. Поистине параллельные казни приведут к условиям гонки из -за этого.

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

Вы можете обойти это ограничение, разделяя параллельную рабочую нагрузку от процесса, как вы описали. Вы также можете сохранить его в процессе, создав Java -активность и вручную порождает потоки, хотя это сильно обескуражено. Для начала, вы заблокируете поток JBPM, который выполняет экземпляр, и вы не сможете отслеживать прогресс в вашей параллелизированной рабочей нагрузке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top