流程实例


  1 package com.kite.pi;
2
3 import java.util.List;
4
5 import org.jbpm.api.Configuration;
6 import org.jbpm.api.ProcessInstance;
7 import org.jbpm.api.history.HistoryTask;
8 import org.jbpm.api.task.Task;
9 import org.junit.Test;
10 /**
11 * 流程实例
12 * * 启动流程实例
13 * * 完成任务
14 * * 查询
15 * * 查询流程实例
16 * * 查询任务
17 * * 查询正在执行的任务
18 * * 查询所有政治啊执行的任务
19 * * 根据任务的执行人查询正在执行的任务
20 * * 根据executionid查询正在执行的任务
21 * * 根据piid查询正在执行的任务
22 * * 根据pdid查询正在执行的任务
23 * * 根据taskid查询任务 taskService.getTask(string taskid) 和其他的查询不一样
24 * * 查询已经完成的任务
25 * * 查询所有的
26 * * 根据任务的执行人
27 * * 根据executionid
28 * * ....
29 * * 结束流程实例
30 * @author admin
31 *
32 */
33 public class PITest {
34
35 /**
36 * 涉及到的表
37 * JBPM4_EXECUTION
38 * * 表示当前正在执行的流程实例
39 * * 字段
40 * DBID_:主键
41 * ID_:流程实例ID
42 * ACTIVITYNAME_:当前流程实例活跃的节点
43 * PROCDEFID_:流程定义ID
44 * JBPM4_HIST_PROCINST
45 * * 表示历史的流程实例,但是当前正在运行的流程实例也在这里
46 * * 字段
47 * DBID_:主键
48 * ID_:流程实例ID
49 * START_:整个流程实例的开始时间
50 * END_:流程实例的结束时间,如果该流程实例为当前正在运行的流程则,该值为空
51 * STATE:表示流程实例的状态 如果是正在运行,为active 如果流程实例结束 为ended
52 * JBPM4_TASK
53 * * 表示当前正在执行的任务
54 * 说明:任务是jbpm流程图的一个节点
55 * * 字段
56 * DBID_:主键、任务ID
57 * NAME_:任务名称
58 * ASSIGNEE_:任务的执行人
59 * JBPM4_HIST_TASK
60 * * 表示历史的任务,但是当前正在执行的任务也在这里
61 * * 字段
62 * STATE_:如果一个任务被完成以后,值为completed
63 * end_:任务的结束时间有值了
64 * JBPM4_HIST_ACTINST
65 * * 表示历史的节点
66 * * 字段
67 * TYPE_:节点类型
68 * ------------------------------------------------------------------------------
69 * 说明:
70 * * 当启动流程实例的时候,会自动的离开开始节点,流向下一个节点
71 * * jbpm4_task为临时表,当当前的任务完成以后,该数据就被删除了
72 */
73
74 /**
75 * 根据pdid启动流程实例
76 */
77 @Test
78 public void testStartPIByPDID(){
79 ProcessInstance processInstance = Configuration.getProcessEngine().getExecutionService()
80 .startProcessInstanceById("qingjia1-1");
81 System.out.println(processInstance.getId());
82 System.out.println(processInstance.getState());
83 }
84
85 /**
86 * 根据pdkey启动流程实例,是该key下,最高版本
87 */
88 @Test
89 public void testStartPIByPDKEY(){
90 ProcessInstance processInstance = Configuration.getProcessEngine().getExecutionService()
91 .startProcessInstanceByKey("qingjia1");
92 System.out.println(processInstance.getId());
93 System.out.println(processInstance.getState());
94 }
95
96 /**
97 * 完成任务 当完成任务执行完成以后会走向下一个任务流程
98 */
99 @Test
100 public void testFinishTask(){
101 Configuration.getProcessEngine().getTaskService()
102 .completeTask("60001");
103 }
104
105
106 /**

107 * 查询所有的流程实例
108 */
109 @Test
110 public void testQueryAllPI(){
111 List<ProcessInstance> pIList = Configuration.getProcessEngine().getExecutionService()
112 .createProcessInstanceQuery().list();
113
114 for(ProcessInstance processInstance : pIList){
115 System.out.print(processInstance.getId() + ",");
116 System.out.println(processInstance.getState() );
117 }
118 }
119
120 /**
121 * 查询正在执行的任务
122 */
123 @Test
124 public void testQueryAllTask(){
125 List<Task> taskList = Configuration.getProcessEngine().getTaskService()
126 .createTaskQuery()
127 .list();
128 for(Task task : taskList){
129 System.out.println("执行人:" + task.getAssignee());
130 System.out.println("当前执行任务的名称:" + task.getName());
131 System.out.println("任务创建时间:" + task.getCreateTime());
132 }
133 }
134
135 /**
136 * 可以根据任务的执行人查询当前正在执行的任务
137 * 可以根据pdid查询当前正在执行的任务
138 */
139 @Test
140 public void testQueryTaskPDID(){
141 /*Task task = Configuration.getProcessEngine().getTaskService()
142 .createTaskQuery()
143 .assignee("李四").uniqueResult();
144 */
145 List<Task> taskList = Configuration.getProcessEngine().getTaskService()
146 .createTaskQuery().processDefinitionId("qingjia-1").list();
147
148
149 for(Task task : taskList){
150 System.out.println("执行人:" + task.getAssignee());
151 System.out.println("当前执行任务的名称:" + task.getName());
152 System.out.println("任务创建时间:" + task.getCreateTime());
153
154 }
155 }
156 /**
157 * excution
158 * *如果存在并发的情况,那么execution和process instance 是一样的
159 * *如果存在并发的情况,execution代表分支,processinstance代表主线
160 * *根据executionid查询任务,有唯一的一个
161 */
162 /**
163 * 根据taskid查询任务
164 */
165 @Test
166 public void testQueryTaskByID(){
167 Task task = Configuration.getProcessEngine()
168 .getTaskService()
169 .getTask("60002");
170
171 System.out.println(task.getId());
172 System.out.println("执行人:" + task.getAssignee());
173 System.out.println("当前执行任务的名称:" + task.getName());
174 System.out.println("任务创建时间:" + task.getCreateTime());
175
176 }
177
178 /**
179 * 查询已经完成的所有任务
180 */
181 @Test
182 public void testQueryAllHistTask(){
183 List<HistoryTask> historyTaskLisTasks = Configuration.getProcessEngine()
184 .getHistoryService()
185 .createHistoryTaskQuery()
186 //.executionId("") 可以根据 executionid查询已经完成的任务
187 //.assignee("") 可以根据执行人进行查询
188 .state("completed") //根据状态进行查询
189 .list();
190
191 for(HistoryTask historyTask : historyTaskLisTasks){
192 System.out.println(historyTask.getId());
193 System.out.println(historyTask.getEndTime());
194 }
195 }
196
197 /**
198 * 直接结束实例
199 */
200 @Test
201 public void testEndPI(){
202 Configuration.getProcessEngine().getExecutionService()
203 .endProcessInstance("qingjia.30001", "error");
204 }
205 }

