項目位址 | https://gitee.com/lwj/flowable.git |
代碼分支 | flowable-base |
視訊講解位址 | https://space.bilibili.com/485524575/channel/detail?cid=94579 |
使用者名 | 密碼 |
0000001 | test |
0000002 | test |
0000003 | test |
0000004 | test |
文章目錄
1. 示範
工作流實戰_11_flowable 流程執行個體 跟蹤流程 2. 代碼分享
public byte[] createImage(String processInstanceId) {
//1.擷取目前的流程執行個體
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = null;
List<String> activeActivityIds = new ArrayList<>();
List<String> highLightedFlows = new ArrayList<>();
//2.擷取所有的曆史軌迹線對象
List<HistoricActivityInstance> historicSquenceFlows = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId).activityType(BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW).list();
historicSquenceFlows.forEach(historicActivityInstance -> highLightedFlows.add(historicActivityInstance.getActivityId()));
//3. 擷取流程定義id和高亮的節點id
if (processInstance != null) {
//3.1. 正在運作的流程執行個體
processDefinitionId = processInstance.getProcessDefinitionId();
activeActivityIds = runtimeService.getActiveActivityIds(processInstanceId);
} else {
//3.2. 已經結束的流程執行個體
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
processDefinitionId = historicProcessInstance.getProcessDefinitionId();
//3.3. 擷取結束節點清單
List<HistoricActivityInstance> historicEnds = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId).activityType(BpmnXMLConstants.ELEMENT_EVENT_END).list();
List<String> finalActiveActivityIds = activeActivityIds;
historicEnds.forEach(historicActivityInstance -> finalActiveActivityIds.add(historicActivityInstance.getActivityId()));
}
//4. 擷取bpmnModel對象
BpmnModel bpmnModel = flowableBpmnModelService.getBpmnModelByProcessDefId(processDefinitionId);
//5. 生成圖檔流
InputStream inputStream = flowProcessDiagramGenerator.generateDiagram(bpmnModel, activeActivityIds, highLightedFlows);
//6. 轉化成byte便于網絡傳輸
byte[] datas = IoUtil.readInputStream(inputStream, "image inputStream name");
return datas;
}