您的位置:首页 > 其它

activiti学习--05流程实例:部署流程定义+部署流程定义+查询当前人的个人任务+完成我的任务

2017-09-05 22:53 615 查看
流程实例的一些表

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:已经执行完的历史任务信息


部署流程定义

/**部署流程定义*/
@Test
public void deploymentProcessDefinition1(){
InputStream inputStreamBpmn = this.getClass().getResourceAsStream("askForLeave.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream("askForLeave.png");
Deployment deployment = processEngine.getRepositoryService()// 与流程定义和部署对象相关的Service
.createDeployment()// 创建一个部署对象
.name("请假申请流程定义")// 添加部署的名称
.addInputStream("askForLeave.bpmn", inputStreamBpmn)
.addInputStream("askForLeave.png", inputStreamPng)
.deploy();// 完成部署
System.out.println("部署ID:"+deployment.getId());
System.out.println("部署名称:"+deployment.getName());
System.out.println("部署时间:"+deployment.getDeploymentTime());
//        输出:
//        部署ID:1301
//        部署名称:请假申请流程定义
//        部署时间:Tue Sep 05 22:02:46 CST 2017
}


启动流程实例

@Test
public void startProcessInstance(){
//流程定义的key.,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
String processDefinitionKey = "askForLeave";
ProcessInstance pi = processEngine.getRuntimeService()//与正在执行的流程实例和执行对象相关的Service
.startProcessInstanceByKey(processDefinitionKey);//使用流程定义的key启动流程实例,
System.out.println("流程实例ID:"+pi.getId());//
System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//
//      输出:
//      流程实例ID:1401
//      流程定义ID:askForLeave:8:1304
}


影响的表

ACT_RE_PROCDEF:流程定义表



ACT_RU_TASK(只有节点为UserTask该表才会有数据):正在执行的任务表



ACT_RU_EXECUTION:正在执行的执行对象表



ACT_HI_PROCINST:流程实例历史表



ACT_HI_TASKINST(只有节点为UserTask该表才会有数据):任务历史表



ACT_HI_ACTINST:所有活动的历史表



注意:PROC_INST_ID_为流程实例id

查询当前人的个人任务

/**查询当前人的个人任务*/
@Test
public void findMyPersonalTask(){
String assignee = "小黄";
List<Task> list = processEngine.getTaskService()//与正在执行的任务管理相关的Service
.createTaskQuery()//创建任务查询对象
/**查询条件(where部分)*/
.taskAssignee(assignee)//指定个人任务查询,指定办理人
//                      .taskCandidateUser(candidateUser)//组任务的办理人查询
//                      .processDefinitionId(processDefinitionId)//使用流程定义ID查询
//                      .processInstanceId(processInstanceId)//使用流程实例ID查询
//                      .executionId(executionId)//使用执行对象ID查询
/**排序*/
.orderByTaskCreateTime().asc()//使用创建时间的升序排列
/**返回结果集*/
//                      .singleResult()//返回惟一结果集
//                      .count()//返回结果集的数量
//                      .listPage(firstResult, maxResults);//分页查询
.list();//返回列表
if(list!=null && list.size()>0){
System.out.println("--关联表:  ACT_RU_TASK----");
for(Task task:list){
System.out.println("--------"+task.getAssignee()+"任务:"+task.getName()+"-----------------");
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
System.out.println("执行对象ID:"+task.getExecutionId());
System.out.println("流程定义ID:"+task.getProcessDefinitionId());
}
}

}

输出:
--关联表:  ACT_RU_TASK----
--------小黄任务:请假申请-----------------
任务ID:1404
任务名称:请假申请
任务的创建时间:Tue Sep 05 22:09:10 CST 2017
任务的办理人:小黄
流程实例ID:1401
执行对象ID:1401
流程定义ID:askForLeave:8:1304


完成我的任务

/**完成我的任务*/
@Test
public void completeMyPersonalTask(){
//任务ID
String taskId = "1404";
processEngine.getTaskService()//与正在执行的任务管理相关的Service
.complete(taskId);
System.out.println("完成任务:任务ID:"+taskId);
//      输出:
//      完成任务:任务ID:1404
}


影响的表:

ACT_HI_ACTINST:所有活动的历史表
有变化

ACT_HI_TASKINST(只有节点为UserTask该表才会有数据):任务历史表
小黄记录:结束时间变为有数据
添加陈经理的任务记录

ACT_HI_PROCINST:流程实例历史表
没有变化

ACT_RU_EXECUTION:正在执行的执行对象表
act_id 改变(下一节点的id)

ACT_RU_TASK(只有节点为UserTask该表才会有数据):正在执行的任务表
名称和代理人变了(变为下一人任务节点的名称和代理人)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