码迷,mamicode.com
首页 > 其他好文 > 详细

004 流程定义

时间:2018-09-07 22:50:52      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:repos   增加   sde   dia   shm   图片   model   deploy   sys   

一 .概述

  在前面,我们学习了流程的部署,我们知道在流程部署之后,生成了一个流程定义的信息.

  本节我们来了解一下流程定义的内容.


 二 .流程定义

  流程定义我们可以理解为一个流程的基本信息,我们通过流程图的id来确定到底是哪一个流程,这个流程图的id最终被映射到流程定义的key上面.

技术分享图片

我们从上面的数据库的信息就能看到这一点.


 三 .流程升级

  当我们的项目升级的时候,我们的流程可能回升级,但是我们往往会维护一个固定的key表示一个流程.

  本次,我们重复运行我们的流程部署,看看这个表的改变.

技术分享图片

我们看到,我们的key是相同的,但是版本升级了.

  因此,在这里我们需要记住一点:

  我们以后都是通过流程的key来确定一种流程的.


 

二 .流程的查看

  我们的项目之中常常会出现这样的需求,就查看我们的流程. 

    ProcessEngines.getDefaultProcessEngine()
            .getRepositoryService()
                .createProcessDefinitionQuery()
                    .processDefinitionName("leave")
                        .list().forEach((e)->{
                            System.out.println("流程定义的名字是="+e.getName());
                            System.out.println("流程定义的版本号是="+e.getVersion());
                        });

结果是:

流程定义的名字是=leave
流程定义的版本号是=1
流程定义的名字是=leave
流程定义的版本号是=2

我们发现,我们能够轻松的知道我们的项目之中有的所有的流程.


 

三 .查询最新版本的流程

  在我们项目之中,我们使用的都是最新版本的流程.因此,我们需要需要获取到最新版本的流程.

/// 获取最新版本的流程
    @Test
    public void getLastestVersionProcessDef(){
        // 获取所有的流程,按照版本号从小到大排列
        List<ProcessDefinition> list = ProcessEngines.getDefaultProcessEngine()
            .getRepositoryService()
                .createProcessDefinitionQuery()
                    .orderByProcessDefinitionVersion().asc()
                        .list();
        
        Map<String,ProcessDefinition> result = new HashMap<>();
        
        list.forEach((e)->{
            result.put(e.getKey(), e);
        });
        
        // 现在map之中存在的都是最新版本的流程定义了
        // 其中key 就是流程的key
        
        for(Entry<String, ProcessDefinition> model:result.entrySet()){
            System.out.println("key="+model.getKey()+",我的版本号是=="+model.getValue().getVersion());
        }
    }

看看结果:  

key=leave,我的版本号是==2

四.删除流程定义

  在前面我们知道了如果增加一个流程定义(使用流程部署),查看流程定义.下面我们需要知道如何删除一个流程定义. 

    ProcessEngines.getDefaultProcessEngine().getRepositoryService()
            // 第二个参数决定是否级联删除
            .deleteDeployment("1111",true);

五 .流程修改

  在activiti之中,不支持流程的修改,我们可以部署一个相同key的流程覆盖之前的流程.

  这样之前的流程还是可以运行的,只要我们不启动原先的流程定义,慢慢流程就会全部变成新的流程.

  这样也能保证已经启动的原流程可以正确的运行.


 

六 .流程定义相关联的资源

  我们知道,流程部署的时候,顺带有一个流程xml和一个流程图.

  我们怎么获取呢?  

//ProcessEngines.getDefaultProcessEngine().getRepositoryService()
            // 获取流程定义的xml
            //.getResourceAsStream(deploymentId, resourceName)
            //
                // 获取流程图
            //.getProcessDiagram("")

我们只要知道流程部署的id ,就能轻松的知道这些附带的资源

004 流程定义

标签:repos   增加   sde   dia   shm   图片   model   deploy   sys   

原文地址:https://www.cnblogs.com/trekxu/p/9607319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!