`
man1900
  • 浏览: 434594 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

扩展JBPM取得我的任务

    博客分类:
  • JBPM
阅读更多

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 Developer Guide

    jBPM5设计时考虑到了灵活性和可扩展性,允许开发者通过插件机制轻松地扩展其功能。无论是集成外部系统、添加新的行为逻辑还是自定义任务界面,jBPM5都能提供强大的支持。 #### 集成与服务编排 jBPM5与JBoss企业...

    JBPM工作流引擎课件

    最后,**JBPM_(4)_Platform.ppt**可能探讨JBPM平台的扩展性和生态系统: 1. **社区与支持**:JBPM的社区活跃度,以及获取帮助和参与贡献的方式。 2. **企业服务总线(ESB)集成**:如何将JBPM集成到ESB中,实现服务...

    JBPM开发手册和开发指南

    ### JBPM开发手册和开发指南:深度解析与应用实践 #### 概述 JBPM(JBOSS Business ...无论是对于初学者还是资深开发者,JBPM都提供了丰富的学习资源和实践指南,助力他们在业务流程管理和自动化领域取得成功。

    jbpm-工作流核心

    作为工作流的核心,jBPM在IT行业中占据着举足轻重的地位,尤其在那些需要高度自动化、灵活性以及可扩展性的企业级应用中。要想在工作流领域取得深入理解和应用,掌握jBPM是必经之路。 #### 核心功能与特点 jBPM...

    jbmp入门教程,jBPM流程定义语言,业务日历,流程建模

    在jBPM中,你可以创建各种元素,如开始事件、结束事件、任务、网关、事件捕获等,通过这些元素构建出完整的业务流程图。流程定义文件通常以XML格式存储,扩展名为`.bpmn20.xml`,它们描述了流程的行为和规则。 二、...

    Java软件工程师的求职简历模板.docx编程资料

    - **Servlets**:运行于服务器端的小程序,用于扩展Web服务器的功能,例如处理客户端请求和生成动态网页。 - **JavaScript**:一种广泛用于客户端和服务器端开发的脚本语言。 - **JQuery**:一个流行的JavaScript...

Global site tag (gtag.js) - Google Analytics