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,说明该流程实例已经结束了
}
}
JBPM工作流(八)——流程实例(PI)Process Instance的更多相关文章
- JBPM流程实例(PI)Process Instance
/** * 流程实例 * * 启动流程实例 * * 完成任务 * * 查询 * * 查询流程实例 * * 查询任务 * * 查询正在 ...
- JBPM工作流(五)——执行流程实例
概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针,如下图. Execu ...
- JBPM学习(四):执行流程实例
概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针,如下图. Execu ...
- JBPM学习(四):运行流程实例
概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包含了全部执行阶段,当中最典型的属性就是跟踪当前节点的指针,例如以下图. Exe ...
- 工作流学习——Activiti流程实例、任务管理四步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46646565 ***************************************** ...
- jBPM学习之利用API完成流程实例
流程引擎对象ProcessEngine是jBPM4所有的Service API之源.在jBPM4中各种服务相互依存,但所有的Service API都从ProcessEngine中获得,由此可见Proc ...
- JBPM工作流(六)——流程变量
1.启动流程实例 ? 1 2 3 4 5 6 7 // 启动流程实例 @Test public void startProcessInstance() { // 使用指定key的最新版本的流程 ...
- 工作流JBPM_day01:6-执行流程实例
工作流JBPM_day01:6-执行流程实例 执行流程 启动流程实例 查询任务列表 办理任务 向后执行一步 先部署流程定义在启动流程实例 Jbpm4_execution表表示正在执行的流程实例的的信息 ...
- 工作流activiti-03数据查询(流程定义 流程实例 代办任务) 以及个人小练习
在做数据查询的时候通过调用api来查询数据是相当的简单 对分页也进行了封装listPage(0, 4) ;listPage:分页查询 0:表示起始位置,4:表示查询长度 但是公司的框架封装了分页数据 ...
随机推荐
- 第十节:利用async和await简化异步编程模式的几种写法
一. async和await简介 PS:简介 1. async和await这两个关键字是为了简化异步编程模型而诞生的,使的异步编程跟简洁,它本身并不创建新线程,但在该方法内部开启多线程,则另算. 2. ...
- 【汇总目录】Python
跟廖雪峰老师学Python笔记 [2019年03月29日] 匿名函数 [2019年03月25日] 返回函数与闭包 [2019年03月25日] sorted [2019年03月25日] filter [ ...
- day 13 - 1 迭代器
迭代器 首先我们查看下列类型拥有的所有方法(会显示很多) print(dir([])) print(dir({})) print(dir('')) print(dir(range(10))) #求下上 ...
- 🍓JavaScript 对象原型链继承的弊端 🍓
- 软件模拟I2C通讯
I2C协议概述,有相当详细的名词解释: 通信数量受限于地址空间和400Pf总线电容. 所有的数据传输过程中,SDA线的电平变化必须在SCL为低电平时进行,SDA线的电平在SCL线为高电平时要保持稳定. ...
- C#VS2017添加ReportViewer控件
安装完vs2017之后我们进行添加Report Viewer控件: 1. 点击Tools -> Extensions and Updates... 2. 在新窗口搜索栏中输入rdlc后搜索,结果 ...
- Android Camera MSM HAL
高通新的camera驱动架构设计发生了一些变化,借用互联网上常用的一种结构,大致的原理如此:将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口 ...
- Flow Problem
Flow Problem TimeLimit:5000MS MemoryLimit:32768KB 64-bit integer IO format:%I64d Problem Descript ...
- 【原创】大叔经验分享(8)创建hive表时用内部表还是外部表
内部表和外部表最主要的一个差别就是删除表或者删除分区时,底层的文件是否自动删除,内部表会自动删除,外部表不会自动删除,所以基础数据表一定要用外部表,即使误删表或分区之后,还可以很容易的恢复回来. 虽然 ...
- 纯CSS实现垂直居中的几种方法
垂直居中是布局中十分常见的效果之一,为实现良好的兼容性,PC端实现垂直居中的方法一般是通过绝对定位,table-cell,负边距等方法.有了css3,针对移动端的垂直居中就更加多样化. 方法1:tab ...