Activiti 流程资源文件下载及历史信息查询

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 Activiti 流程资源文件下载及历史信息查询,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1, 流程资源文件下载

流程部署之后相关资源文件(bpmn 和 png)已经上传到数据库(act_ge_bytearray表)了,如果其他用户想要查看这些资源文件,可以从数据库中把资源文件下载到本地,其中所用的的查询表是act_re_procdef,字段RESOURCE_NAMED对应的是bpmn文件, DGRM_RESOURCE_NAME对应的是png图片文件。
流程资源文件的下载,就是下载流程部署时流程定义的bpmn文件和bpmn的png文件。使用activiti的api来实现,实现时需要依赖commons-io的依赖。

    /**
     * 流程资源文件下载
     */
    @Test
    public void resourceDownload() throws IOException {
        //获取processEngine引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取repositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //通过获取流程定义和流程key查询流程
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("leave").singleResult();  //singleResult()
        // 获取流程部署ID
        String deploymentId = processDefinition.getDeploymentId();
        // 获取流程图片对应的输入流
        InputStream pngInput = repositoryService.getResourceAsStream(deploymentId, processDefinition.getDiagramResourceName());
        // 获取流程文件的输入流
        InputStream bpmnInput = repositoryService.getResourceAsStream(deploymentId, processDefinition.getResourceName());

        File filePng = new File("e:/leave.png");
        File fileBpmn = new File("e:/leave.bpmn");
        FileOutputStream bpmnOut = new FileOutputStream(fileBpmn);
        FileOutputStream pngOut = new FileOutputStream(filePng);
        FileCopyUtils.copy(pngInput,pngOut);
        FileCopyUtils.copy(bpmnInput,bpmnOut);

        pngOut.close();
        bpmnOut.close();
        pngInput.close();
        bpmnInput.close();
    }

注意:保存下来的 png 图片不要使用系统默认名称,最好自己修改名称后再保存到本地进行流程部署,不然可能会导致流程部署后 act_re_procdef 表的DGRM_RESOURCE_NAME(图片名称) 字段为空

2, 流程历史信息查询

删除或执行完的流程定义依然保存在activiti的act_hi_*相关的表中,所以我们还是可以查询流程执行的历史信息,可以通过HistoryService来查看相关的历史记录。

   /**
     * 流程历史信息查询
     */
    @Test
    public void selectHistory(){
        //获取processEngine引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取historyService
        HistoryService historyService = processEngine.getHistoryService();

        HistoricActivityInstanceQuery instanceQuery = historyService.createHistoricActivityInstanceQuery();
        // 根据InstanceId(对应PROC_INST_ID_字段)查询act_hi_actinst表
         instanceQuery.processInstanceId("15001");
        // 根据DefinitionId(对应PROC_DEF_ID_)查询act_hi_actinst表
        //instanceQuery.processDefinitionId("evection:1:4");
        // 排序-根据开始时间升序
        instanceQuery.orderByHistoricActivityInstanceStartTime().asc();
        // 查询所有内容
        List<HistoricActivityInstance> activityInstanceList = instanceQuery.list();

        for (HistoricActivityInstance hi : activityInstanceList) {
            System.out.println(hi.getActivityId());
            System.out.println(hi.getActivityName());
            System.out.println(hi.getProcessDefinitionId());
            System.out.println(hi.getProcessInstanceId());
            System.out.println("<==========================>");
        }
    }

3, 流程删除

    /**
     * 流程删除
     */
    @Test
    public void processDelete() throws IOException {
        //获取processEngine引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取repositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //通过获取流程定义和流程key查询流程
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("leave").singleResult();  //singleResult()
        // 获取流程部署ID
        String deploymentId = processDefinition.getDeploymentId();
        //删除部署好的流程时,如果该流程中有未完成的流程实例不能进行删除
        repositoryService.deleteDeployment(deploymentId);
        //如果想强制删除流程时,需要设置为true
        //repositoryService.deleteDeployment(deploymentId,true);
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135751.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!