#java #activiti #bpmn #camunda #camunda-modeler
#java #activiti #bpmn #camunda #camunda-modeler
Вопрос:
Взгляните на этот процесс —
Когда выполнение поступает на шлюз, который находится там сразу после общего процесса, как я могу определить, выполняется ли выполнение для A
или B
?
Изначально оба A
и B
запускаются параллельно и после завершения будут следовать общему процессу. Могут ли эти два параллельных выполнения иметь разный набор переменных (как внутри, так и вне общего процесса)?
Ответ №1:
Область видимости переменных объясняется в документации здесь:https://docs.camunda.org/manual/latest/user-guide/process-engine/variables /
Вы можете установить переменные в определенную область, например, в отображении данных out или в прослушивателе выполнения, используя сценарий, подобный: execution.setVariable("aVariable", "aValue","aSubProcess");
A и B имеют свою собственную область задач и могут обращаться к области процесса (по умолчанию). У вас может быть разный набор переменных (только) в разных областях. Те, которые вы могли бы создать с помощью подпроцесса или в структуре данных, которую вы переносите в родительскую область (отличающуюся ключом).
Тот факт, что вы не синхронизируете две ветви позже, снова указывает на то, что они могут находиться только в одном определении процесса из-за общего встроенного подпроцесса. Если вы намерены повторно использовать, но с разными областями данных, тогда я бы вместо этого работал с действиями вызова. Они предлагают глобально повторно используемые подпроцессы и имеют свою собственную область данных. Затем вы могли бы также разделить эти параллельные альтернативы на два независимых определения, которые используют только одно и то же действие вызова.
Временные переменные — это вариант, если вы хотите, чтобы данные не были постоянными и действовали только на время выполнения (Camunda).
Пример кажется немного искусственным. Предложения по наилучшему подходу обычно проще при обсуждении конкретных бизнес-процессов.