2013-10-09 36 views
1

如果我嘗試一個簡單的日期類型Drools規則,並使用條件OR(||),我得到以下錯誤。如果我將||更改爲&&,它工作正常。這是一個錯誤,已知限制或我的規則有什麼問題嗎? 我使用Drools的5.5.0最終Drools日期強制和條件或

規則文件

package net.madhura.drools.rules 

import net.madhura.drools.DateContainer; 

dialect "mvel" 

rule "Test rule" 
when 
    $container: DateContainer(
     date >= "15-Oct-2013" || date <= "01-Oct-2013" 
    ) 
then 
    System.out.println("working"); 
end 

DateContainer類

package net.madhura.drools; 

import java.util.Date; 

public class DateContainer { 

    private Date date; 

    public DateContainer(Date date) { 
     this.date = date; 
    } 

    public Date getDate() { 
     return date; 
    } 

    public void setDate(Date date) { 
     this.date = date; 
    } 
} 

錯誤

Unable to Analyse Expression date >= "15-Oct-2013" || date <= "01-Oct-2013": 
[Error: Comparison operation requires compatible types. Found class java.util.Date and class java.lang.String] 
[Near : {... date >= "15-Oct-2013" || date <= "01-Oct-2013" ....}] 
              ^
[Line: 9, Column: 1] : [Rule name='Test rule'] 
+0

錯誤說你不能比較日期和字符串,沒有關於OR運算符。你在比較兩個Date實例時是否嘗試過OR? – kaskelotti

+0

@Jndy根據日期的Drools文檔(http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e5702),可以比較日期這個。此外,如果我更改||,它會正常工作至 &&。 –

+0

是的,你是對的。根據文檔,它應該工作。 – kaskelotti

回答

1

顯然,這是一個錯誤的Drools這是現在固定。錯誤報告是here