使用jBpm支持高级用户交互模式
2010-01-21 00:00:00 来源:WEB开发网清单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不直接支持上报,但它提供了2个基本的机制:超时和重新分配(参见上节)。粗一看,实现上报只需将这二者结合即可,但是仔细一想还是存在一些困难:
jBPM实现中的关系并不总是双向的。如,从一个任务节点我们可以找到所有这个节点定义的任务,但是从一个任务,并没有API可以完成找到包含它的任务节点的工作;由某个任务实例,你可以得到一个任务,但是没有由某个任务得到所有实例的API,诸如此类。
更多精彩
赞助商链接