2012-03-18 90 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