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