Activiti7 获取资源信息及其查询流程历史信息
获取资源信息
/** * 获取资源信息 * * @throws IOException */ @Test public void getProcessResources() throws IOException { // 1:流程定义ID String processDefinitionId = "holiday:1:7504"; // 2:获取RepositoryService RepositoryService repositoryService = defaultProcessEngine.getRepositoryService(); // 3:创建查询对象 ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); // 4:查询流程定义 ProcessDefinition processDefinition = processDefinitionQuery.processDefinitionId(processDefinitionId).singleResult(); // 5:获取资源名称 String resourceName = processDefinition.getResourceName(); System.out.println("bpmn名称:" + resourceName); // 6:获取图片名称 String diagramResourceName = processDefinition.getDiagramResourceName(); System.out.println("png名称:" + diagramResourceName); File bpmnFile = new File("E:\\dance\\activiti7\\src\\main\\resources\\cp\\holiday.bpmn"); File pngFile = new File("E:\\dance\\activiti7\\src\\main\\resources\\cp\\holiday.png"); // 7:根据部署ID和资源名称获取资源流 InputStream resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), resourceName); // 8:创建输出流 FileOutputStream fileOutputStream = new FileOutputStream(bpmnFile); // 写文件 writeByte(resourceAsStream, fileOutputStream); // 获取图片 resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName); fileOutputStream = new FileOutputStream(pngFile); // 写文件 writeByte(resourceAsStream, fileOutputStream); System.out.println("获取资源成功!"); }
写出流方法
private void writeByte(InputStream resourceAsStream, OutputStream fileOutputStream) throws IOException { int i = -1; byte[] content = new byte[1024]; while ((i = resourceAsStream.read(content)) != -1) { fileOutputStream.write(content, 0, i); } // 释放资源 fileOutputStream.flush(); fileOutputStream.close(); resourceAsStream.close(); }
查询流程历史信息
/** * 获取历史信息 */ @Test public void testHistoric01() { // 获取历史信息Service HistoryService historyService = defaultProcessEngine.getHistoryService(); // 启动的流程实例的ID String processInstanceId = "10001"; // 根据流程实例ID查询 历史记录 List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); // 输出信息 list.forEach(historicActivityInstance -> { System.out.println("---------------------------------------------------"); System.out.println("当前激活ID:" + historicActivityInstance.getActivityId()); System.out.println("当前激活名称:" + historicActivityInstance.getActivityName()); System.out.println("流程定义ID:" + historicActivityInstance.getProcessDefinitionId()); System.out.println("流程实例ID:" + historicActivityInstance.getProcessInstanceId()); System.out.println("---------------------------------------------------"); }); }
作者:彼岸舞
时间:2020\08\31
内容关于:Activiti工作流
本文来源于网络,只做技术分享,一概不负任何责任
分类:
activiti
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」