JBPM工作流(八)——流程实例(PI)Process Instance
/**
* 流程实例
* * 启动流程实例
* * 完成任务
* * 查询
* * 查询流程实例
* * 查询任务
* * 查询正在执行的任务
* * 查询所有的正在执行的任务
* * 根据任务的执行人查询正在执行的任务
* * 根据executionId查询正在执行的任务
* * 根据piid查询正在执行的任务
* * 根据pdid查询正在执行的任务
* * 根据taskid查询任务 taskService.getTask(String taskId);和其他的查询不一样
* * 查询已经完成的任务
* * 查询所有的
* * 根据任务的执行人
* * 根据executionID
* * .......
* * 结束流程实例
* @author Administrator
*
*/
public class PITest extends BaseJbpm{
/**
* 涉及到的表
* * JBPM4_EXECUTION
* * 表示当前正在执行的流程实例
* * 字段
* DBID_:主键
* ID_:流程实例ID
* ACTIVITYNAME_:当前流程实例活跃的节点
* PROCDEFID_:流程定义ID
* * JBPM4_HIST_PROCINST
* * 表示历史的流程实例,但是当前正在运行的流程实例也在这里
* * 字段
* DBID_:主键
* ID_:流程实例ID
* START_:整个流程实例的开始时间
* END_:流程实例的结束时间,如果该流程实例为当前正在运行的流程则,该值为空
* STATE:表示流程实例的状态 如果是正在运行,为active 如果流程实例结束 为ended
* * JBPM4_TASK
* * 表示当前正在执行的任务
* 说明:任务是jbpm流程图的一个节点
* * 字段
* DBID_:主键、任务ID
* NAME_:任务名称
* ASSIGNEE_:任务的执行人
* * JBPM4_HIST_TASK
* * 表示历史的任务,但是当前正在执行的任务也在这里
* * 字段
* STATE_:如果一个任务被完成以后,值为completed
* end_:任务的结束时间有值了
* * JBPM4_HIST_ACTINST
* * 表示历史的节点
* * 字段
* TYPE_:节点类型
* 说明:
* * 当启动流程实例的时候,会自动的离开开始节点,流向下一个节点
* * jbpm4_task为临时表,当当前的任务完成以后,该数据就被删除了
*/
@Test
public void testStartPIByPDID(){
ProcessInstance pi= processEngine.getExecutionService().startProcessInstanceById("qingjia1-1");
System.out.println(pi.getId());
System.out.println(pi.getState());
}
/**
* 根据pdkey启动流程实例,是该key下,最高版本
*/
@Test
public void testStartPIByPDKEY(){
processEngine.getExecutionService()
.startProcessInstanceByKey("qingjia1");
}
/**
* 完成任务
*/
@Test
public void testFinishTask(){
processEngine.getTaskService()
.completeTask("60002");
}
/**
* 查询所有的流程实例
*/
@Test
public void testQueryAllPI(){
List<ProcessInstance> piList = processEngine.getExecutionService()
.createProcessInstanceQuery()
// /.processDefinitionId("")//可以根据pdid查询流程实例,很多个
.list();
for(ProcessInstance pi:piList){
/**
* 可以查询piid,pdid,state等
*/
System.err.println();
System.err.print("instanceID"+pi.getId());
System.err.print("\t\t\tinstanceKEY"+pi.getKey());
System.err.print("\t\t\tinstanceNAME"+pi.getName());
System.err.println("\t\t\tinstanceSTATE"+pi.getState());
}
}
/**
* 查询所有的正在执行的任务
*/
@Test
public void testQueryAllTask(){
List<Task> taskList = processEngine.getTaskService()
.createTaskQuery()
// .processDefinitionId("")
.list();
for(Task task:taskList){
System.out.println("assignee:"+task.getAssignee());
System.out.println("name:"+task.getName());
System.out.println("createtime:"+task.getCreateTime());
}
}
/**
* 可以根据任务的执行人查询当前正在执行的任务
* 可以根据pdid查询当前正在执行的任务
*/
@Test
public void testQueryTaskByPDID(){
List<Task> taskList = processEngine.getTaskService()
.createTaskQuery()
.processDefinitionId("qingjia1-4")
.list();
System.out.println(taskList.size());
}
/**
* Execution
* * 如果不存在并发的情况,那么exection和process instance是一样的
* * 如果存在并发的情况,execution代表分支,process instance代表主线
* * 根据executionID查询任务,有唯一的一个
*/
@Test
public void testQueryTaskByTaskID(){
Task task = processEngine.getTaskService()
.getTask("60002");
System.out.println(task.getName());
}
/**
* 查询已经完成的所有的任务
*/
@Test
public void testQueryAllHistTask(){
List<HistoryTask> histTaskList = processEngine.getHistoryService()
.createHistoryTaskQuery()
//.assignee("") 可以根据任务的执行人查询已经完成的任务
//.executionId("")可以根据executionID查询已经完成的任务
.state("completed")
.list();
for(HistoryTask histTask:histTaskList){
System.out.println(histTask.getEndTime());
System.out.println(histTask.getAssignee());
}
}
/**
* 直接结束流程实例
*/
@Test
public void testEndPI(){
processEngine.getExecutionService()
.endProcessInstance("qingjia1.20001", "error");
}
/**
* 根据 piid查询流程实例,如果查询出来的结果为null,说明该流程实例已经结束了
*/
@Test
public void testIsEndPI(){
ProcessInstance pi = processEngine.getExecutionService()
.createProcessInstanceQuery()
.processInstanceId("qingjia1.60001")
.uniqueResult();
System.out.println(pi);//如果该值为null,说明该流程实例已经结束了
}
}
转载于:https://www.cnblogs.com/HHR-SUN/p/7236491.html
JBPM工作流(八)——流程实例(PI)Process Instance相关推荐
- 《Activiti/Flowable 深入BPM工作流》-流程实例怎么实现挂起?
<Activiti/Flowable 深入BPM工作流>-流程实例怎么实现挂起? 一. 问题 1. 什么情况要进行流程的挂起? 2. 具体怎么将流程挂起? 二. 详情 1. 什么情况 ...
- Activiti——工作流之流程实例、任务的执行(五)
转自:http://profound-accumulation.iteye.com/blog/2244881 一.流程图 二.部署流程定义 /**部署请假流程(从zip)*/ @Test publ ...
- (经验总结)flowable工作流_01_流程实例管理
文章目录 一.流程定义管理功能有哪些? 二.删除流程实例会删除哪些表中的数据? 三.流程实例做什么用? 四.流程定义涉及的表 一.流程定义管理功能有哪些? 类名:ApiFlowableProcessI ...
- 宅急送 项目第八天 JBPM工作流框架
项目第八天和项目第九天 学习 JBPM 理论部分 项目第十天 权限管理模块 项目第十一天 项目第十二天 JBPM 应用 1. 工作流框架概述 1.1. 什么是工作流 工作流(Workflow),就是& ...
- JBPM工作流引擎内核设计思想及构架
1 前言 流程引擎内核仅是"满足Process基本运行"的最微小结构,而整个引擎则要复杂很多,包括"状态存储"."事件处理"."组 ...
- 【activiti】流程实例
流程实例 1.什么是流程实例 **流程实例(ProcessInstance)**代表流程定义的执行实例. 一个流程实例包含了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等信息. 例如: ...
- 删除activiti的流程实例报错Process instance is still running, cannot delete historic process instance
historyService.deleteHistoricProcessInstance(processInstanceId);用这句代码删除还没结束的流程实例时报错. 方案:http://www.y ...
- 工作流学习——Activiti流程实例、任务管理四步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46646565 ***************************************** ...
- JAVAWEB开发之工作流详解(二)——Activiti核心API的使用(流程定义和流程实例的管理、流程变量、监听器...)以及与Spring的集成
管理流程定义 设计流程定义文档 bpmn文件 设置方式可以直接使用插件图形化界面进行设置 为某任务节点指定任务执行者 保存后的BPMN文件可以使用XML编辑器打开 BPMN 2.0根节点是defini ...
- 系列学习 SpringBoot + Activiti7 工作流之第 3 篇 —— 【进阶篇】流程实例、个人任务
查看之前的博客可以点击顶部的[分类专栏] 流程实例 1.什么是流程实例 一个流程实例包括了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等信息.例如:用户或程序按照流程定义内容发起一个流 ...
最新文章
- oracle 进入gdsctl,oracle的分析函数over 及开窗函数[转]
- Android Studio 设置主题及字体
- 数据库系统概论第五版 课后习题答案王珊
- 声卡接口Line in、Line out、Mic in和Speak out
- 美团外卖自动化业务运维系统建设
- win10如何调整计算机时间同步,win10电脑时间与Internet同步的设置方法
- 商空间的理解(Quotient space)
- Microsoft edge升级之后收藏夹内容丢失_等了这么久,Edge 终于成为我的默认浏览器...
- Spring源码杂集
- JavaScript 教程,很好的!
- Godot Engine:格斗游戏中的必杀技(大招/绝招/特殊技/Special Move )输入系统实现
- 技术真好玩第一期(2019-11-01)
- KMP算法求next数组
- 网易七鱼(杭州)招聘前端
- swift版QQ音乐播放器(二)
- SpringBoot配置全局的异常捕获
- 哈尔滨太平机场哪个停车场离t2近,哈市太平机场停车怎么收费
- vue2.x使用jodit富文本编辑器,并配置自定义字体和中文
- jitsi-meet开源视频会议详细讲解用法
- 在线安装 docker