Можно ли обновить экземпляр запущенного процесса с помощью Fluent API в камунде?
Я пытаюсь внести некоторые изменения во время выполнения процесса с помощью Fluent API. Можно ли обновить работающий экземпляр?
Пример: если я хочу добавить новое событие между существующими событиями (пользовательская задача, служебная задача, ...) и запустить новое добавленное событие. Есть ли способ добиться этого?
1 ответ
Вы можете сделать это следующим образом:
- Создайте новую версию процесса и разверните ее.
- Перенесите экземпляр процесса в эту версию.
Пример минимального кода для шага 2:
RuntimeService runtimeService = ..;
ProcessInstance processInstance = ..;
ProcessDefinition oldDefinition = ..;
ProcessDefinition newDefinition = ..;
MigrationPlan migrationPlan = runtimeService
.createMigrationPlan(oldDefinition.getId(), newDefinition.getId())
.mapEqualActivities()
.build();
runtimeSerivce.newMigration(migrationPlan)
.processInstanceIds(processInstance.getId())
.execute();
Дальнейшее чтение: