002 流程部署

Posted trekxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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来启动,默认使用的就是最新版本的流程定义.

 

以上是关于002 流程部署的主要内容,如果未能解决你的问题,请参考以下文章

002tomcat服务器——通过maven将项目打war包

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

导致资产预编译在heroku部署上失败的代码片段

002.MySQL高可用主从复制部署