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});
}
这样非常方便可以取得用户的待处理的任务,对于候选的任务,用户可以申请执行。
分享到:
相关推荐
jBPM5设计时考虑到了灵活性和可扩展性,允许开发者通过插件机制轻松地扩展其功能。无论是集成外部系统、添加新的行为逻辑还是自定义任务界面,jBPM5都能提供强大的支持。 #### 集成与服务编排 jBPM5与JBoss企业...
最后,**JBPM_(4)_Platform.ppt**可能探讨JBPM平台的扩展性和生态系统: 1. **社区与支持**:JBPM的社区活跃度,以及获取帮助和参与贡献的方式。 2. **企业服务总线(ESB)集成**:如何将JBPM集成到ESB中,实现服务...
### JBPM开发手册和开发指南:深度解析与应用实践 #### 概述 JBPM(JBOSS Business ...无论是对于初学者还是资深开发者,JBPM都提供了丰富的学习资源和实践指南,助力他们在业务流程管理和自动化领域取得成功。
作为工作流的核心,jBPM在IT行业中占据着举足轻重的地位,尤其在那些需要高度自动化、灵活性以及可扩展性的企业级应用中。要想在工作流领域取得深入理解和应用,掌握jBPM是必经之路。 #### 核心功能与特点 jBPM...
在jBPM中,你可以创建各种元素,如开始事件、结束事件、任务、网关、事件捕获等,通过这些元素构建出完整的业务流程图。流程定义文件通常以XML格式存储,扩展名为`.bpmn20.xml`,它们描述了流程的行为和规则。 二、...
- **Servlets**:运行于服务器端的小程序,用于扩展Web服务器的功能,例如处理客户端请求和生成动态网页。 - **JavaScript**:一种广泛用于客户端和服务器端开发的脚本语言。 - **JQuery**:一个流行的JavaScript...