使用jBpm支持高级用户交互模式
2010-01-21 00:00:00 来源:WEB开发网超时不是发生在任务自身,而是发生在任务节点上。由于某个节点可以关联多个任务,并且jBPM关系实现并不是双向的(见上),因此要跟踪当前任务实例就需要其他的支持手段。
以重新分配实现的上报的整个实现涉及3个处理器:
负责给任务分配参与者的分配处理器。这个处理器跟踪它是一个首次任务调用还是一个上报任务调用。清单14给出了一个分配处理器的例子。
package com.sample.action;
import org.jbpm.graph.def.Node;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.taskmgmt.def.AssignmentHandler;
import org.jbpm.taskmgmt.exe.Assignable;
public class EscalationAssignmentHandler implements AssignmentHandler {
private static final long serialVersionUID = 1L;
@Override
public void assign(Assignable assignable, ExecutionContext context)
throws Exception {
Node task = context.getToken().getNode();
if(task != null){
String tName = task.getName();
String vName = tName + "escLevel";
Long escLevel = (Long)context.getVariable(vName);
if(escLevel == null){
// First time through
assignable.setActorId("admin");
}
else{
// Escalate
assignable.setActorId("bob");
}
}
}
}
更多精彩
赞助商链接