Jbpm4提供两个接口可以获取该用户的待处理任务,
一个是个人的任务:
taskService.findPersonalTasks(userId)
另一个是取得该用户对应的候选任务:
taskService.findGroupTasks(userId)
有时我们需要在一个列表中显示该任务的所有任务,包括他的个人任务,候选任务,这时直接用jbpm4提供的api完成不了该功能要求。
于是可以使用以下方式进行扩展:
/**
* 取得用户的对应的任务列表
* @param userId
* @return
*/
public List<TaskImpl> getTasksByUserId(String userId){
AppUser user=(AppUser)getHibernateTemplate().load(AppUser.class, new Long(userId));
Iterator<AppRole> rolesIt=user.getRoles().iterator();
StringBuffer groupIds=new StringBuffer();
int i=0;
while(rolesIt.hasNext()){
if(i>0)groupIds.append(",");
groupIds.append("'"+rolesIt.next().getRoleId().toString()+"'");
}
/**
* select * from `jbpm4_task` task
left join jbpm4_participation pt on task.`DBID_`=pt.`TASK_`
where task.`ASSIGNEE_`='1' or ( pt.`TYPE_` = 'candidate' and (pt.`USERID_`='1')
or pt.`GROUPID_`in ('1'))
*/
StringBuffer hqlSb=new StringBuffer();
hqlSb.append("select task from org.jbpm.pvm.internal.task.TaskImpl task left join task.participations pt where task.assignee=?");
hqlSb.append(" or (pt.type = 'candidate' and ((pt.userId=?)");
if(user.getRoles().size()>0){
hqlSb.append(" or (pt.groupId in ("+groupIds.toString()+"))");
}
hqlSb.append("))");
hqlSb.append(" order by task.priority desc");
return findByHql(hqlSb.toString(), new Object[]{userId,userId});
}
这样非常方便可以取得用户的待处理的任务,对于候选的任务,用户可以申请执行。
分享到:
相关推荐
jbpm_adapter.jar文件是针对jbpm的扩展,它的主要目标是简化jbpm的使用,尤其是针对任务管理和流程监控方面。通过这个扩展包,用户可以更方便地获取并操作流程实例中的各项列表,例如待办、已办、办结、已阅和未阅等...
jbpm的扩展源代码意味着开发者对原始jbpm框架进行了自定义开发,以满足特定业务需求或增强其功能。让我们深入探讨jbpm的核心概念、扩展方式以及可能涉及的源代码内容。 首先,jbpm提供了流程建模工具,支持BPMN 2.0...
首先,我们来看"我发起的任务"这个部分。在jbpm中,用户可以发起一个新的流程实例,这通常涉及到创建一个工作流的起点。发起任务意味着启动了一个新的业务流程,这个流程可能涉及到多个部门或者人员的协作。用户可以...
JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...
jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程实例(ProcessInstance)、工作项(WorkItem)等的表结构和字段。这些信息对于开发者来说至关重要,...
MySQL和PostgreSQL作为成熟的开源关系型数据库,提供了更好的扩展性、稳定性和安全性,是企业级应用的理想选择。 **1. 配置MySQL** (1) 安装与配置MySQL:确保已经安装了MySQL服务器,并创建一个用于JBPM的新...
本文将深入探讨如何在JOffice2中实现JBPM4任务的回退功能,这在处理复杂流程时尤其重要,允许用户纠正错误或根据需要调整流程方向。 任务回退在JOffice2中有两种主要的实现方式: 1. **完成当前任务并生成新的后退...
jBPM的核心设计理念是灵活性与可扩展性,其目标是在不同的业务环境中为用户提供高效、稳定的流程管理解决方案。 #### 二、选择jBPM的十大理由 1. **嵌入式的工作流引擎**:jBPM采用嵌入式设计,这意味着它可以作为...
jbPM 3.2是该系统的一个版本,它提供了丰富的功能,包括流程设计、执行、监控以及优化,为企业构建灵活且可扩展的业务流程解决方案。 ### 一、jbPM 3.2 环境配置 在开始jbPM 3.2的开发之前,你需要配置好相应的...
jbpm-3.1.2.zip 文件包含了 jBpm 的一个重要版本——jBpm 3.1.2,这是一个开源的工作流管理系统,专为构建灵活且可扩展的业务流程解决方案而设计。jBpm 提供了一种方式,使得开发者能够用简单而强大的语言来表达业务...
在这个"我写的一个jbpm实例"中,我们将深入探讨jbpm的核心概念和实现步骤。 1. **jbpm简介** jbpm是基于Java的BPM(Business Process Management)解决方案,支持BPMN 2.0标准,使得流程模型更加直观易懂。jbpm...
jbpm jbpm4.3.jar DDDDDDDD
特别是在版本4.4中,JBPM提供了强大的灵活性和扩展性,使得开发者能够根据实际需求动态调整工作流程。本文将详细介绍如何在JBPM 4.4中实现动态设置参与人数的功能,这对于提高业务流程的灵活性和适应性具有重要意义...
jbpm 的数据库表设计旨在提供一个灵活、可扩展的流程管理系统,能够满足各种业务流程的需求。了解 jbpm 的数据库表结构能够帮助开发者更好地理解和使用 jbpm,实现更加复杂的业务流程管理系统。
4. **任务管理**:jBPM中的任务服务允许用户交互地处理流程中的任务,包括任务的分配、领取、完成以及查询。 5. **事件处理**:系统能够监听并响应各种事件,如流程实例的开始、结束、异常等,以便进行相应的处理。...
2. 任务服务:JBPM提供了任务服务,用于管理流程中的任务,如任务创建、分配、完成和查询等。 3. 决策服务:通过与Drools(一个规则引擎)集成,JBPM可以实现基于规则的决策节点,动态调整流程路径。 四、流程监控 ...
jbpm任务分配管理是BPM(业务流程管理)框架jbpm中的一个重要组成部分,它涉及到如何在流程执行过程中将任务分配给合适的参与者。jbpm是一个开源的Java库,用于建模、执行和管理业务流程,而任务分配是流程执行的...
6. **任务管理**:JBPM提供了任务服务,允许用户进行任务查询、领取、完成等操作。在Struts视图层,可以展示待办任务列表,用户交互后触发任务状态的变化。 7. **监控与优化**:JBPM提供了丰富的监控功能,如流程...
5. 自定义扩展:jbpm允许开发者通过插件和扩展点自定义流程行为,满足特定业务需求。 四、学习资源与实践 "JBPM用户指南.doc"文档是jbpm的重要参考资料,它详细介绍了如何使用jbpm进行流程设计、部署、执行以及...
jbpm项目始于2004年,旨在提供一个开源、轻量级、灵活且可扩展的平台,使开发人员能够更有效地构建和管理复杂的业务流程。 jbpm 4.4是该框架的一个重要版本,它在先前版本的基础上进行了许多改进和增强。以下是jbpm...