jbpm4中已有获取待指定用户处理的任务的方法,如下:
-
processEngine.getTaskService().findPersonalTasks(用户ID);
-
processEngine.getTaskService().findGroupTasks(用户ID);
也可以自己写HQL通过hibernate来将个人任务和分组任务一起查询:
-
select
task
from
org.jbpm.pvm.internal.task.TaskImpl task
left
join
task.participations
-
pt where
(task.assignee=
'用户ID'
or
( task.assignee
is
null
and
pt.type =
'candidate'
-
and
((pt.userId=
'用户ID'
)
or
(pt.groupId
in
(
'分组1'
,
'分组2'
,
'分组3'
)))))
其中用户ID和分组等参数可以通过?方式来传入。
然而如果系统中有多种业务用到jbpm工作流的话(比如OA中有请假、出差、公文收发等),jbpm4自带的两个方法是获取到的是所有业务的任务,而无
法获得每个任务对应的是哪个业务,当然也有偏门的方法,比如通过task中的getExecutionId来判断对应的哪个业务(可以看下附加信息)。
这样任务对应的业务还是好获取到,系统中一般会将不同业务的任务设置成不同的模块,并且一般获取任务时还需要附带一些对应的业务信息,比如请假任务能看
到请假人、请假天数等信息,这些信息在我们通过上面的方法中获取到的任务List中是获取不到的,我们得想办法将这些信息同任务一起展现出来。
对于这个问题我之前用了一个很别扭的方法,就是先获取到待处理的任务,然后循环去查询每个任务对应的业务信息,最后把任务和业务信息封装在一起,存入List中返回,这样每一次要经过很多的查询,性能大大下降,如果要通过条件查询或者分页等需求就又很麻烦了。
后来无意间又想到一个方法(知道用HQL查询任务的方法后),何不在这个HQL上再改一下,把业务的表也关联进来,那样不就一次查询就将任务和业务记录绑定起来了,这样通过业务信息进行条件查询、分页查询都很好解决了。
另外在最近做的一个功能中接触到了优先级这个东东,用于在任务列表中按优先级排序,jbpm4的表中本来有PRIORITY_这个字段,但我没找到合适的方法给它设值,所以我就直接将优先级直接放入业务表中了,正好这个优先级的问题也解决了。
由于我这项目本身用的框架没用hibernate,所以最终还是直接用SQL来获取待处理任务了,最终的SQL大致如下:
-
select
it.*,jt.DBID_
as
task_id,jt.NAME_
as
task_name
from
itsm_task it
left
join
-
jbpm4_task jt on
it.execution_id = jt.EXECUTION_ID_
left
join
jbpm4_participation
-
jp on
jt.DBID_ = jp.TASK_
where
it.status<3
and
(jt.ASSIGNEE_ =
'admin'
or
-
(jt.ASSIGNEE_ is
null
and
jp.TYPE_ =
'candidate'
and
((jp.USERID_ =
'admin'
)
or
-
(jp.GROUPID_ in
(
'TECH_UNCERTAIN'
,
'UNCERTAIN_EMPLOYEE'
,
'TECH_EMPLOYEE'
,
'admin'
)))))
-
group
by
jt.DBID_
附:
executionService().startProcessInstanceByKey(流程KEY,业务KEY);
在启动流程时可以指定一个业务的KEY,比如:
executionService().startProcessInstanceByKey('INCIDENT','IN0001');
'INCIDENT'是流程定义的KEY,'IN0001'是业务的KEY,这样启动流程创建的Execution的ID则为'INCIDENT-IN0001',如果没有指定业务KEY,则jbpm会默认将Execution的主键(DBID_字段)作为业务KEY。
分享到:
相关推荐
JBPM4.4之HelloWorld示例
jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载
【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)jbpm4.4完成任务查看任务当前节点【】(07)jbpm4.4 资源...
jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
jbpm4.4下载地址
jBPM4.4开发指南 开发手册 JBPM4.4 开发
jBPM4.4入门开发实例
jbpm4.4开发指南,jbpm4.4用户指南
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
jBPM4.4课程文档
JBPM4.4学习文档.ppt
jbpm4.4+ssh配置
终于把jbpm4.4上传完了,由于csdn最大容量才50m,所以我把这个jar包分成三个部分。
jBPM4.4数据库表简单介绍
jbpm4.4 ibatis-spring 整合
jBPM 4.4开发指南,翻译官方文档 JBoss jBPM Teams
jbpm4.4整合s2sh 请假流程例子
jBPM 4.4 用户手册 中文版 PDF格式
jBPM4.4工作流开发指南