zoukankan      html  css  js  c++  java
  • activity6.0部署BPMN文件的多种方式,直接上代码

    package test;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.repository.Deployment;
    import org.junit.Test;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.util.zip.ZipInputStream;
    
    /**
     * @author ***
     * @Description: 流程BPMN部署
     * @date 2021/04/04
     * 在使用的时候,注意activity的数据库配置是否正确,《activiti.cfg.xml》
     */
    public class ProcessDefinitionTest {
    
    
        /**流程引擎(核心对象),默认加载类路径下命名为activiti.cfg.xml*/
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        
        //部署流程定义
        @Test
        public void deployementProcessDefinition(){
            Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service
                            .createDeployment()//创建部署对象
                            .name("审计方案管理&审计通知书")//声明流程的名称
                            .addClasspathResource("process/executeSolutionApproval.bpmn")//加载资源文件,一次只能加载一个文件
                            .addClasspathResource("process/executeSolutionApproval.png")//
                            .deploy();//完成部署
            System.out.println("部署ID:"+deployment.getId());//1
            System.out.println("部署时间:"+deployment.getDeploymentTime());
        }
    
        @Test
        public void deployementProcessDefinitionByInputStream() throws FileNotFoundException {
            //获取资源相对路径
            String bpmnPath = "process/executeSolutionApproval.bpmn";
            String bpmnName = "executeSolutionApproval.bpmn";
            String pngPath = "process/executeSolutionApproval.png";
            String pngName = "executeSolutionApproval.png";
    
            //读取资源作为一个输入流
            FileInputStream bpmnfileInputStream = new FileInputStream(bpmnPath);
            FileInputStream pngfileInputStream = new FileInputStream(pngPath);
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service
                    .createDeployment()//创建部署对象
                    .addInputStream(bpmnName,bpmnfileInputStream)
                    .addInputStream(pngName, pngfileInputStream)
                    .deploy();//完成部署
            System.out.println("部署ID:"+deployment.getId());//1
            System.out.println("部署时间:"+deployment.getDeploymentTime());
        }
    
    
        /**
         * 字符串方式部署
         * @throws FileNotFoundException
         */
        @Test
        public void deployementProcessDefinitionByString() throws FileNotFoundException{
            //字符串
            String text = "<?xml version="1.0" encoding="UTF-8"?><definitions>...</definitions>";
    
            Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service
                    .createDeployment()//创建部署对象
                    .addString("helloworld.bpmn",text)
                    .deploy();//完成部署
            System.out.println("部署ID:"+deployment.getId());//1
            System.out.println("部署时间:"+deployment.getDeploymentTime());
        }
    
        /**
         * 压缩包方式部署
         * zip/bar
         */
        @Test
        public void deployementProcessDefinitionByzip(){
            //从classpath路径下读取资源文件
            InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip");
            ZipInputStream zipInputStream = new ZipInputStream(in);
            Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service
                    .createDeployment()//创建部署对象
                    .addZipInputStream(zipInputStream)//使用zip方式部署,将helloworld.bpmn和helloworld.png压缩成zip格式的文件
                    .deploy();//完成部署
            System.out.println("部署ID:"+deployment.getId());//1
            System.out.println("部署时间:"+deployment.getDeploymentTime());
        }
    
    
    }

    多个方式任选,另外,在部署完毕之后,!!!记得准备脚本文件避免线上翻车!!!

    岁月无声无息的溜走,除了带走一个无聊者的时光,还会沉淀一个努力者的人生。
  • 相关阅读:
    Java的native关键字---JAVA下调用其他语言的关键词
    JAVA关键词synchronized的作用
    Ubuntu下安装android studio的时候,无法进入图形界面--/usr/lib/jdk1.8.0_60/jre/lib/i386/libawt_xawt.so: libXtst.so.6: 无法打开共享对象文件: 没有那个文件或目录
    安装XP和Ubuntu双系统问题——Ubuntu安装时无法识别原有系统
    耗时又繁重的SQL诊断优化,以后就都交给数据库自治服务DAS吧!
    阿里云发布政企安全加速解决方案 加码助力政企信息化安全
    Nacos 权限控制介绍及实战
    资深技术专家崮德在阿里管理研发团队的实践和思考
    容灾切换必备——全局流量管理介绍
    MaxCompute管家详解--管家助力,轻松玩转MaxCompute
  • 原文地址:https://www.cnblogs.com/dayandday/p/14656663.html
Copyright © 2011-2022 走看看