8.3 删除流程定义
删除流程定义可以按照id和key删除。
8.3.1 按照id删除(有关联信息会抛异常)
// 删除流程定义 @Test public void deleteById(){ String deploymentId = "1500001"; ProcessEngine processEngine = Configuration.getProcessEngine(); // 有关联信息,抛异常 processEngine.getRepositoryService().deleteDeployment(deploymentId); }
上述这种删除方法,如果该流程id对应的流程有关联信息,将会抛异常。
8.3.2 按照id删除(会删除关联信息)
// 删除流程定义 @Test public void deleteById(){ String deploymentId = "1500001"; ProcessEngine processEngine = Configuration.getProcessEngine(); // 有关联信息,会级联删除 processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId); }
上述这种删除方法,如果该流程id对应的流程有关联信息,会级联删除!
8.3.3 按照key删除
// 删除流程定义 按照key @Test public void deleteByKey(){ String key = "b"; List<ProcessDefinition> list = processEngine.getRepositoryService() .createProcessDefinitionQuery() .processDefinitionKey(key) .list(); // 遍历 删除 if( list != null && list.size() > 0){ for(ProcessDefinition processDefinition : list){ System.out.println(processDefinition.getId()); ProcessEngine processEngine = Configuration.getProcessEngine(); processEngine.getRepositoryService(). deleteDeploymentCascade(processDefinition.getDeploymentId()); } } }
该方式会将该key下的所有实例删除。
8.4 获取部署时的文件资源
8.4.1 获取部署时的文件资源方式1
该方式要指定jbpm4_deployment表 DBID 和 jbpm4_lob 表中deplotmentId对应的name_的值
// 获取部署时的文件资源(查看流程图)
@Test public void get() throws Exception{ ProcessEngine processEngine = Configuration.getProcessEngine(); // jbpm4_deployment表 DBID String deplotmentId = "1510001"; // jbpm4_lob 表中deplotmentId对应的name_的值 String resourceName = "test.png"; // 获取所有资源名称 Set<String> names = processEngine.getRepositoryService().getResourceNames(deplotmentId); for(String name : names){ System.out.println(name); } InputStream in = processEngine.getRepositoryService().getResourceAsStream(deplotmentId, resourceName); // 输出到本地文件 (路径自己指定,但要注意路径中包含的文件夹都存在) OutputStream outputStream = new FileOutputStream("d:/photoAlbum/process-" + deplotmentId +".png"); for(int b = -1;(b = in.read()) != -1;){ outputStream.write(b); } in.close(); outputStream.close(); }
执行上述代码,会在我们指定的路径下得到如下图片:就是我们部署时候的流程图。
8.4.2 获取部署时的文件资源方式2
该方式要指定 jbpm4_execution 表中的 PROCDEFID 字段。
@Test // 得到图片资源2 public void get2() throws IOException{ // jbpm4_execution 表中的 PROCDEFID String processDefinitionId = "test-2"; ProcessDefinition processDefinition = processEngine.getRepositoryService() .createProcessDefinitionQuery() .processDefinitionId(processDefinitionId) .uniqueResult(); InputStream in = processEngine.getRepositoryService().getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getImageResourceName()); // 输出到本地文件 OutputStream outputStream = new FileOutputStream("d:/photoAlbum/process/deplotmentImg/" + processDefinitionId + ".png"); for(int b = -1;(b = in.read()) != -1;){ outputStream.write(b); } in.close(); outputStream.close(); }
执行上述代码,会在我们指定的路径下得到如下图片:就是我们部署时候的流程图。