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