流程图中的节点id和name

//有个更简单的,但是忘了,可以直接获取所有usertask。

//当前任务
Task currentTask = taskService.createTaskQuery().taskId(taskId).singleResult();
//获取流程定义
Process process = repositoryService.getBpmnModel(currentTask.getProcessDefinitionId()).getMainProcess();
Collection<FlowElement> flowElements=process.getFlowElements();
List<NodeData> list=new ArrayList<>();
for(FlowElement e : flowElements) {
    //把分支节点去掉
    if(e.getClass().toString().contains("UserTask")){
        NodeData nodeData=new NodeData();
        nodeData.setId(e.getId());
        nodeData.setName(e.getName());
        list.add(nodeData);
    }
}
在不修改流程图的情况下,我们可以通过以下步骤添加节点至Activiti工作流: 1. 首先,确保我们已经定义了要添加的节点的任务类型和属性。可以通过添加一个新的Java类或者表单定义来实现这一点。 2. 接下来,在流程定义文件找到要添加节点的位置。这可以通过从Activiti设计器导出流程定义文件或通过程序读取已经部署的流程定义文件来完成。 3. 然后,通过使用Activiti API的命令服务创建新的节点实例。可以使用如下代码片段: ```java RepositoryService repositoryService = processEngine.getRepositoryService(); RuntimeService runtimeService = processEngine.getRuntimeService(); String processDefinitionId = "yourProcessDefinitionId"; // 流程定义的ID String activityIdToInsert = "yourActivityIdToInsert"; // 要添加节点的位置的活动ID ActivityNodeBuilder activityNodeBuilder = repositoryService.createActivityNodeBuilder(); ActivityNode addedNode = activityNodeBuilder .createActivityNode() // 创建新节点 .name("yourNodeName") // 设置节点名称 .activityId("yourNewActivityId") // 设置新节点的活动ID .property("yourProperty", "yourValue") // 设置节点属性 .behavior(ExclusiveGatewayActivityBehavior.class) // 设置节点行为 .done(); // 完成创建节点 repositoryService.insertActivityIntoProcessDefinition(processDefinitionId, addedNode); // 将新节点插入到流程定义 runtimeService.createChangeActivityStateBuilder() // 创建更改活动状态的构建器 .processInstanceId("yourProcessInstanceId") // 设置流程实例的ID .moveActivityIdTo(activityIdToInsert, addedNode.getId()) // 将原活动移动到新节点之前 .changeState(); // 完成更改活动状态 ``` 4. 最后,重新部署修改后的流程定义。这可以通过在Activiti设计器再次导入流程定义文件或通过API进行部署来实现。 通过以上步骤,我们可以在不修改流程图的情况下成功添加节点至Activiti工作流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值