文档章节

JBPM3 获得待办列表 1:未接收;2:办理中;3:已办结;4:全部工作

ThinkGem
 ThinkGem
发布于 2016/07/17 16:51
字数 530
阅读 74
收藏 0

这是很早写工作流时写的一个方法,今天正好整理下资料,顺便共享下吧。

/**
  * get all the task instances for a given actor. type 1:未接收;2:办理中;3:已办结;4:全部工作
  */
 public List<TaskInstance> findTaskInstances(String[] actorIds, String type) {
  //结果1
  List result1 = null;
  try {
   String hql = "";
   if ("1".equals(type)) {// 1:未接收
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.TaskInstance as ti "
     + "where ti.actorId in (:actorIds)"
     + " and ti.isSuspended <> 1" + " and ti.isOpen = 1"
     + " and ti.start is null" + " and ti.end is null"
     + " order by ti.id desc";
   } else if ("2".equals(type)) {// 2:办理中
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.TaskInstance as ti "
     + "where ti.actorId in (:actorIds)"
     + " and ti.isSuspended <> 1" + " and ti.isOpen = 1"
     + " and ti.start is not null" + " and ti.end is null"
     + " order by ti.id desc";
   } else if ("3".equals(type)) {// 3:已办结
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.TaskInstance as ti "
     + "where ti.id in ("
     + " select max(t.id) from org.jbpm.taskmgmt.exe.TaskInstance as t"
     + " where t.actorId in (:actorIds) and t.isOpen <> 1"
     + "  and t.start is not null and t.end is not null group by t.processInstance.id)"
     + " order by ti.id desc";
   } else {// 4:全部工作
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.TaskInstance as ti "
     + "where ti.id in ("
     + " select max(t.id) from org.jbpm.taskmgmt.exe.TaskInstance as t"
     + " where t.actorId in (:actorIds) group by t.processInstance.id)"
     + " order by ti.id desc";
   }
   Query query = session.createQuery(hql);
   query.setParameterList("actorIds", actorIds);
   result1 = query.list();
  } catch (Exception e) {
   log.error(e);
   jbpmSession.handleException();
   throw new JbpmException("couldn't get task instances list for actor '" + actorIds + "'", e);
  }
  //结果2
  List result2 = null;
  try {
   String hql = "";
   if ("1".equals(type)) {// 1:未接收
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.PooledActor pa join pa.taskInstances ti "
     + "where pa.actorId in (:actorIds)"
     + " and ti.actorId is null"
     + " and ti.isSuspended <> 1" + " and ti.isOpen = 1"
     + " and ti.start is null" + " and ti.end is null"
     + " order by ti.id desc";
   } else if ("2".equals(type)) {// 2:办理中
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.PooledActor pa join pa.taskInstances ti "
     + "where pa.actorId in (:actorIds)"
     + " and ti.actorId is null"
     + " and ti.isSuspended <> 1" + " and ti.isOpen = 1"
     + " and ti.start is not null" + " and ti.end is null"
     + " order by ti.id desc";
   } else if ("3".equals(type)) {// 3:已办结
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.TaskInstance as ti "
     + "where ti.id in ( select max(t.id)"
     + " from org.jbpm.taskmgmt.exe.PooledActor pa join pa.taskInstances t"
     + " where pa.actorId in (:actorIds) and t.actorId is null and t.isOpen <> 1"
     + "  and t.start is not null and t.end is not null group by t.processInstance.id"
     + " )order by ti.id desc";
   } else {// 4:全部工作
    hql = "select distinct ti "
     + "from org.jbpm.taskmgmt.exe.TaskInstance as ti "
     + "where ti.id in ( select max(t.id)"
     + " from org.jbpm.taskmgmt.exe.PooledActor pa join pa.taskInstances t"
     + " where pa.actorId in (:actorIds) and t.actorId is null group by t.processInstance.id"
     + " )order by ti.id desc";
   }
   Query query = session.createQuery(hql);
   query.setParameterList("actorIds", actorIds);
   result2 = query.list();
  } catch (Exception e) {
   log.error(e);
   jbpmSession.handleException();
   throw new JbpmException("couldn't get pooled task instances list for actor '" + actorIds + "'", e);
  }
  //合并结果
  Set set = new HashSet();
  set.addAll(result1);
  set.addAll(result2);
  return new ArrayList(set);
 }
 

 

本文转载自:http://thinkgem.iteye.com/blog/724150

共有 人打赏支持
ThinkGem

ThinkGem

粉丝 1105
博文 138
码字总数 24109
作品 2
济南
架构师
私信 提问
一个网友对驰骋工作流引擎的经典问答3

谢谢各位前辈回答. 以下针对ccflow 5.0 3680版本来讲 我在文档中看到,ccflow的标准SDK开发方式是通过复制若干文件,将ccflow项目与业务项目合并为一个项目.而我觉得这种方式耦合度较大,想将c...

ccflow
2012/12/26
0
0
openjweb1.8新增工作流引擎介绍

OpenJWeb 1.8工作流设计 Openjweb开发团队 联系人:王先生 手机:13651070328 QQ:29803446 Msn:baozhengw999@hotmail.com Email:baozhengw@163.com 2009-11-23 说明:因文档中图片较多,需要看...

迷途d书童
2012/03/09
132
0
ccflow 驰骋工作流引擎的共享任务,应用背景,设置,设计,sdk接口

ccflow 驰骋工作流引擎的共享任务,应用背景,设置,设计,sdk接口 -------------------------------------------------------------------   在以前的版本中,如果多人处理一个工作,ccflo...

ccflow
2013/09/15
0
0
对方反馈04-23

1、 所有列表表头点击可以自动排序; 3、 企业入库时,企业信息输入不完整,提示信息后,页面会刷新一下,此时会把单位类型刷新成审计局,请保留已经选好的单位类型; 4、 超级管理员登录系统...

peter_shen
2015/04/23
6
0
H3 BPM V10.0 产品更新日志

一、功能 1、H3 BPM产品全新推出J2EE版本,支持Linux环境部署 2、移动端支持与钉钉集成:组织机构同步、消息推送、钉钉免登BPM 3、简化了原有的组织结构 现有结构:组织、用户、角色、组 原有...

lwl_BPM
2017/06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部