java1234_Activiti_第6講_通常程序員使用的函數

package com.java1234.activiti.flow;

import static org.junit.Assert.*;

import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;

public class StudentLeaveProcess {

	
	/**
	 * 獲取默認流程引擎實例,默認讀取配置文件activiti.cfg.xml
	 */
	private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
	
	
	/**
	 * 1.部署流程定義.
	 */
	//@Test
	public void deployWidthClassPath(){
		
	Deployment deployment=	processEngine.getRepositoryService()// 部署相關service
		.createDeployment()//建立部署對象
		.addClasspathResource("diagrams/StudentLeaveProcess.bpmn")//加載資源文件
		.addClasspathResource("diagrams/StudentLeaveProcess.png") //加載資源圖片
		.name("學生請假流程")//設置名稱
		.deploy();//部署
				
		System.out.println("流程部署Id:"+deployment.getId());
		System.out.println("流程部署Name:"+deployment.getName());
/*
流程部署Id:15001
流程部署Name:學生請假流程	
-------------------		
## 流程部署表
select * from act_re_deployment;

## 流程定義表
select * from act_re_procdef;

## 資源文件表
select * from act_ge_bytearray;		
 */		
	}

	
	
	/**
	 * 2.啓動流程實例
	 */
	@Test
	public void start(){
	  ProcessInstance pi=	processEngine.getRuntimeService() //運行服務
		.startProcessInstanceByKey("studentLeaveProcess"); //數據庫中act_re_procdef的key_字段	  
	  System.out.println("流程實例ID:"+pi.getId());
	  System.out.println("流程定義ID:"+pi.getProcessDefinitionId());//流程定義ID
/*
流程實例ID:17501 ,30001
流程定義ID:studentLeaveProcess:1:15004
 */
	}
	/**
	 * 3.查詢任務
	 *
	 */
	@Test
	public void findTask(){
	List<Task> taskList=	processEngine.getTaskService() //任務服務實例
		.createTaskQuery()//建立任務查詢
		.taskAssignee("王五")// 查詢  張三 ,李四,後歐洲王五
		.list();
	
		for(Task task:taskList){
			// act_ru_task; 字段  裏面的信息
			System.out.println("任務Id:"+task.getId());
			System.out.println("任務Name:"+task.getName());
			System.out.println("任務建立時間:"+task.getCreateTime());
			System.out.println("任務委派人:"+task.getAssignee());
			System.out.println("任務實例ID:"+task.getProcessInstanceId());
		}
	
/*打印結果: 
 
任務Id:17504, 	 30004
任務Name:學生請假申請
任務建立時間:Thu Jul 28 15:24:50 CST 2016
任務委派人:張三
任務實例ID:17501	,30001
 */
	}
	/**
	 * 4.完成任務,讓張三完成任務
	 */
	@Test
	public void completeTask(){
		processEngine.getTaskService()//任務服務器
		.complete("30004");  //使用上面: 任務Id:(17504)
		System.out.println("任務完成!");
	}
	/**
	 * 5.查詢李四的任務,上面有方法
	 */
/** 查詢結果!
任務Id:20002   ,32502
任務Name:班長審批
任務建立時間:Thu Jul 28 15:37:04 CST 2016
任務委派人:李四
任務實例ID:17501,30001
 */
	/**
	 * 6.完成任務,讓李四完成任務
	 */
	@Test
	public void completeTask6(){
		processEngine.getTaskService()//任務服務器
		.complete("32502");  //使用上面: 任務Id:(17504)
		System.out.println("任務完成");
	}
	/**
	 * 7.查詢王五任務, 調用findTask,
	 */
	
/**
任務Id:22502
任務Name:班主任審批
任務建立時間:Thu Jul 28 15:44:36 CST 2016
任務委派人:王五
任務實例ID:17501
 */
	/**
	 * 8.完成任務,讓王五完成任務
	 */
	@Test
	public void completeTask8(){
		processEngine.getTaskService()//任務服務器
		.complete("35002");  //使用上面: 任務Id:(17504)
		System.out.println("任務完成");
	}
	
	
	
