`
thinkgem
  • 浏览: 586045 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多

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

/**
  * 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);
 }
 

 

分享到:
评论
1 楼 xiao_2008 2010-11-04  
你好,请问下你是用的jbpm3的那个版本的,我用的是Jbpm3.1.2 ,我看了下源代码实体TaskInstance 里面没有processInstance这个属性。所以group by t.processInstance.id  这句hql要报错。谢谢!

相关推荐

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jBPM请假工作流,很全的任务列表

    在"jBPM请假工作流"中,我们可以看到一个全面的任务列表,这个列表涵盖了请假流程中的各个阶段,使得整个请假过程变得规范、高效。 1. **我要请假**: 这是流程的起点,员工通过jBPM发起请假申请。用户在系统中填写...

    jbpm扩展包(jbpm_adapter.jar)

    通过这个扩展包,用户可以更方便地获取并操作流程实例中的各项列表,例如待办、已办、办结、已阅和未阅等任务状态。 1. **待办任务管理**: 待办任务是尚未分配给任何人或者分配给当前用户但尚未处理的任务。jbpm_...

    jBPM4工作流应用开发指南.pdf

    - **jBPM4:** jBPM4 是一款轻量级的工作流管理系统,支持业务流程的建模、执行、监控和管理。它采用了一种基于Java的流程定义语言(jPDL),以及适合复杂和动态业务流程的图形化流程编辑器。 - **开发指南:** 该...

    jbpm3中文文档.rar

    jbpm3是一款基于Java的企业级工作流管理系统,它主要用于实现业务流程自动化,提供了一套完整的工作流解决方案。这个“jbpm3中文文档.rar”压缩包包含了一份关于jbpm3的中文指南,对于学习和理解jbpm3的功能、设计...

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    JBPM工作原理及表结构详解

    本文将深入探讨JBPM的工作原理、表结构及其在实际操作中的应用。 1. **JBPM特色** - **灵活的建模**:JBPM支持BPMN 2.0标准,允许用户通过图形化界面设计复杂的工作流程。 - **持久化存储**:JBPM将流程实例和...

    JBPM4 常用表结构及其说明

    ### JBPM4 常用表结构及其说明 JBPM4是JBPM(Java Business Process Model)的一个版本,主要用于提供业务流程管理的功能。它通过一组数据库表来支持工作流的执行与跟踪。本文将详细介绍JBPM4中的常用表结构及其...

    JBPM4 表 详细介绍

    ### JBPM4 表结构详解 JBPM (JBoss Business Process Management) 是一款开源的工作流管理系统,被广泛应用于业务流程管理领域。JBPM4作为其一个版本,具有丰富的功能及特性,尤其在流程管理和任务分配方面表现突出...

    JBPM4 开发文档 实例 流程

    JBPM4(Java Business Process Management 4)是一个轻量级的开源工作流管理系统,基于J2EE架构,旨在帮助开发者实现复杂的业务流程自动化。该项目于2004年10月18日发布2.0版本,并随后成为JBoss企业中间件平台的一...

    jbpm工作流整合

    6. **任务管理**:jbpm会生成待办任务,可以通过任务服务进行查询、领取和完成。可以自定义任务监听器和工作流事件处理。 7. **监控和审计**:jbpm提供了历史服务,记录流程实例的运行情况,便于分析和优化流程。...

    jbpm4.3-src.zip

    jbpm4.3-src.zip是一个包含jbpm 4.3版本源代码的压缩包,对于开发者来说,这是一个宝贵的资源,可以深入理解jbpm的工作原理,从而更好地利用它进行业务流程管理(BPM)系统的开发和定制。jbpm是一个开源的工作流管理...

    JBPM工作流详解

    ### JBPM工作流详解 #### 一、工作流基础与概念 **工作流**(Workflow)是指业务过程的部分或整体在计算机应用环境下的自动化。它主要用于实现文档、信息或任务在多个参与者之间的自动传递,以达成某个特定的业务...

    jbpm4基本jar包

    【jbpm4基本jar包】是企业级工作流管理系统Jboss Business Process Management Suite(简称jbpm)的一个核心组件集合。jbpm4是一个开源的工作流程管理框架,它提供了强大的业务流程建模、执行和监控能力,使得开发...

    JBPM3学习笔记

    1. **工作流(Workflow)**:JBPM3允许用户通过WSDL(Web服务描述语言)或BPEL(Business Process Execution Language)定义工作流,支持复杂的流程逻辑和决策点。 2. **任务(Task)**:任务是工作流中的基本单元,...

    jBPM3 2 3数据库表说明 pdf

    本文将详细介绍jBPM3.2.3版本中涉及到的关键数据库表及其字段,帮助读者更好地理解jBPM的工作原理及数据库存储机制。 #### 二、关键数据库表说明 ##### 2.1 JBPM_PROCESSDEFINITION:流程模版表 - **ID_**:流程...

    jbpm中文指南(包括3和4的)

    4. **持久化**:jbpm3支持JPA(Java Persistence API)进行持久化,可以将流程实例和相关数据存储到数据库中,方便后续查询和恢复。 5. **API与服务**:jbpm3提供了丰富的Java API,以及基于HTTP的服务接口,允许...

    jbpm jbpm3 jbpm4 用户和开发指南+教程+最佳实践全套

    jbpm是Java Business Process Management(Java业务流程管理)的缩写,它是一个开源的工作流管理系统,主要用于企业级应用中处理业务流程的自动化。jbpm3和jbpm4是该系统的两个重要版本,提供了丰富的功能来支持流程...

    一个简单的Jbpm4项目源码

    3. **任务分配**: 流程实例中的任务被分配给用户或角色,可以通过查询服务获取待办任务列表。 4. **任务处理**: 用户通过前端界面完成任务,服务类处理任务完成的事件,更新流程实例状态。 5. **流程监控**: 使用...

    JBPM工作流介绍ppt

    10. **工作列表**:参与者可以看到待处理任务的列表,如待办事项。 处理JBPM流程的基本步骤包括: 1. **加载(发布)流程定义**:使用Eclipse Designer等工具创建ProcessDefinition,并加载到应用中,定义可以存储...

Global site tag (gtag.js) - Google Analytics