2016-12-26 5 views
0

Ich definierte eine Klasse mit statischen Feldern und ich möchte auf die Felder auf der linken Seite einer Regel zugreifen. Ist es möglich? HierZugriff auf statisches Feld in LHS

ist die Klasse:

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

und Regel:

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 

und nach der Kompilierung mit 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'] 

Antwort

0

Ich denke, die Regel auf diese Weise setzen müssen , replace == to: um Events zu verknüpfen.A

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