2015-08-13 91 views
1

我對Drools非常陌生,並且正在探索drools決策表的功能。我已經下載了Drools 6.2.0示例並修改了爲決策表提供的示例。在此我想有被刪除的政策條件,如圖圖像下面規則編譯錯誤Drools動作列,變量無法解析

Decision Table layout

這政策只需要在結果對象,但我得到下面的錯誤。

文本=規則編譯錯誤政策不能得到解決或不是 場

我不知道該怎麼下的第一個動作欄寫盡它的工作,因爲我已經嘗試諸如不同的值政策:政策,政策等

下面是我收到的上述決策表佈局的drl輸出。

// rule values at C10, header at C5 
rule "Pricing bracket_10" 
    when 
     Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == "1") 
    then 
     policy.setBasePrice(450); 
end 

我試圖檢查文檔,但我無法找到任何方法使其工作。請注意,我沒有修改示例源代碼中的任何內容。只有Excel中的決策表佈局纔會更改。

任何指針都會有幫助。

回答

2

您需要將類Policy的對象綁定到變​​量策略。一種可能性是插入一個策略對象,並且有一個模式。在DRL規則應該是這樣的:

rule "Pricing bracket_10" 
when 
    Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == "1") 
    policy: Policy() 
then 
    policy.setBasePrice(450); 
end 

在決策表,你可以使用一個狀態欄,如下所示:

CONDITION 
policy: Policy() 
/*$param*/ 
match a Policy fact 
x 

你會在每一行中需要一個「x」,或加入單元格來處理單個'x'。

+0

我已經在我的代碼庫中有我們從ksession執行規則的地方。我正在使用決策表示例,並且在代碼庫中我沒有做任何機會。我想在這裏實現的是,我想有一個條件輸入的對象,另一個保存結果值。但我不確定在決策表excel中變量是如何工作的。 –

+0

執行代碼看起來像ksession.execute(Arrays.asList(new Object [] {driver,policy}));這裏的驅動程序和策略是相應類型的對象。 –

+0

我已經添加了列的模式以匹配沒有約束的事實。 – laune

相關問題