JBPM процесс синхронизации - PullRequest
       10

JBPM процесс синхронизации

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

Как несколько экземпляров одного и того же процесса могут работать рядом друг с другом, не мешая друг другу?

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

Другими словами, у меня есть два вопроса: 1. Каков наилучший подход к созданию такого механизма синхронизации для имитации многопользовательских параллельных сред с использованием jBPM? 2. Как я могу создать несколько экземпляров процесса изолированным способом? Я пытался играть со стратегиями выполнения. Синглтон, очевидно, не желаемое поведение. Когда я использую экземпляр процесса, другие процессы не запускаются, когда базовый процесс посылает сигналы. То же самое при использовании case в качестве стратегии выполнения.

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

EDIT : Чтобы уточнить некоторые вещи, я добавил скриншоты образца модели The base process Этот первый процесс запускается путем создания экземпляра процесса и его запуска с использованием jBPM business central. Промежуточный сигнал должен запустить подпроцесс, указанный ниже, и затем ждать, пока этот подпроцесс завершит выполнение своих задач.

The subprocess

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

Стратегия singleton runtime приводит к тому, что экземпляры базового процесса запускаются любым завершенным подпроцессом, как и ожидалось, поскольку каждый экземпляр процесса выполняется в одном и том же контексте. per_process_instance , кажется, запускает подпроцесс, но после завершения базовый процесс не получает сигнал, отправленный подпроцессом.

1 Ответ

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

Какую стратегию выполнения вы используете? По умолчанию jBPM использует синглтон-стратегию. Пожалуйста, используйте стратегию выполнения per_process_instance для изоляции между экземплярами процесса.

...