1

我在 BPMN2 流程模型中集成业务规则时遇到问题。所以我的过程看起来像这样在此处输入图像描述

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]

我不知道究竟是什么问题,因为该过程在规则检查器处停止。如果有人可以帮我解决这个问题,请解释一下是什么问题

亲切的问候, Hunor-Attila Kerekes

4

1 回答 1

0

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

于 2012-03-18T22:53:01.440 回答