002 流程部署

一 .基本的流程图

本次我们使用一个请假的流程进行分析,在后面的学习之中也使用这个流程.首先我们需要完成的就是流程部署的实现.

二 .流程部署

在这个流程之中,我们需要注意的下面的几点.流程图之后总我们定义的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来启动,默认使用的就是最新版本的流程定义.

原文地址:https://www.cnblogs.com/trekxu/p/10381253.html