一 .基本的流程图
本次我们使用一个请假的流程进行分析,在后面的学习之中也使用这个流程.首先我们需要完成的就是流程部署的实现.
二 .流程部署
在这个流程之中,我们需要注意的下面的几点.流程图之后总我们定义的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