网上都是5或者6版本的 获取流程图节点,连线列表的信息。
我想知道用activiti7版本的怎么获取流程图各节点信息,
因为我想查出连线和节点信息去设置一些自定义的信息。
``` // 查询当前的流程实例
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
//获取当前流程的流程定义processDefinitionEntity,然后根据流程定义获得所有的节点
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.createProcessDefinitionQuery()
.processDefinitionId(processInstance.getProcessDefinitionId()).singleResult();
processDefinitionEntity.getActivities()
最主要的是 processDefinitionEntity.getActivities() 再activiti7版本没有这个get方法了。就不知道怎么用了。求教各位大神,帮我研究下。
有效建议:
/** * 获取流程节点 * * @param definitionId 流程定义ID * @param processId 流程ID(可能为子流程),也就是流程定义Key * @return */ protected List<FlowElement> getProcessDefinitionNodes(String definitionId, String processId) { BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId); List<Process> processes = Lists.newArrayList(); if (StrUtil.isNotEmpty(processId)) { processes.add(bpmnModel.getProcessById(processId)); } else { processes = bpmnModel.getProcesses(); } List<FlowElement> flowElements = Lists.newArrayList(); processes.forEach(process -> flowElements.addAll(process.getFlowElements())); return flowElements; } @GetMapping(value = "process/def/nodes/userTask") public AppResult getUserTaskNodes( @RequestParam(value = "id") String definitionId, @RequestParam(value = "processId", required = false) String processId) { List<FlowElement> flowElements = getProcessDefinitionNodes(definitionId, processId); List<UserTask> userTasks = Lists.newArrayList(); flowElements.forEach( node -> { if (node instanceof UserTask) { userTasks.add((UserTask) node); } }); return buildSuccess(userTasks); } // 返回数据格式(节点) { "code": 200, "message": "操作成功", "data": [ { "id": "Activity_14xmp0o", "xmlRowNumber": 7, "xmlColumnNumber": 5, "name": "一级审批", "asynchronous": false, "notExclusive": false, "incomingFlows": [ { "id": "Flow_1s2ypsj", "xmlRowNumber": 20, "xmlColumnNumber": 5, "sourceRef": "StartEvent_1", "targetRef": "Activity_14xmp0o", "waypoints": [ 238, 470, 350, 470 ] } ], "outgoingFlows": [ { "id": "Flow_1xbbtsl", "xmlRowNumber": 21, "xmlColumnNumber": 5, "sourceRef": "Activity_14xmp0o", "targetRef": "Gateway_0astncq", "waypoints": [ 450, 470, 555, 470 ] } ], "forCompensation": false, "formKey": "one-level", "candidateGroups": [ "one-approval" ], "extended": false, "exclusive": true }, { "id": "Activity_19kus41", "xmlRowNumber": 11, "xmlColumnNumber": 5, "name": "二级审批", "asynchronous": false, "notExclusive": false, "incomingFlows": [ { "id": "Flow_101i5h2", "xmlRowNumber": 34, "xmlColumnNumber": 5, "name": "通过", "conditionExpression": "${gateway==true}", "sourceRef": "Gateway_0astncq", "targetRef": "Activity_19kus41", "waypoints": [ 580, 445, 580, 340, 670, 340 ] } ], "outgoingFlows": [ { "id": "Flow_0zdqnmv", "xmlRowNumber": 42, "xmlColumnNumber": 5, "sourceRef": "Activity_19kus41", "targetRef": "Gateway_0jvvxgy", "waypoints": [ 770, 340, 875, 340 ] } ], "forCompensation": false, "formKey": "two-level", "candidateGroups": [ "two-approval" ], "extended": false, "exclusive": true } ] }
原文链接:https://ask.csdn.net/questions/1080491
Activiti7获取当前任务节点出口连线(动态生成处理节点)
Activiti7 中 PVM,ActivitiImpl,PvmTransition ,ExecutionImpl, TransitionImpl 替代方法。
PVM classes All classes from the org.activiti.engine.impl.pvm package (and subpackages) have been removed. This is because the PVM (Process Virtual Machine) model has been removed and replaced by a simpler and more lightweight model. This means that usages of ActivitiImpl, ProcessDefinitionImpl, ExecutionImpl, TransitionImpl are invalid. Generally, most of the usage of these classes in version 5 came down to getting information that was contained in the process definition. In version 6, all the process definition information can be found through the BpmnModel, which is a Java representation of the BPMN 2.0 XML for the process definition (enhanced to make certain operations and searches easier). The quickest way to get the BpmnModel for a process definition is to use the org.activiti.engine.impl.util.ProcessDefinitionUtil class: // The whole model ProcessDefinitionUtil.getBpmnModel(String processDefinitionId); // Only the specific process definition ProcessDefinitionUtil.getProcess(String processDefinitionId);
大致是说:官方为了轻量化,所以就把原来的PVM 流程引擎给优化了、
删了后推荐我们获取bpmnModel或者process来获取模型的参数。
BpmnModel获取方式可以使用官方推荐的,我这边交互刚好只有taskId,就用这个做个demo;
// 获取当前任务 Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); //获取当前模型 BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); // 获取当前节点 FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); // 这里不转也有方法拿到,我这是为了后人阅读方便 UserTask userTask = (UserTask)flowElement; //获取节点出口线段 List<SequenceFlow> outgoingFlows = userTask.getOutgoingFlows(); // 我这边暂时是解析expression 获取条件和约定的值返回到前端构造button
原文链接:https://blog.csdn.net/weixin_39789689/article/details/106495938
Activiti7中没有getOutgoingTransitions等方法
http://zpycloud.com/archives/1903
activiti 当前活动id
https://blog.csdn.net/weixin_39941298/article/details/79445850