2015-04-22 176 views
0

我正在尋找一種方法來對我的drl文件中的規則進行分類,並確定觸發了哪些規則類別/類別。Drools規則分類

我看到的Drools的Guvnor文檔中有一些關於分類http://docs.jboss.org/drools/release/5.2.0.Final/drools-guvnor-docs/html/ch03.html#d0e228。然而,我不清楚這是由Guvnor維護的元數據,還是它是drl文件/規則執行的一部分。我一直無法找到其中提到的類別的示例DRL文件。而且,這是一種確定被解僱規則類別/類別的方法。

我知道激活組但這並不太適合我的需要,因爲激活組中一旦規則觸發該組中的其他規則不被評估。

謝謝

+0

你是如何創作你的規則?的Guvnor?編輯? – laune

+0

我不使用Guvnor。日食/編輯 – shikarishambu

回答

1

對規則進行分類的最好方法是通過元數據進行分類。元數據條目添加到規則:

rule metademo 
    @meta2(123) 
    @meta3(foo ) 
    @meta4("foo") 
when...then...end 

您通過規則訪問元數據,從一個包或某些事件獲得:

for(Rule rule: kPackage.getRules()){ 
    Map<String,Object> key2meta = rule.getMetaData(); 
    for(Map.Entry<String,Object> entry: key2meta.entrySet()){ 
     System.out.print(" @" + entry.getKey() + "("); 
     Object value = entry.getValue(); 
     System.out.print("[" + value.getClass().getSimpleName() + "] " 
          + value.toString()); 
     System.out.println(") "); 
    } 
} 

輸出:

@meta2([Integer] 123) 
@meta4([String] foo) 
@meta3([String] foo) 

有允許Google地圖作爲價值的計劃,因此您可能會使用

@meta7(foo = "foo", bar = "bar") 

這在5.5中不起作用,我再也沒有嘗試過。