Activiti流程定义部署方式

 

1 bpmn png方式部署

    
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

/**部署流程定义(从classpath)*/ @Test public void deploymentProcessDefinition_classpath(){ Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service .createDeployment()//创建一个部署对象 .name("流程定义")//添加部署的名称 .addClasspathResource("diagrams/helloworld.bpmn")//从classpath的资源中加载,一次只能加载一个文件 .addClasspathResource("diagrams/helloworld.png")//从classpath的资源中加载,一次只能加载一个文件 .deploy();//完成部署 System.out.println("部署ID:"+deployment.getId());// System.out.println("部署名称:"+deployment.getName());// }

 

2 zip方式部署

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    
    /**部署流程定义(从zip)*/
    @Test
    public void deploymentProcessDefinition_zip(){
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip");
        ZipInputStream zipInputStream = new ZipInputStream(in);
        Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
                        .createDeployment()//创建一个部署对象
                        .name("流程定义")//添加部署的名称
                        .addZipInputStream(zipInputStream)//指定zip格式的文件完成部署
                        .deploy();//完成部署
        System.out.println("部署ID:"+deployment.getId());//
        System.out.println("部署名称:"+deployment.getName());//
    }

 

3

 

通过Classpath的方式加载资源文件来部署流程定义,这种方式始终有局限性,

实际项目的话,需要使用动态导入流程定义文件,可以通过bpmn和png文件打包成zip压缩包,

然后用户界面直接导入到系统,然后在解析部署流程定义,Activiti插件是支持这种方式的。

 

把bpmn流程文件和png流程图文件打成zip压缩包,将文件上传然后通过zip方式部署

 

 

 

    /**部署流程定义*/
    @Override
    public void saveNewDeploye(File file, String filename) {
        try {
            //2:将File类型的文件转化成ZipInputStream流
            ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));
            repositoryService.createDeployment()//创建部署对象
                            .name(filename)//添加部署名称
                            .addZipInputStream(zipInputStream)//
                            .deploy();//完成部署
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

posted @ 2017-08-08 15:07  wdmiye  阅读(1486)  评论(0编辑  收藏  举报