2016-01-04 42 views
1

我想從XML閱讀規則使用drools 6.3。我試圖找到一些例子,但我沒有發現任何有價值的東西,只是一個將xml轉換爲drl的例子,這不起作用,因爲我使用的是更新版本的drools ...閱讀規則從XML在Drools 6.3

我轉換了drl例子生成通過蝕刻到XML並取而代之的是這個XML。它看起來像這樣:

<?xml version="1.0" encoding="UTF-8"?> 
<package name="com.sample" xmlns="http://drools.org/drools-5.2" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/drools-5.2 drools.org/drools-5.2.xsd"> 
    <import name="com.sample.DroolsTest.Message"/> 
    <rule name="Hello World"> 
     <lhs> 
      <pattern identifier="m" object-type="Message"> 
       <expr> 
        status == Message.HELLO 
       </expr> 
       <expr> 
        myMessage : message 
       </expr> 
      </pattern> 
     </lhs> 
     <rhs> 
      System.out.println(myMessage); 
      m.setMessage(&quot;Goodbye cruel world&quot;); 
      m.setStatus(Message.GOODBYE); 
      update(m); 
     </rhs> 
    </rule> 
    <rule name="GoodBye"> 
     <lhs> 
      <pattern object-type="Message"> 
       <expr> 
        status == Message.GOODBYE 
       </expr> 
       <expr> 
        myMessage : message 
       </expr> 
      </pattern> 
     </lhs> 
     <rhs> 
      System.out.println(myMessage); 
     </rhs> 
    </rule> 
</package> 

眼下DRL加載這樣的:

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

但是,這不加載XML文件。

是否有任何示例如何加載xml?我必須將其轉換爲drl嗎?

回答

0

用於DRL的XML版本的開發已經在幾個版本前正式終止,大約5.2,IIRC。 DRL已經發展成爲一種非常複雜的語言,保持XML相應的最新版本已經變成了一個相當大的但是非常努力的工作。

此外,出於顯而易見的原因,向供應商獨立的Rule-ML(對於DRL的子集)的轉換不是供應商急切追求的。

從你的問題中不明顯你爲什麼對XML中的規則創作感興趣。如果您添加了問題背景,可能會提供更多幫助。

+0

感謝您的見解。我想根據自定義GUI中的用戶輸入生成規則,然後將規則發送到將根據這些規則評估數據的服務器。我認爲xml比drl更容易生成。現在我正在嘗試使用「Fluent」API(不確定這個名字),所以在java中創建規則,這將爲我創建drl。到目前爲止,它的工作,但我沒有找到它的用法的很多例子,所以我在未來恐怕有一些障礙。 – Wlad

+0

這是正確的選擇。 「流利」API--儘管不是「穩定」API的一部分 - 應該足夠全面和準確地達到您的預期目的。 – laune