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);
}
}