Доступ к статическому полю в LHS
Я определил класс со статическими полями, и я хочу получить доступ к полям в левой части правила. Является ли это возможным?
Вот класс:
package cep.model;
public class Events {
public static final int A = 1;
public static final int B = 2;
public static int getA() {
return A;
}
public static int getB() {
return B;
}
}
и правило:
package cep.drl;
dialect "mvel"
import cep.Event;
import cep.model.Events;
declare Event
@role(event)
@expires( 20s )
end
//A & B
rule "r001"
no-loop
when
$a : Event(typeId == Events.A)
and $b : Event(typeId == Events.B)
then
end
и после компиляции с помощью плагина drools:
Unable to Analyse Expression typeId == Events.A:
[Error: unable to resolve method using strict-mode: cep$Event.Events()]
[Near : {... typeId == Events.A ....}]
^
[Line: 15, Column: 4] : [Rule name='r001']
Unable to Analyse Expression typeId == Events.B:
[Error: unable to resolve method using strict-mode: cep$Event.Events()]
[Near : {... typeId == Events.B ....}]
^
[Line: 16, Column: 8] : [Rule name='r001']
1 ответ
Я думаю, что вы должны поставить правило таким образом, replace == to
: сделать привязку к Events.A
rule "r001"
no-loop
when
$a : Event(typeId : Events.A)
and $b : Event(typeId == Events.B)
then
end