流程实例,码迷,mamicode.com

时间: 2024-10-18 11:29:05

流程实例的相关文章

JBPM工作流(八)——流程实例(PI)Process Instance

/** * 流程实例 *    *  启动流程实例 *    *  完成任务 *    *  查询 *      *  查询流程实例 *      *  查询任务 *          *  查询正在执行的任务 *            *  查询所有的正在执行的任务 *            *  根据任务的执行人查询正在执行的任务 *            *  根据executionId查询正在执行的任务 *            *  根据piid查询正在执行的任务 *         

工作流笔记第三天_流程实例

0.流程实例的表 -- 流程实例,执行对象,任务-- 1.解析.bpmn后得到的流程定义规则的信息,工作流系统就是按照流程定义的规则执行的.select * FROM act_ru_execution; -- 正在执行的执行对象表 select * FROM act_hi_procinst; -- 流程实例的历史表select * FROM act_ru_task; -- 正在执行的任务表(只有节点是UserTask的时候,该表中存在数据)select * FROM act_hi_taskins

BOS项目 第11天(activiti工作流第三天,流程实例管理、项目中的用户和角色同步到activiti的用户和组表、设计物流配送流程、启动物流配送流程、组任务操作(查询、拾取)、个人任务操作(查询、办理))

BOS项目笔记 第11天 今天内容安排: 1.流程实例管理(查询.查看运行状态) 2.将bos系统中的用户和角色同步到activiti的用户和组表 3.设计物流配送流程 4.启动物流配送流程 5.组任务操作(查询.拾取) 6.个人任务操作(查询.办理) 1. 流程实例管理 1.1 查询流程实例列表 第一步:创建一个流程实例管理Action,提供list方法,查询流程实例列表数据 第二步:配置struts.xml 第三步:提供processinstance.jsp页面,展示列表数据 <s:iter

JBPM学习(四):执行流程实例

1.创建表空间 create tablespace TEST logging datafile 'e:\app\administrator\oradata\orcl\TEST.dbf' size 100M autoextend on next 100M maxsize 4096M extent management local; 2.创建用户并指定表空间 create use testuser identified by password default tablespace TEST temp

JBPM流程实例(PI)Process Instance

/** * 流程实例 *    *  启动流程实例 *    *  完成任务 *    *  查询 *      *  查询流程实例 *      *  查询任务 *          *  查询正在执行的任务 *            *  查询所有的正在执行的任务 *            *  根据任务的执行人查询正在执行的任务 *            *  根据executionId查询正在执行的任务 *            *  根据piid查询正在执行的任务 *         

Activiti工作流学习(二)流程实例、执行对象、任务

一.前言 前面说明了基本的流程部署.定义,启动流程实例等基本操作,下面我们继续来学习流程实例.执行对象.任务. 二.流程实例.执行对象说明 整个Activiti的生命周期经过了如下的几个步骤: 1.流程部署 --->  2.启动流程实例 --- > 3.执行流程对象(一个流程实例包含多执行对象) ---> 4.完成整个流程 说明: 三.例子演示   1.完成我的任务     2.查询流程状态(判断流程正在执行,还是结束) 3.查询历史任务  4.流程实例.执行对象.任务  四.对应数据库

JBPM学习(四):运行流程实例

概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包含了全部执行阶段,当中最典型的属性就是跟踪当前节点的指针,例如以下图. Execution,运行:普通情况下,一个流程实例是一个运行树的根节点. 使用树状结构的原因在于, 这一概念仅仅有一条运行路径, 使用起来更简单.业务API不须要了解流程实例和运行之间功能的差别.因此,API里仅仅有一个运行类型来引用流程实例和运行. 如果汇款和存档能够同一时候运行.那么主流程实例就包括了

工作流学习——Activiti流程实例、任务管理四步曲

一.前言 上一篇文章中我们将Activiti流程定义管理的知识进行了介绍,这篇文章我们继续Activiti流程实例和任务管理的学习. 二.正文 流程实例(ProcessInstance ) 流程实例(ProcessInstance)和上一篇文章中流程定义(ProcessDefinition)的关系,与类和实例对象的关系有点像,ProcessDefinition是整个流程步骤的说明而ProcessInstance就是指流程定义从开始到结束的那个最大的执行路线. 执行对象(Execution) 提到

Activiti流程实例管理

1.启动流程 /** * 1 启动流程 * 当流程到达一个节点时,会在act_ru_execution表中产生1条数据 * 如果当前节点是用户任务节点,这时会在act_ru_task表中产生1条数据(任务的办理人,任务的创建时间) */ @Test public void startProcess() throws Exception { /** * v1 myProcess:2:604 * v2 myProcess:3:704 */ // runtimeService.startProcess