2013-09-23 2 views
0

getter로 java bean의 속성에 접근하려고하면 bean 속성을 사용하는 것이 제대로 작동하지만 오류가 발생합니다. documentation에 설명 된대로 콩 속성을 직접 사용하는 것이 좋습니다. 그러나 나는이 경우 몇 가지 구체적인 이유로 게터를 사용하는 것을 선호한다.getter를 사용하여 bean 속성에 접근하기

다음은 규칙 파일과 오류입니다. 내가 왜 이상한 행동을하는지에 대한 단서를 고맙게 생각합니다.

규칙 파일

package test.rules 

import java.lang.Math; 
import test.MatFact; 
import test.MatHotelAlternative; 
import test.MatHotelItem; 


dialect "mvel" 

rule "0" 
salience 0 
when 
    $item: MatHotelItem() 
    $alt: MatHotelAlternative(processed == false 
     && (getStarRating() == "*") 
    ) 
then 
    modify ($alt) { 
     // some actions here 
    } 
end 

오류

[16,26]: [ERR 101] Line 16:26 no viable alternative at input ')' in rule "0" in pattern MatHotelAlternative 
[16,28]: [ERR 102] Line 16:28 mismatched input '==' expecting ')' in rule "0" in pattern MatHotelAlternative 
[17,1]: [ERR 102] Line 17:1 mismatched input ')' expecting 'then' in rule "0" 

관련 클래스

MatHotelAlternative

public class MatHotelAlternative extends MatItemAlternative<Hotel> 
{ 
    public String getStarRating() 
    { 
     return alternative.getStarRating(); 
    } 
} 

MatItemAlternative

이 작동합니다
public abstract class MatItemAlternative<T extends HolidayItem> 
{ 
    private boolean processed; 
    protected T alternative; 

    public MatItemAlternative(T alternative) 
    { 
     this.alternative = alternative; 
    } 

    public boolean isProcessed() 
    { 
     return processed; 
    } 

    public void setProcessed(boolean processed) 
    { 
     this.processed = processed; 
    } 
} 
+0

명시 적 getter가 아닌 bean 속성을 사용하면 규칙이 완벽하게 작동합니까? 귀하의 게시물은 사실을 포함하지 않으며 귀하가 언급 한 속성을 가지고 있습니까? 그뿐 아니라 게시 할 수 있습니까? – kaskelotti

+0

@JAndy : 이것은 사실입니다. 관련 자바 클래스를 추가했습니다. 이것에 대해 많은 도움을 주실 수 있을까요? –

답변

0

클래스 로더가 Drools 5.1.1을로드하는 것처럼 보입니다. 이것이 문제의 원인 인 것 같습니다. Drools 5.5.0 Final로 전환하면 문제가 해결되었습니다.

0

: $의 고도는 : MatHotelAlternative (처리 == 거짓, starRating == "*")

당신이 그와 함께 시도 할 수 있습니다? 이 대안으로 어떤 오류가 있습니까?

+0

답장을 보내 주셔서 감사합니다. 이 사실은 제가 질문에서 언급 한 것처럼 작동합니다. 나는 왜 내가 gettets를 사용하지 않을지 궁금해하고 있습니다. –

관련 문제