日期:2014-05-19  浏览次数:20786 次

JBPM4.4的AssignmentHandler怎么实现用户角色动态指定
在流程发布后,需要手动更改任务执行人员,也就是任务的执行人可以由用户在后台通过界面来设置。 不知道什么实现??

------解决方案--------------------
通过 AssignmentHandler 来实现动态设定参与者
import org.apache.commons.lang3.StringUtils;
import org.jbpm.api.model.OpenExecution;
import org.jbpm.api.task.Assignable;
import org.jbpm.api.task.AssignmentHandler;
/**
 * 动态设置 节点 的参与者
 * @author chen
 *
 */
public class SetAssignHandler implements AssignmentHandler{

public void assign(Assignable assignable,
OpenExecution execution) throws Exception {

String isAutoSet = (String) execution.getVariable("isAutoSetAssign");
if("N".equals(isAutoSet)){//回退时的操作
String id = execution.getId();
String destNameAssignee = (String) execution.getVariable("destNameAssignee");
if(StringUtils.isNotEmpty(destNameAssignee)){
execution.setVariable("destNameAssignee", "");

assignable.setAssignee(destNameAssignee);
}
execution.setVariable("isAutoSetAssign", "");
}else{
//动态设计 该节点的参与者

String assignee = (String)execution.getVariable("participation");
if(assignee == null){//针对 法律审批不通过。
assignee = (String)execution.getVariable("owner");
}
assignable.setAssignee(assignee);
}
}

}