Доступ к статическому полю в 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 ответ

  1. Я думаю, что вы должны поставить правило таким образомreplace == to: сделать привязку к событиям.Есть

    rule "r001"
    no-loop
        when
        $a : Event(typeId : Events.A)
        and $b : Event(typeId == Events.B)
        then
    end