一、创建流程引擎对象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
二、发布一个流程
1 /** 2 * 2、发布一个流程 会在三张表中产生数据 3 * act_ge_bytearray: 新增两条记录,保存规则定义文件,二进制文件 4 * act_re_deployment: 新增一条记录 5 * act_re_procdef: 新增一条记录 6 */ 7 @Test 8 public void testDeployProcess() { 9 // 获取RepositoryService实例 10 RepositoryService repositoryService = processEngine.getRepositoryService(); 11 // 创建发布对象 12 DeploymentBuilder builder = repositoryService.createDeployment(); 13 // 加载发布资源 14 builder.name("请假流程测试") // 设置流程显示别名 15 .addClasspathResource("leave.bpmn") // 设置流程规则文件 16 .addClasspathResource("leave.png"); // 设置流程规则的图片 17 // 发布流程 18 builder.deploy(); 19 }
三、查看流程定义
1 /** 2 * 3、查看流程定义 ID生成规则: {Key} + {Version} + {随机数} 3 */ 4 @Test 5 public void testQueryProcessDifination() { 6 // 创建仓库服务实例 7 RepositoryService repositoryService = processEngine.getRepositoryService(); 8 // 查询 9 ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery(); 10 String key = "leaveflow"; 11 String category = "com.mcs.Flow.Leave"; 12 List<ProcessDefinition> list = query // 过滤条件 13 .processDefinitionKey(key).processDefinitionCategory(category) 14 // 排序条件 15 .orderByProcessDefinitionVersion().asc() 16 // 分页显示 17 // .listPage(0, 10) 18 // 返回结果 19 .list(); 20 long count = query.count(); 21 22 logger.info("Count:" + count); 23 24 for (ProcessDefinition definition : list) { 25 logger.info("Id:" + definition.getId()); 26 logger.info("Name:" + definition.getName()); 27 logger.info("Category:" + definition.getCategory()); 28 logger.info("Key:" + definition.getKey()); 29 logger.info("ResourceName:" + definition.getResourceName()); 30 logger.info("Version:" + definition.getVersion()); 31 } 32 33 }
四、流程定义删除
1 /** 2 * 4、流程定义删除 3 */ 4 @Test 5 public void testDeleteProcessDifination() { 6 // 创建仓库服务实例 7 RepositoryService repositoryService = processEngine.getRepositoryService(); 8 9 String deploymentId = "5001"; 10 // 普通删除,只能删除没有任何关联关系的的流程规则,若当前有流程在执行,则删除失败 11 repositoryService.deleteDeployment(deploymentId); 12 // 级联删除,删除与之相关的所有信息,包括正在执行的流程与历史信息 13 // repositoryService.deleteDeployment(deploymentId, true); 14 }
五、查看流程图
1 /** 2 * 5、查看流程图 3 * @throws IOException 4 */ 5 @Test 6 public void testQueryProcessDifinationImage() throws IOException { 7 // 创建仓库服务实例 8 RepositoryService repositoryService = processEngine.getRepositoryService(); 9 10 // 通过部署ID获取所有资源信息 11 String deploymentId = "10001"; 12 String resourceName = ""; 13 List<String> names = repositoryService.getDeploymentResourceNames(deploymentId); 14 for (String name : names) { 15 if (name.indexOf(".png") >= 0) { 16 resourceName = name; 17 logger.info(name); 18 } 19 } 20 21 if (resourceName != "") { 22 InputStream image = repositoryService.getResourceAsStream(deploymentId, resourceName); 23 24 FileUtils.copyInputStreamToFile(image,new File("d:/test.png")); 25 } 26 27 }