2012-03-18 67 views
0

我在集成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 

我的问题是,我有两个参数年龄,姓名,如果我不使用规则,我可以通过他们网关,脚本进程,但是当我使用业务规则任务时,它停在此节点上。

我开始从蚀过程中,

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); 

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

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 - 阿拉·凯雷克斯

回答

0

这是正常现象,发动机将停止在RuleChecker节点,如图审计日志。它会一直等到作为规则流组的一部分激活的规则被触发。在你的代码片段中,你似乎在调用fireAllRules(),你是否注册了一个议程监听器,并且你看到任何规则发射?或者你看到规则的激活或停用?在调用fireAllRules查看是否有任何规则被激活和触发之前,可​​能需要立即查看Eclipse中的调试视图。

+0

非常感谢您的回答,您的问题使我更快地找到解决方案,将此代码部分添加到我的示例中:'new Thread(new Runnable(){ public void run(){ ksession.fireUntilHalt ); } })。start();' \t \t \t \t \t ksession.startProcess( “_ New.Process2”,则params);” – 2012-03-19 01:10:46