最近项目,用到流程。第一次用,就自己做了一下小结:
1.
===================================下面这段代码是获取流程线信息=============================
//
//processDefinitionId 对应表ACT_RE_PROCDEF主键信息
String processDefinitionId="出差:1:2549";
//获取bpmnModel对象
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
//因为我们这里只定义了一个Process 所以获取集合中的第一个即可
Process process = bpmnModel.getProcesses().get(0);
//获取所有的FlowElement信息
Collection<FlowElement> flowElements = process.getFlowElements();
for (FlowElement flowElement : flowElements) {
//如果是任务节点
if (flowElement instanceof UserTask) {
UserTask userTask=(UserTask) flowElement;
//获取入线信息
List<SequenceFlow> incomingFlows = userTask.getIncomingFlows();
for (SequenceFlow sequenceFlow : incomingFlows) {
System.out.println(sequenceFlow.getId() +"=="+sequenceFlow.getName()+"-"+sequenceFlow.getConditionExpression()+"--"+sequenceFlow.getDocumentation()+"-"
+sequenceFlow.getSourceRef()+"--"+sequenceFlow.getTargetRef()+"-");
}
}
}
====================================================================================
2.
=========================================获取流程节点===========================================
ProcessDefinitionEntity processDefinitionEntity=(ProcessDefinitionEntity)repositoryService.getProcessDefinition("请病假:1:9");
List<ActivityImpl> activityList=processDefinitionEntity.getActivities();
for(ActivityImpl activiti:activityList) {
System.out.println("节点ID:"+activiti.getId());
System.out.println("节点名称:"+activiti.getProperty("name"));
}
====================================================================================
3.
=======================================这个方法是获取流程图,节点数据=============================================
Model modelD = repositoryService.getModel(modelId);
BpmnJsonConverter jsonConverter = new BpmnJsonConverter();
//获取节点信息
byte[] arg0 = repositoryService.getModelEditorSource(modelD.getId());
JsonNode editorNode = new ObjectMapper().readTree(arg0);
//将节点信息转换为xml
BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(editorNod