Activti 流程启动,办理,查询个人业务,查询历史任务

package activt001;

import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;

import utils.DbUtils;
/**
 * Execution   执行对象
	 按流程定义的规则执行一次的过程.
	 对应的表:
	 act_ru_execution: 正在执行的信息
	 act_hi_procinst:已经执行完的历史流程实例信息
	 act_hi_actinst:存放历史所有完成的活动
	ProcessInstance  流程实例
 		特指流程从开始到结束的那个最大的执行分支,一个执行的流程中,流程实例只有1个。
	注意
    (1)如果是单例流程,执行对象ID就是流程实例ID
    (2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同
    (3)一个流程中,流程实例只有1个,执行对象可以存在多个。
	Task 任务
	 执行到某任务环节时生成的任务信息。
	 对应的表:
	  act_ru_task:正在执行的任务信息
	  act_hi_taskinst:已经执行完的历史任务信息

 * @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月10日  
*
 */
public class ActivtTest002 {
// 实现流程启动和我的任务查询 
	/**
	 * 启动流程
	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月8日  
	*
	 */
@Test
public void startProcess(){
		// 获得流程引擎
		ProcessEngine process = DbUtils.getProcessEngine();
		// 得到runtimeService
		RuntimeService runtimeService = process.getRuntimeService();
		// 根据流程定义Id启动流程   数据库中  act_re_procdef 表   PROC_DEF_ID_字段的值 "helloworld:3:904"
		ProcessInstance startProcess = runtimeService.startProcessInstanceById("helloworld:3:904");
		System.out.println(startProcess.getId());
	}

/**
 * 查询个人业务根据名查询
* @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月8日  
*
 */
@Test
public void queryMyTask(){
	
	String name ="张三";
			ProcessEngine process = DbUtils.getProcessEngine();
			// 得到TaskService
			TaskService taskService = process.getTaskService();
			// 得到查询对象
			TaskQuery query = taskService.createTaskQuery();
			// 查询当前用户的任务
			List<Task> list = query.taskAssignee(name).list();
			for (Task task : list) {
				System.out.println(task.getAssignee() + "\t" +task.getName());
			}
}
/**
 * 办理业务
* @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月8日  
*
 */
@Test
public  void  doProcess(){
	String  taskId= "1102";
	ProcessEngine process = DbUtils.getProcessEngine();
	// 得到TaskService
	TaskService taskService = process.getTaskService();
	taskService.complete(taskId);
	System.out.println("完成任务");
}
/**
 * 查询流程状态看是否结束 
 * 判断 act_ru_task 中是否有此流程  PROC_INST_ID_ 此字段
* @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月8日  
*
 */
@Test
public  void queryProcess(){
	String  processInstanceId= "1001";  
	ProcessEngine process = DbUtils.getProcessEngine();
	// 得到runtimeService 
	RuntimeService runtimeService = process.getRuntimeService();
	ProcessInstance singleResult = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
	if(singleResult!=null){
		System.out.println(singleResult.getId());
	}
	else{
		System.out.println("已结束");
	}
	
}
/**
 * 查询历史人物  
 * act_hi_actinst  此表  根据  ASSIGNEE_ 字段查询 
* @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月10日  
*
 */
@Test
public  void queryHistory(){
	String taskAssignee="张三";  //  办理人 提交申请 张三   审批李四
	// 使用办理人查询流程实例
	ProcessEngine process = DbUtils.getProcessEngine(); //  获取流程引擎对象
	List<HistoricTaskInstance> list = process.getHistoryService()//  获取历史Service
	.createHistoricTaskInstanceQuery()//创建历史任务查询
	.taskAssignee(taskAssignee)//指定办理人查询历史任务
	.list();
	if(list!=null && list.size()>0){
	 for(HistoricTaskInstance task:list){
	 System.out.println("任务ID:"+task.getId());
	 System.out.println("流程实例ID:"+task.getProcessInstanceId());
	 System.out.println("任务的办理人:"+task.getAssignee());
	 System.out.println("执行对象ID:"+task.getExecutionId());
	 System.out.println(task.getStartTime()+" "+task.getEndTime()+" "+task.getDurationInMillis());
	}
	}

}
/**
 * 根据流程实例ID查询  历史流程实例
 * 表 act_hi_actinst  字段 PROC_INST_ID_
* @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月10日  
*
 */
@Test
public void queryHistoryProcessInstance() throws Exception {
String processInstanceId = "1201";
ProcessEngine process = DbUtils.getProcessEngine(); //  获取流程引擎对象
HistoricProcessInstance hpi = process.getHistoryService()//
    .createHistoricProcessInstanceQuery()//创建历史流程实例查询
    .processInstanceId(processInstanceId)//使用流程实例ID查询
    .singleResult();
System.out.println("流程定义ID:"+hpi.getProcessDefinitionId());
System.out.println("流程实例ID:"+hpi.getId());
System.out.println(hpi.getStartTime()+"    "+hpi.getEndTime()+"        "+hpi.getDurationInMillis());
}



}

猜你喜欢

转载自blog.csdn.net/master_chaoandqi/article/details/80639362