Передача переменных в подпроцесс Camunda - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь смоделировать рабочий процесс документа, используя Camunda 7.12. Одно из требований заключается в том, что пользователь может определить срок выполнения для всего процесса, и система должна отправить остаток за пару дней до этого срока.

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

Итак, я определил следующий подпроцесс в модели:

Subprocess

Событие таймера имеет следующие свойства:

Timer event properties

Переменная due_date вводится пользователем в форму при запуске процесс, но я не знаю, как я могу передать его (или если это вообще возможно) в подпроцесс оставшегося.

Есть идеи? Или альтернативы, как это можно сделать?

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

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Я нашел решение, которое не связано с большими изменениями в модели. Просто я установил событие запуска процесса как Asynchronous Before. Теперь событие запуска таймера может получить значение срока выполнения и запустить оставшуюся задачу, как и ожидалось.

Cheers,

0 голосов
/ 21 января 2020

Связанная проблема была исправлена ​​в https://jira.camunda.com/browse/CAM-9303

, и соответствующий модульный тест (https://github.com/camunda/camunda-bpm-platform/blob/33601f3026341882afae321611dfe4e8dfd31d2c/engine/src/test/java/org/camunda/bpm/engine/test/bpmn/event/timer/StartTimerEventTest.java#L1351 -L1446 )

проходит camunda 7.12, а также на @SpringBootTest, который я создал.

Однако, я видел ту же проблему при тестировании вручную с помощью tasklist с использованием этого процесса: https://cawemo.com/share/6bf324bb-4002-490c-8739-7ca94803acc0

Tasklist использует API, который отличается от вызов, используемый в тестах.

Возможные обходные пути, которые я вижу:

a) Wrap API, используемый в тесте runtimeService (). createProcessInstanceByKey (...) с собственным REST обслуживание и запуск через эту конечную точку.

b) Измените модель процесса и переместите процесс во встроенный подпроцесс, затем присоедините к нему промежуточное событие таймера. Это создает переменную до регистрации события. Пример здесь:

https://cawemo.com/share/870694cf-b704-42c2-b0d7-a2637406d356

Новый билет JIRA для этой проблемы в контексте переменных формы был задан здесь c: https://jira.camunda.com/browse/CAM-11357

...