zoukankan      html  css  js  c++  java
  • 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来启动,默认使用的就是最新版本的流程定义.

  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/trekxu/p/10381253.html
Copyright © 2011-2022 走看看