05流程图和流程定义的操作

一、流程定义的删除(根据部署ID删除)

1、RepositoryService.deleteDeployment(部署ID)

使用此方法时,当此流程没有流程实例时,会将三个表中的信息都删除。
当有流程实例时,则删除不成功。

2、RepositoryService.deleteDeployment(部署ID,cascade)

中间方法,cascade的值为布尔类型的值。
当cascade的值为true时,无论有没有流程实例在引用此流程定义,都会将三个表中的信息都删除。
当cascade的值为false时,有流程实例在引用此流程定义,则删除不成功。

3、RepositoryService.deleteDeploymentCascade(部署ID)

无论有没有流程实例在引用此流程定义,都会将三个表中的信息都删除。
三张表分别是:
 

二、流程定义的修改

Activiti没有提供修改流程定义信息的接口,在修改原有的流程图之后,需要重新部署,只要key不变,此流程图的版本号会+1。
也就是说,在修改了流程图之后,只有重新部署,修改的流程才会生效。

三、查询最新版本的流程定义(用于流程发起) 黎美顺我爱你ლ(′◉❥◉`ლ)

1、首先将当前key的所有流程按照版本号进行升序查询。
2、将查询得出的list进行遍历保存到map集合当中(特点是map的键唯一),遍历结束,map保存的就是最新版本的流程定义
3、将map进行遍历
    public void findNewProDef() {
        //将流程定义按照版本号升序查询
        RepositoryService repositoryService = processEngine.getRepositoryService();
        List<ProcessDefinition> processDefinitions = repositoryService
                .createProcessDefinitionQuery().orderByProcessDefinitionVersion().asc().list();
        HashMap<String,ProcessDefinition> map = new HashMap<String,ProcessDefinition>();
        //将流程定义保存到map当中
        for(ProcessDefinition pd:processDefinitions) {
            map.put(pd.getKey(), pd);
        }
        //遍历map则可以得到所有最新的流程定义
        Collection<ProcessDefinition> newpd = map.values();
        for(ProcessDefinition pd:newpd) {
            System.out.println(pd.getId());
        }
    }

四、查询流程图(根据流程定义的ID去查)

 
 
 



原文地址:https://www.cnblogs.com/Guorisy/p/12099241.html