flowableで動的にノードを追加する方法は?
Flowableは、ノードを動的に追加できる仕組みを提供するオープンソースのワークフローエンジンです。
新しいノードを動的に追加するには、Flowable の Java API を使用して新しいプロセス定義を作成してデプロイできます。まず、Flowable の RepositoryService を使用して新しいプロセス定義オブジェクトを作成する必要があります。そのオブジェクトの addActivity メソッドを使用して新しいノードを追加できます。
例のコードを見てみましょう。
// 创建流程定义对象
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
Process process = bpmnModel.getMainProcess();
// 创建新的用户任务节点
UserTask userTask = new UserTask();
userTask.setId("newUserTask");
userTask.setName("New User Task");
// 设置节点的坐标位置
GraphicInfo graphicInfo = new GraphicInfo();
graphicInfo.setX(500);
graphicInfo.setY(200);
graphicInfo.setWidth(100);
graphicInfo.setHeight(80);
userTask.setGraphicInfo(graphicInfo);
// 添加节点到流程定义中
process.addFlowElement(userTask);
// 部署新的流程定义
Deployment deployment = repositoryService.createDeployment()
.addBpmnModel("newProcess.bpmn20.xml", bpmnModel)
.deploy();
上記の例では、まず既存のプロセス定義オブジェクトを取得してから、新しいユーザタスクノードを作成し、ノードのプロパティを設定します。最後に、新しいノードをプロセス定義に追加し、新しいプロセス定義をデプロイします。
なお、動的にノードを追加することで実行中のプロセスインスタンスに影響を与える可能性があるため、具体的なビジネスシナリオに基づいて影響を評価して処理する必要があります。