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工作流

本文来源于网络,只做技术分享,一概不负任何责任

posted @   彼岸舞  阅读(964)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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 热点速览」
点击右上角即可分享
微信分享提示