文档章节

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

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

粉丝 916
博文 136
码字总数 21994
作品 1
济南
架构师
一个网友对驰骋工作流引擎的经典问答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
101
0
ccflow 驰骋工作流引擎的共享任务,应用背景,设置,设计,sdk接口

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

ccflow
2013/09/15
0
0
RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件Web业务平台

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

NET快速开发框架
2017/11/16
0
0
RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍

RDIFramework.NET ━ .NET快速信息化系统开发框架 工作流程组件介绍 RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 1、RDIFramework....

80368704
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部