activiti7+springboot2.1.x查看资源文件(五)

在之前的的四篇文章中,我们介绍了,activiti7+springboot开发环境的搭建,以及流程部署,流程启动,用户任务完成等工作流相关操作。这里还是接着之前的文章继续讲。

前面的介绍中,我面部署了一个流程,在部署流程的时候要用到两个资源文件,一个bmmn流程文件,一个png的dgram片。现在我们假设一个场景,当用户在完成自己的当前任务流程的时候,想要看一下所有的流程节点,想要查看整个流程图像该如何操作。

在之前的介绍中我们知道流程定义的相关资源文件会保存在act_ge_byteArray这个表中,而且这两个资源文件都是以二进制的形式存放在表中的。所以我们可以将资源文件取出来,展示给用户。

操作流程

  • 在spring容器中拿到RepositoryService的实现类的实例。
  • 查看流程部署实例
  • 拿到流程部署id,在通过流程部署id拿到到两个资源文件,并将这两个资源文件输出到指定的目录中去
  • 代码实现:
    /**
     * 查看流程部署
     */
    @Override
    public void queryProcessDeployment() throws Exception {
        DeploymentQuery query = repositoryService.createDeploymentQuery();
        List list = query.deploymentName("请假流程").list();
        System.out.println(list);

        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        List list1 = processDefinitionQuery.deploymentId(list.get(0).getId()).list();
        System.out.println(list1);

        ProcessDefinition df = list1.get(0);
        String saveResourceDir = "C:\\Users\\newtab\\Desktop\\activitilogs\\";
        InputStream is = repositoryService.getResourceAsStream(df.getDeploymentId(), df.getResourceName());
        InputStream dis = repositoryService.getResourceAsStream(df.getDeploymentId(), df.getDiagramResourceName());
        OutputStream os = new FileOutputStream(saveResourceDir + df.getResourceName());
        FileOutputStream dos = new FileOutputStream(saveResourceDir + df.getDiagramResourceName());
        IOUtils.copy(is,os);
        IOUtils.copy(dis,dos);

        os.close();
        dos.close();
        is.close();
        dis.close();

    }

注意上面的IOUtils这个类是commons-io这个包里面的。
通过测试程序来调用,由于之前已经有过测试调用的代码,这里不再重复,貌似这个测试调用也没啥技术特别的。

我们到上面的代码指定的目录查看,可以发现两个流程定义的资源文件已经在这个目录下面了。
image.png

本文就先介绍到这里。

你可能感兴趣的:(activiti7+springboot2.1.x查看资源文件(五))