快速业务通道

使用jBpm支持高级用户交互模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
ID"  column="USERID_" />     <property name="endDate"   column="ENDDATE_" />    </class>   </hibernate-mapping>

清单9 Assignee类的Hibernate映射文件

要让jBPM能够使用我们的自定义任务实例实现,我们还需要提供一个自定义的 任务实例工厂(清单10)。

package com.navteq.jbpm.extensions; import org.jbpm.graph.exe.ExecutionContext; import org.jbpm.taskmgmt.TaskInstanceFactory; import org.jbpm.taskmgmt.exe.TaskInstance; public class AssignableTaskInstanceFactory implements  TaskInstanceFactory {   private static final long serialVersionUID = 1L;   @Override   public TaskInstance createTaskInstance(ExecutionContext  executionContext) {   return new AssignableTaskInstance();   } }

使用jBpm支持高级用户交互模式(6)

时间:2011-07-08 infoq 译:胡键

清单10 自定义的任务实例工厂

最后,为了让jBPM运行时使用正确的任务实例工厂(清单10),还必须创建一 个新的jBPM配置(清单11)。

<jbpm-configuration>    <bean  name="jbpm.task.instance.factory" class="com.navteq.jbpm.extensions.AssignableTaskInstanceFactory"  singleton="true" />   </jbpm-configuration>

清单11 jBPM配置

完成所有这些变更之后(清单1-11),一个典型的任务处理显示如下:

List<String> actorIds = new  LinkedList<String>(); actorIds.add("Peter"); List<TaskInstance> cTasks = jbpmContext.getGroupTaskList (actorIds) TaskInstance cTask = cTasks.get(0); AssignableTaskInstance aTask = (AssignableTaskInstance)cTask; try{   aTask.reserve("Peter");   // Save   jbpmContext.close(); } catch(Exception e){   System.out.println("Task " + cTask.getName() + " is already  reserved");   e.printStackTrace(); }

清单12 处理可分配任务实例

这里,在得到某个用户的任务实例并将其转变成可分配任务实例之后,我们将 试着预留它。一旦预留成功,我们将关闭jBPM运行时以提交事务。

实现任命

JBoss jBPM可以非常轻易的实现手动将任务分配给特定用户。根据jBPM提供的 简单API,可以完成将任务实例从一个任务列表移动到另一个任务列表,因此给某 个用户分配任务相当直接(清单13)

List<String> actorIds = new  LinkedList<String>(); actorIds.add("admins"); String actorID = "admin"; List<TaskInstance> cTasks = jbpmContext.getGroupTaskList (actorIds); TaskInstance cTask = cTasks.get(0); cTask.setPooledActors((Set)null); cTask.setActorId(actorID);

清单13 将任务重新分配给指定用户

jBPM提供了2类不同的API来设置参与者池:一类接收字符串id数组,另一类则 接收id集合。如果要清空一个池,就要使用那个接收集合的API(传入一个null集 合)。

使用jBpm支持高级用户交互模式(7)

时间:2011-07-08 infoq 译:胡键

实现上报

前面已经说过,上报一般被实现为任务的重新分配,并常常附带一个上报已发 生的通知;或是实现成一个任务未及时完成的通知。

实现为重新分配的上报

尽管jBPM不直接支持上报,但它提供了2个基本的机制:超时和重新分配(参 见上节)。粗一看,实现上报只需将这二者结合即可,但是仔细一想还是存在一 些困难:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号