JBPM入门系列文章:
JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件
JBPM4入门——4.封装流程管理的工具类(JbpmUtil)
——————————————华丽分割线————————————————
1.画流程图:decision02.jpdl.xml 并指定decision的handler class 的值:指向一个handler类
当程序走到decision这个节点后。会通过一个处理程序的类来进行业务逻辑的判断:com.test.handler.Demohandler
而不用再用三目运算符来进行复杂的判断、
如果判断条件简单(就两个条件)就直接用三目运算符
如果判断条件通过一个流程变量能判断的话也可以直接在后台中判断。
如果判断条件比较复杂的话就用handler:通过一个处理程序的类来专门做判断流程走向的处理
2.写handler类来处理该流程实例
package com.test.handler; import org.jbpm.api.jpdl.DecisionHandler;
import org.jbpm.api.model.OpenExecution; public class Demohandler implements DecisionHandler{ @Override
public String decide(OpenExecution execution) {
Integer score = (Integer) execution.getVariable("score");
if(score > 0 && score < 25 ){
return "to 菜鸟";
}else if(score >= 25 && score < 50){
return "to 程序猿";
}else if(score >= 50 && score < 75){
return "to 攻城狮";
}else if(score >= 75 && score < 100){
return "to 牛人";
}
return null;
} }
以上handler会获取score这个流程变量的值。来进行逻辑处理的判断
3.写测试类
package com.test.test; import java.util.HashMap;
import java.util.Map;
import com.test.util.JbpmOprations;
import com.test.util.JbpmUtil; public class Decision02Test { public static void main(String[] args) {
//发布流程定义
JbpmOprations.deploy("jpdl/decision02.jpdl.xml"); //放置流程变量
Map<String,Object> varMap = new HashMap<String,Object>();
varMap.put("score", 99); //启动该流程实例
JbpmUtil.getExecutionService()
.startProcessInstanceByKey("decision02",varMap);
}
}
以上测试代码执行后:score为99、根据常理会执行到牛人的那条线
执行完后查看后台数据库表的信息: