Activiti流程定义(add,modify,delete,query)


import static org.junit.Assert.*;
import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;
import org.junit.Test;

public class DeployDefinitionTest {
    //获取默认的流程引擎
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    -----------------------------------------query----------------------------------------
    //查询流程定义  返回流程定义集合  对应表 act_re_procdef
    @Test
    public void list() {
        String processDefinitionKey = "myProcess";
        List<ProcessDefinition> pdlist = processEngine.getRepositoryService()  //获取service
                     .createProcessDefinitionQuery() //创建流程定义查询
                     .processDefinitionKey(processDefinitionKey)  //通过key查询
                     .list();
        for(ProcessDefinition pd: pdlist){
            System.out.println("流程定义id:"+pd.getId());
            System.out.println("流程名称:"+pd.getName());
            System.out.println("key:"+pd.getKey());
            System.out.println("版本:"+pd.getVersion());
            System.out.println("==============");
        }
    }
    
    
    //通过id来查询某一个流程定义
    @Test
    public void queryById(){
        String processDefinitionId = "myProcess:3:10004";
        ProcessDefinition pd  = processEngine.getRepositoryService()  //获取service
                     .createProcessDefinitionQuery() //创建流程定义查询
                     .processDefinitionId(processDefinitionId)  //通过id查询
                     .singleResult(); //返回查到的一条结果
        System.out.println("流程名称:"+pd.getName());
        System.out.println("key:"+pd.getKey());
        System.out.println("版本:"+pd.getVersion());
        System.out.println("==============");
    
    }

}
---------------------------------------------add-----------------------------

//部署流程定义    第一种加载方式
    @Test
    public void deployWithClasspath(){
        Deployment deployment = processEngine.getRepositoryService()//获取部署相关的service
                .createDeployment() //创建部署
                .addClasspathResource("diagrams/HelloWorld.bpmn")  //加载资源文件
                .addClasspathResource("diagrams/HelloWorld.png")
                .name("HelloWorld流程") //流程名称
                .deploy();  //部署
        System.out.println("流程部署ID:"+deployment.getId());
        System.out.println("流程部署名称:"+deployment.getName());
    }
    
    //第二种zip加载方式
    @Test
    public void deployWithZip(){
        InputStream is = this.getClass()  //取得当前的class对象
        .getClassLoader()   //获得类加载器
        .getResourceAsStream("diagrams/HelloWorld.zip");  //获取指定文件资源流
        
        ZipInputStream zipInputStream = new ZipInputStream(is);  //实例化zip输入流
        Deployment deployment = processEngine.getRepositoryService()  //获取部署相关的service
                     .createDeployment()  //创建部署
                     .addZipInputStream(zipInputStream)
                     .name("HelloWorldZipDeploy")
                     .deploy();
        
        System.out.println("流程部署Id:"+deployment.getId());
        System.out.println("流程部署名称:"+deployment.getName());
    }

 

----------------------------------------------------modify---------------------------------

流程定义是不可以修改的   当我们需要修改时可以通过更改它的版本号来达到修改的目的   因为流程启动是用的就是通过key启动(即使用最新版本来启动)

 

----------------------------------------------------delete----------------------------------

//通过流程key删除流程部署表中的数据  同时级联的删除其他表中和此流程相关的数据
    @Test
    public void deleteByKey(){   //删除所有key相同的流程定义
        //首先进行查询   通过key查询出相同key的list
        String processDefinitionKey = "HelloWorld2";
        List<ProcessDefinition> pdlist = processEngine.getRepositoryService()
                     .createProcessDefinitionQuery()
                     .processDefinitionKey(processDefinitionKey)
                     .list();
        for(ProcessDefinition pd : pdlist){
            processEngine.getRepositoryService()
                            //要用true 级联删除所有相关的表数据。
                         .deleteDeployment(pd.getDeploymentId(),true);
        }
                    
    }

转载于:https://www.cnblogs.com/blog12345/p/6961794.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值