	/**
	 * 查詢流程狀體(正在執行Or 已經執行結束)
	 * act_ru_excution 的proc_inst_id字段
	 */
	@Test
	public void processState(){
	 ProcessInstance pi=	processEngine.getRuntimeService()// 獲取運行時的service
		.createProcessInstanceQuery()//建立流程實例查詢
		.processInstanceId("30001")//act_ru_excution 的proc_inst_id字段
		.singleResult();
		
		 if(pi!=null){
			 System.out.println("流程正在執行!");
		 }else{
			 System.out.println("流程已經執行結束!");
			 
		 }
	}
	 
	/**
	 * 歷史任務查詢
	 */
	@Test
	public void historyTaskList(){
		 List<HistoricTaskInstance> list = processEngine.getHistoryService()// 歷史服務器
		.createHistoricTaskInstanceQuery() //歷史任務,是列,查詢
		.processInstanceId("30001")// 流程實例查詢!
		.finished()  //查詢已經完成的
		.list();
		 
		 for(HistoricTaskInstance hti: list){
			 //  select * from act_hi_taskinst;
			 System.out.println("任務Id:"+hti.getId());
			 System.out.println("流程實例Id:"+hti.getProcessInstanceId());
			 System.out.println("任務名稱:"+hti.getName());
			 System.out.println("辦理人:"+hti.getAssignee());
			 System.out.println("開始時間:"+hti.getStartTime());
			 System.out.println("結束時間:"+hti.getEndTime());
			 System.out.println("---------------------");
		 }
		
/*
任務Id:30004
流程實例Id:30001
任務名稱:學生請假申請
辦理人:張三
開始時間:Thu Jul 28 16:14:46 CST 2016
結束時間:Thu Jul 28 16:16:29 CST 2016
---------------------
任務Id:32502
流程實例Id:30001
任務名稱:班長審批
辦理人:李四
開始時間:Thu Jul 28 16:16:29 CST 2016
結束時間:Thu Jul 28 16:20:56 CST 2016
---------------------
任務Id:35002
流程實例Id:30001
任務名稱:班主任審批
辦理人:王五
開始時間:Thu Jul 28 16:20:56 CST 2016
結束時間:Thu Jul 28 16:22:43 CST 2016
--------------------- 
		
 */	
	}
	
	/**
	 * 歷史活動任務查詢
	 */
	@Test
	public void historyActTaskList(){
		 List<HistoricActivityInstance> list = processEngine.getHistoryService()// 歷史服務器
		.createHistoricActivityInstanceQuery() //歷史任務,是列,查詢
		.processInstanceId("30001")// 流程實例查詢!
		.finished()  //查詢已經完成的
		.list();
		 
		 for(HistoricActivityInstance hati: list){
			 //  select * from act_hi_actinst;
			 System.out.println("任務Id:"+hati.getId());
			 System.out.println("流程實例Id:"+hati.getProcessInstanceId());
			 System.out.println("活動名稱:"+hati.getActivityName());
			 System.out.println("辦理人:"+hati.getAssignee());
			 System.out.println("開始時間:"+hati.getStartTime());
			 System.out.println("結束時間:"+hati.getEndTime());
			 System.out.println("---------------------");
		 }
		 
/*
任務Id:30002
流程實例Id:30001
活動名稱:Start
辦理人:null
開始時間:Thu Jul 28 16:14:46 CST 2016
結束時間:Thu Jul 28 16:14:46 CST 2016
---------------------
任務Id:30003
流程實例Id:30001
活動名稱:學生請假申請
辦理人:張三
開始時間:Thu Jul 28 16:14:46 CST 2016
結束時間:Thu Jul 28 16:16:29 CST 2016
---------------------
任務Id:32501
流程實例Id:30001
活動名稱:班長審批
辦理人:李四
開始時間:Thu Jul 28 16:16:29 CST 2016
結束時間:Thu Jul 28 16:20:56 CST 2016
---------------------
任務Id:35001
流程實例Id:30001
活動名稱:班主任審批
辦理人:王五
開始時間:Thu Jul 28 16:20:56 CST 2016
結束時間:Thu Jul 28 16:22:43 CST 2016
---------------------
任務Id:37501
流程實例Id:30001
活動名稱:End
辦理人:null
開始時間:Thu Jul 28 16:22:43 CST 2016
結束時間:Thu Jul 28 16:22:43 CST 2016
---------------------		 
 */
		 
	}
}
相關文章
相關標籤/搜索