JAVA代碼:
package com.activiti.study.helloworld;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test;
public class b_ProcessDefinition {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
@Test
public void testDeploymentProcessDefinition(){
//得到倉庫對象Service
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("activitiStudy")
//起始位置不要增加/
.addClasspathResource("diagrams/MyProcess.bpmn")
.addClasspathResource("diagrams/MyProcess.png")
.deploy();
System.out.println("Name: " + deployment.getName());
System.out.println("Id: " + deployment.getId());
}
/**
* 從zip文件創建存儲流程定義
*/
@Test
public void testDeploymentProcessDefinition_zip(){
InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip"); //反斜槓
ZipInputStream paramZipInputStream = new ZipInputStream(in);
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("zipDe")
.addZipInputStream(paramZipInputStream)
.deploy();
System.out.println("Name: " + deployment.getName());
System.out.println("Id: " + deployment.getId());
}
/**
* 查詢流程定義
*/
@Test
public void testQueryProcessDefinition(){
ProcessDefinitionQuery processDefinitionQuery = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.deploymentId("701");
System.out.println(processDefinitionQuery.orderByDeploymentId().desc().list());;
}
/**
* 啓動流程
*/
@Test
public void testStartProcess(){
ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("helloworld");
System.out.println("Id: " + processInstance.getActivityId());
System.out.println("BussinessKey: " + processInstance.getBusinessKey());
}
/**
* 刪除流程定義
*/
@Test
public void testDeleteProcessDefinition_inRunTime(){
processEngine.getRuntimeService().startProcessInstanceByKey("helloworld");
//不能刪除啓動的流程 會拋出異常
processEngine.getRepositoryService().deleteDeployment("701");
}
@Test
public void testDeleteProcessDefinition_Cascade(){
processEngine.getRuntimeService().startProcessInstanceByKey("helloworld");
//不能刪除啓動的流程 會拋出異常
processEngine.getRepositoryService().deleteDeployment("701",true);
}
/**
* 查詢最新流程定義
*/
@Test
public void testFindLastestVersionProcessDefination(){
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.orderByProcessDefinitionVersion()
.asc().list();
//放入Map 中
Map<String,ProcessDefinition> map = new LinkedHashMap<>();
for(ProcessDefinition pd: list){
map.put(pd.getKey(), pd);
}
List<ProcessDefinition> pdList = new ArrayList<ProcessDefinition>(map.values());
System.out.println("===========================");
for(ProcessDefinition pd : pdList){
System.out.println(pd.getDeploymentId());
}
System.out.println("===========================");
}
}