1、建立流程引擎對象ide
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
2、發佈一個流程測試
1 /** 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 }
3、查看流程定義ui
1 /** 2 * 三、查看流程定義 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 }
4、流程定義刪除spa
1 /** 2 * 四、流程定義刪除 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 }
5、查看流程圖code
1 /** 2 * 五、查看流程圖 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 }