ProcessDefinition(流程定義) : 用於描述流程規則相關的信息。
package com.liuzm.activiti.day1;
import java.io.File;
import java.io.InputStream;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
// ProcessDefinition(流程定義) : 用於描述流程規則相關的信息。
public class ProcessDefinationTest {
//獲取核心對象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 1.部署流程
@Test
public void deployProcess() throws Exception {
//獲取倉庫服務對象
RepositoryService repositoryService = processEngine.getRepositoryService();
//通過服務創建一個發佈配置對象
DeploymentBuilder builder = repositoryService.createDeployment();
//做配置
builder.name("請假流程")
.addClasspathResource("qingjia2.bpmn")
.addClasspathResource("qingjia2.png");
//發佈
builder.deploy();
}
// 2.查看流程定義信息
@Test
public void queryProcessDefination() throws Exception {
//獲取倉庫服務對象
RepositoryService repositoryService = processEngine.getRepositoryService();
//創建查詢對象
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
//添加查詢條件
String processDefinitionKey = "myProcess";
query
.processDefinitionKey(processDefinitionKey )
.orderByProcessDefinitionVersion().desc();
//調用list()方法查詢
List<ProcessDefinition> list = query.list();
//遍歷查詢結果
for (ProcessDefinition pd : list) {
System.out.println("id:"+pd.getId()+",name:"+pd.getName()+",key:"+pd.getKey()+",version:"+pd.getVersion());
}
}
// 3.刪除部署
@Test
public void deleteProcess() throws Exception {
//獲取倉庫服務對象
RepositoryService repositoryService = processEngine.getRepositoryService();
//刪除指定的流程
String deploymentId = "1";
repositoryService.deleteDeployment(deploymentId,true);//級聯刪除,慎用
//調用上邊的查看流程信息方法,看是否刪除成功
this.queryProcessDefination();
}
// 4.查看規則流程圖
@Test
public void viewImage() throws Exception {
//獲取倉庫服務對象
RepositoryService repositoryService = processEngine.getRepositoryService();
//獲取圖片
String processDefinitionId = "myProcess:2:304";
InputStream inputStream = repositoryService.getProcessDiagram(processDefinitionId );
//將二進制流的圖片輸出到磁盤
FileUtils.copyInputStreamToFile(inputStream, new File("F:\\2.png"));
}
}
RepositoryService是Activiti的倉庫服務類。所謂的倉庫指流程定義文檔的兩個文件:bpmn文件和流程圖片。