首页 > 解决方案 > 是否可以在 camunda 中使用 Fluent API 更新正在运行的流程实例?

问题描述

我正在尝试使用 Fluent API 在进程的运行时进行一些更改。是否可以更新正在运行的实例?

例如:如果我想在现有事件(用户任务、服务任务……)之间添加新事件并运行新添加的事件。有没有办法做到这一点?

标签: javacamundacamunda-modelerbpmn.io

解决方案


你可以这样做:

  1. 创建流程的新版本并进行部署。
  2. 将流程实例迁移到该版本。

第 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();

进一步阅读:


推荐阅读