2015-08-28 31 views
0

我必須啓動不同的類與單獨的DRL文件Drools。開始與單獨的DRL文件Drools

我的第一個代碼如下所示:

KieServices ks = KieServices.Factory.get(); 
       KieContainer kContainer = ks.getKieClasspathContainer(); 
       KieSession kSession = kContainer.newKieSession("ksession-rules"); 

for (AccessA access : listA) { 
        FactHandle fh = kSession.insert(access); 

        kSession.fireAllRules(1); 
        kSession.delete(fh); 
       } 

裏有規則的文件夾來輔助系列某些DRL文件 - 存取時

我怎麼能火的特殊訪問這些單獨的規則?

回答

1

你有兩個選擇 - 但看到最後一段。

首先:爲四個「訪問」類別中的每一個創建單獨的知識庫和單獨的會話。

第二:將四個類別的規則分爲四個不同的議程組,並在插入事實之前設置焦點。

但是,由於來自四個類別的事實是四個不同類別的對象AccessA,AccessB,AccessC和AccessD,所以沒有理由過度規劃這個規則庫。模式將反映類名,因此當插入類AccessA的事實時,B,C和D的規則不會被激活。

+0

謝謝!我怎樣才能插入一個類的事實?我只用上面的代碼開始,我遇到了問題,因爲該對象匹配來自不同drl文件的不同規則。我添加了一些代碼,指定必要的drl文件? –

+0

如果我使用議程組,我必須添加以下代碼。它是否正確?議程議程= ksession.getAgenda(); (「AccessA」).setFocus(); –

+1

我瞭解你的AccessA,-B,-C,-D是不同的Java類。如果您沒有*不同* Java類的事實,則必須使用議程組。 - 是的,它是getAgenda + getAgendaGroup + setFocus。 – laune

相關問題