在之前的的四篇文章中,我们介绍了,activiti7+springboot开发环境的搭建,以及流程部署,流程启动,用户任务完成等工作流相关操作。这里还是接着之前的文章继续讲。
前面的介绍中,我面部署了一个流程,在部署流程的时候要用到两个资源文件,一个bmmn流程文件,一个png的dgram片。现在我们假设一个场景,当用户在完成自己的当前任务流程的时候,想要看一下所有的流程节点,想要查看整个流程图像该如何操作。
在之前的介绍中我们知道流程定义的相关资源文件会保存在act_ge_byteArray这个表中,而且这两个资源文件都是以二进制的形式存放在表中的。所以我们可以将资源文件取出来,展示给用户。
操作流程
- 在spring容器中拿到RepositoryService的实现类的实例。
- 查看流程部署实例
- 拿到流程部署id,在通过流程部署id拿到到两个资源文件,并将这两个资源文件输出到指定的目录中去
- 代码实现:
/**
* 查看流程部署
*/
@Override
public void queryProcessDeployment() throws Exception {
DeploymentQuery query = repositoryService.createDeploymentQuery();
List<Deployment> list = query.deploymentName("请假流程").list();
System.out.println(list);
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
List<ProcessDefinition> 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这个包里面的。
通过测试程序来调用,由于之前已经有过测试调用的代码,这里不再重复,貌似这个测试调用也没啥技术特别的。
本文就先介绍到这里。