zoukankan      html  css  js  c++  java
  • (四)Activiti之流程定义部署之ZIP方式和流程定义查询

    一、流程定义部署之ZIP方式

    • 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式。

      1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压缩包中。

      1.2  代码中加载

    package com.shyroke.activiti.firstActiviti;
    
    import static org.junit.Assert.*;
    
    import java.io.InputStream;
    import java.util.zip.ZipInputStream;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.repository.Deployment;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class ProcessDefineTest {
    
        /**
         * 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
         */
        private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        
        /**
         * 部署流程定义使用zip方式
         */
        @Test
        public void test_deployWithZip() {
            InputStream in=this.getClass().getClassLoader().getSystemResourceAsStream("diagrams/HelloWorld.zip");
            ZipInputStream zipInputStream=new ZipInputStream(in);
            
            Deployment deployment=processEngine.getRepositoryService()
            .createDeployment().addZipInputStream(zipInputStream)
            .name("HelloWorld流程2")
            .deploy();
            
            System.out.println("流程部署ID:"+deployment.getId()); 
            System.out.println("流程部署Name:"+deployment.getName());
            
        }
    
    }
    • 执行测试用例并查看结果

    • act_re_deployment 流程定义部署表新增一条记录

    • act_re_procdef 流程定义表中VERSION_字段 版本升级了,KEY依然是一样的;

     

    • act_ge_bytearry 资源文件表,多了两条记录

     

    • 这里再提一个表 act_ge_property 属性表,这里的next_dbid是主键策略,就是规定好了下一次生成的id就是10001;

     

     二、流程定义查询

      2.1  查询流程定义 返回流程定义集合 对应表 act_re_procdef

    package com.shyroke.activiti.firstActiviti;
    
    import static org.junit.Assert.*;
    
    import java.io.InputStream;
    import java.util.List;
    import java.util.zip.ZipInputStream;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.repository.Deployment;
    import org.activiti.engine.repository.ProcessDefinition;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class ProcessDefineTest2 {
    
        /**
         * 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
         */
        private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    
        /**
         * 查询流程定义 返回流程定义集合 对应表 act_re_procdef
         */
        @Test
        public void test_list() {
            List<ProcessDefinition> pdList=processEngine.getRepositoryService().createProcessDefinitionQuery()
            .processDefinitionKey("myFirstProcess")
            .list();
            
            for(ProcessDefinition pd:pdList){
                System.out.println("ID_"+pd.getId());
                System.out.println("NAME_"+pd.getName());
                System.out.println("KEY_"+pd.getKey());
                System.out.println("VERSION_"+pd.getVersion());
                System.out.println("=========");
            }
        }
    
    }
    • 结果

       2.2   通过ID查询某个流程定义

    package com.shyroke.activiti.firstActiviti;
    
    import static org.junit.Assert.*;
    
    import java.io.InputStream;
    import java.util.List;
    import java.util.zip.ZipInputStream;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.repository.Deployment;
    import org.activiti.engine.repository.ProcessDefinition;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class ProcessDefineTest2 {
    
        /**
         * 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
         */
        private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    /**
         * 通过ID查询某个流程定义
         */
        @Test
        public void getById(){
            String processDefinitionId="myFirstProcess:2:7504";
            ProcessDefinition pd=processEngine.getRepositoryService() // 获取service
                .createProcessDefinitionQuery() // 创建流程定义查询
                .processDefinitionId(processDefinitionId) // 通过id查询
                .singleResult();
            
            System.out.println("ID_"+pd.getId());
            System.out.println("NAME_"+pd.getName());
            System.out.println("KEY_"+pd.getKey());
            System.out.println("VERSION_"+pd.getVersion());
                
        }
    }
    • 结果:

  • 相关阅读:
    ZW网络团队及资源简介
    ZW云推客即将登场
    “4K云字库”基本框架图
    Sketch 55 Beta版本探秘,看看都有什么新功能
    产品经理有哪些类型?
    电影票APP原型设计分享– Movie Booking
    旅游类App的原型制作分享-Klook
    UI行业发展预测 & 系列规划的调整
    原来这就是 UI 设计师的门槛
    摹客PS插件全新改版!—— 智能检测不对应的设计稿
  • 原文地址:https://www.cnblogs.com/shyroke/p/7992950.html
Copyright © 2011-2022 走看看