一、实现描述
在条件节点中嵌入条件选择的代码,通过条件计算返回最终的路由,从而实现在工作流的流转中根据计算自动到指定的目标节点。
1、在工作流定义定添加一个条件节点,二个以上的目标节点。
2、连接条件节点到多个目标节点,设置每个路由连线的名称(很重要,代码开发中将引用该名称)
3、设置条件节点的“条件计算JAVA类”。
二、代码示例
import net.business.engine.common.TemplateContext;
import net.jbpm.external.WorkFlowSmartForm;
import net.sysplat.access.Authentication;
import net.sysplat.common.Operator;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
import org.jbpm.graph.node.DecisionHandler;
/**
* 自动控制流程提交的下一个任务节点
*
*/
public class JuesuanDecision implements DecisionHandler
{
public String decide(ExecutionContext executionContext) throws Exception
{
String taskname = "";
Token token = executionContext.getToken();
TemplateContext context = ((WorkFlowSmartForm) token.getAssignment()).getTemplateContext();
Operator user = Authentication.getUserFromSession(context.getRequest());
if(user.isBelongToGroup(8))
{
taskname = "送领导审核";
}
else if (user.isBelongToGroup(25) || user.isBelongToGroup(9))
{
taskname = "送集团负责人审核";
}
else
{
taskname = "送分公司负责人审批";
}
// taskname名称必须是和条件节点相连的目标节点的连线名称
return taskname;
}
}
三、简易条件路由
不用设置条件节点的Java类,点击每个路由连线,属性中显示条件设置,我们可以采用简单的表达式进行处理,如:tian>3,其中tian代表的是表单中的绑定了数据库表字段的表单元素的名称。