流程模型与业务规则的连接

时间:2012-03-18 12:18:01

标签: drools business-rules bpmn processmodel

我在BPMN2流程模型中集成业务规则时遇到问题。所以我的流程看起来像enter image description here

drl文件只包含一条规则:

 import com.sample.ProcessTest.User;

 rule "AgeCheck"
 ruleflow-group "AgeRules"

 when
     u:User (u.getAge()<17)
 then
     u.setName("Denied");
 end

我的问题是我有两个参数Age,Name,如果我没有使用规则,我可以在网关,脚本进程上传递它们,但是当我使用业务规则任务时,它会在此节点停止。

我从eclipse开始这个过程,

    ksession.startProcess("_New.Process2", params);
    System.out.println("Process started ...");
    ksession.fireAllRules();

我添加了资源,

    kbuilder.add(ResourceFactory.newClassPathResource("Process2.bpmn2"), ResourceType.BPMN2);
    kbuilder.add(ResourceFactory.newClassPathResource("AgeRules.drl"), ResourceType.DRL);

在RuleChecker节点的属性中,rouleflow组设置为AgeRules,当我尝试运行项目时,我有以下结果:

    BEFORE PROCESS NODE TRIGGERED node:RuleChecker[id=5]        process:Process2[id=_New.Process2]
    BEFORE RULEFLOW GROUP ACTIVATED group:AgeRules[size=0]
    AFTER RULEFLOW GROUP ACTIVATED group:AgeRules[size=0]
    AFTER PROCESS NODE TRIGGERED node:RuleChecker[id=5] process:Process2[id=_New.Process2]
    AFTER PROCESS NODE TRIGGERED node:InputUser [id=2] process:Process2[id=_New.Process2]

我不知道究竟是什么问题,因为该过程在rulechecker处停止。 如果有人可以帮助我,请解释我的问题是什么

亲切的问候, Hunor-Attila Kerekes

1 个答案:

答案 0 :(得分:0)

引擎在RuleChecker节点停止是正常的,如审计日志中所示。它只会等到作为规则流组的一部分激活的规则被触发。在您的代码片段中,您似乎正在调用fireAllRules(),您是否也注册了一个议程侦听器,并且您是否看到任何规则触发?或者您是否看到规则的激活或停用?在调用fireAllRules以查看是否有任何规则被激活并触发之前,可​​能需要立即查看Eclipse中的调试视图。