Как правильно моделировать параллельное выполнение с тайм-аутом в jbpm?

Мне нужна помощь с jbpm и моделированием с использованием kie-workbench. Мой сценарий:

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

Я должен смоделировать это поведение, используя jbpm, и хотел бы знать лучший подход для этого.

Моей первой идеей было просто использовать для этой цели "подпроцесс нескольких экземпляров". что-то вроде этого

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

Любые предложения о том, как правильно моделировать этот сценарий, используя jbpm?

РЕДАКТИРОВАТЬ:

Я не знаю, считается ли следующее "грязным", но это моя текущая идея (еще не полностью реализованная):

Добавьте переменную процесса "subProcId", на которую узел подпроцесса ссылается как "Called Element". Прямо перед этим узлом я вызываю пользовательскую задачу службы, которая выполняет следующие действия:

  • Используйте RuleFlowProcessFactory для создания определения процесса на основе текущих данных времени выполнения
  • Создайте процесс и загрузите его на сервер выполнения, используя его REST-API.
  • Установите "subProcId", чтобы содержать идентификатор созданного процесса

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

Любые идеи, если это хорошая идея и может действительно работать?

0 ответов

Другие вопросы по тегам