2016-12-26 4 views
0

J'ai défini une classe avec des champs statiques et je veux accéder aux champs dans le côté gauche d'une règle. C'est possible?Accès champ statique dans LHS

Voici la classe:

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; 
    } 
} 

et règle:

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 

et après compilation à l'aide Drools plugin:

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'] 

Répondre

0

Je pense que vous devez mettre la règle de cette façon , replace == to: pour faire un lien vers Events.A

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