文档章节

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

ThinkGem
 ThinkGem
发布于 2016/07/17 16:51
字数 530
阅读 54
收藏 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

粉丝 991
博文 137
码字总数 22174
作品 1
济南
架构师
一个网友对驰骋工作流引擎的经典问答3

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

ccflow
2012/12/26
0
0
ccflow 驰骋工作流引擎的共享任务,应用背景,设置,设计,sdk接口

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

ccflow
2013/09/15
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
101
0
Web信息系统中用户业务通知系统设计

引言 信息化的主要目的就是对信息流的管理,在没有信息传输系统之前,信息的流转靠口头传送、书写传送,口头传送仅能传输少量信息,大量信息传送采用书写文字的方式,种种方式都需费时费力,...

大风起兮
2013/07/05
0
4
RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件Web业务平台

RDIFramework.NET ━ .NET快速信息化系统开发框架 工作流程组件Web业务平台 接前两篇: RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍 RDIFramework.NET ━ .NET快速...

NET快速开发框架
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链100讲:盘点那些常用的加密算法原理

在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 1 对称加密 原理:加密和解密数据使用同一个密钥,适合对大量数据进行加解密 安全性:关键是密钥的保存方式...

HiBlock
26分钟前
0
0
zookeeper基本常识

一、Zookeeper基础知识 1 zookeeper是一个类似hdfs的树形文件结构,zookeeper可以用来保证数据在(zk)集群之间的数据的事务性一致。2 zookeeper有watch事件,是一次性触发的,当watch监视的数...

啃不动地大坚果
31分钟前
0
0
Forrester企业级容器平台权威排行出炉,小初创Rancher缘何成为领导者?

全球著名的调研机构Forrester Research近日发布了《The Forrester New Wave: Enterprise Container Platform Software Suites, Q4 2018》报告,对企业级容器平台(ECP)市场进行全面评估,希...

RancherLabs
34分钟前
0
0
【三 异步HTTP编程】 2. 流式HTTP响应

标准响应及Content-Length头 自HTTP1.1以来,服务器为了在一个链接中处理多个HTTP请求及响应,必须随response一起返回合适的Content-Length值。 默认情况下,对于简单请求你无需返回 Conten...

Landas
今天
0
0
Java后端技术栈,到底如何深入学习?

Java,是现阶段中国互联网公司中,覆盖度最广的研发语言。有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的Java深入学习路线图,以及免费学习资料。 一 。性能...

别打我会飞
今天
2
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部