activiti流程定義

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文件和流程圖片。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章