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());
}
}
Activti 流程启动,办理,查询个人业务,查询历史任务
猜你喜欢
转载自blog.csdn.net/master_chaoandqi/article/details/80639362
今日推荐
周排行