我在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]
我不知道究竟是什么问题,因为该过程在rulechecker处停止。 如果有人可以帮助我,请解释我的问题是什么
亲切的问候, Hunor-Attila Kerekes
答案 0 :(得分:0)
引擎在RuleChecker节点停止是正常的,如审计日志中所示。它只会等到作为规则流组的一部分激活的规则被触发。在您的代码片段中,您似乎正在调用fireAllRules(),您是否也注册了一个议程侦听器,并且您是否看到任何规则触发?或者您是否看到规则的激活或停用?在调用fireAllRules以查看是否有任何规则被激活并触发之前,可能需要立即查看Eclipse中的调试视图。