Детали задачи
-
Ошибка
-
Решение: Нет решения
-
Medium
-
Community 4.0rc6
-
Не заполнено
-
Minor
Описание
На текущий момент переменная в бизнес-процесс может быть добавлена двумя способами:
- объявлением в script-блоке процесса через execution.setVariable()
- неявно через property name компонента формы
Существует случай, когда форма применяется к multi Instance задачам, таким образом количество переменных неявно созданных из property name компонентов формы должно быть равно числу создаваемых сущностей (инстансов), и те в свою очередь должны работать в своих локальных областях видимости во избежание перезаписи.
Однако, работа неявного объявления переменных для multi Instance сейчас работает так: до использования формы в списке процесса переменных нет, а когда они создаются, то по умолчанию применяется глобальная область видимости (https://docs.camunda.org/manual/7.17/user-guide/process-engine/variables/#java-object-api ) , в результате чего происходит впоследствии перезапись этих глобальных переменных разными сущностями multi задачи.
Обходное решение - использование второго доступного способа (script-блок): первым шагом в сущности задаются все необходимые переменные пустыми значениями (то есть хардкод формы) выражением execution.setVariableLocal(), таким образом, когда дело дойдет до взятия значений с формы, то переменные (раздельно для каждой сущности) будут заданы и движком не будут созданы их глобальные версии.
Минусы текущего решения: хардкод, работает только для подпроцессов (нужен script блок внутри отдельной сущности), для простых множественных задач не получится.
ОР: решение в котором автоматически определеяется, что если форма привязана к multi Instance, то переменные создаются локально.
Вложенные файлы
Связи запроса
- blocks
-
ECOSCOM-4666 Migrate modules "meetings-repo"\"meetings-share"
- Готово