1. 程式人生 > >002 流程部署

002 流程部署

實現 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 流程部署