002 流程部署
阿新 • • 發佈:2019-02-15
實現 each 策略 http 流程引擎 roc ted new str
一 .基本的流程圖
本次我們使用一個請假的流程進行分析,在後面的學習之中也使用這個流程.首先我們需要完成的就是流程部署的實現.
二 .流程部署
在這個流程之中,我們需要註意的下面的幾點.流程圖之後總我們定義的id是leave,這個就是流程定義的key.
三 .完成流程部署
// 獲取流程引擎對象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 獲取流程存儲對象 RepositoryService repositoryService = processEngine.getRepositoryService(); ZipInputStream zipInputStream = new ZipInputStream(new ClassPathResource("diagram/leave.zip").getInputStream()); // 創建部署對象 Deployment deployment = repositoryService.createDeployment().name("第一個部署的流程").addZipInputStream(zipInputStream) .deploy(); // 獲取自動生成的部署id System.out.println(deployment.getId());
為了完成流程部署,我們使用了RepositoryService 對象,該對象之中包含一個部署對象.我們看部署完之後數據庫的變化.
四 .數據庫的變化
我們發現在流程部署表之中多了一個部署的記錄.
在流程定義之中多了一條記錄,這個記錄描述的就是流程圖部署的結果.實際上就是一個xml文件的解析,我們看到了key這個字段就是流程圖之中的id.
在二進制資源表之中多了兩條記錄,存儲的就是bpmn記錄和對應的流程圖.
五 . 流程部署的查詢
// 獲取流程引擎對象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 獲取流程存儲對象 RepositoryService repositoryService = processEngine.getRepositoryService(); // 獲取部署查詢對象 DeploymentQuery createDeploymentQuery = repositoryService.createDeploymentQuery(); // 查詢所有的部署列表 List<Deployment> list = createDeploymentQuery.list(); list.forEach(System.out::println);
我們使用流程部署查詢對象完成部署的查詢(DeploymentQuery).
六.流程定義的查詢
// 獲取流程引擎對象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 獲取流程存儲對象 RepositoryService repositoryService = processEngine.getRepositoryService(); // 獲取流程定義查詢對象 ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); // 查詢所有的部署列表 List<org.activiti.engine.repository.ProcessDefinition> list = processDefinitionQuery.list();
七. 查詢最新的流程定義
// 獲取流程引擎對象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 獲取流程存儲對象 RepositoryService repositoryService = processEngine.getRepositoryService(); // 獲取流程定義查詢對象 ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); // 查詢所有的部署列表 List<org.activiti.engine.repository.ProcessDefinition> list = processDefinitionQuery.list();
八.部署同key的流程文件
我們再次部署相同的流程,看看數據庫的變化
我們發現新的流程部署之中多了一條記錄,重點是流程定義表的內容.
我們發現在同key的情況下,版本號升級了.這就是activiti之中的策略,使用版本號升級的方式.我們在後面啟動流程的時候都會使用key來啟動,默認使用的就是最新版本的流程定義.
002 流程部署