2017-01-20 5 views
0

Ich arbeite an der Erstellung eines CEP mit Drools Fusion. Ich habe zwei Klassen von Ereignissen ExpectedEvent und ActualEvent. Ich muss sicherstellen, dass ActualEvent-Objekte vor ExpectedEvent-Objekten auftreten. Allerdings kann ich nicht das vor Schlüsselwort zu arbeiten. Dies ist im Stream-Modus.Drools Fusion 'Variablenname' unerwartet

import hellodrools.ExpectedEvent 
import hellodrools.ActualEvent 

dialect "java" 

rule "On Time" 

when 
    ExpectedEvent($expectedtime : getStart_time()) from entry-point entry one 
    $actual:ActualEvent(this after[ 1m ] $expected) from entry-point entryone 

then 

    System.out.println("ON TIME expected time: " + $expectedtime + " actual time " + $actualtime); 

end 

In IntelliJ behalte ich immer Fehler auf tatsächliche $ sagen '$ tatsächlichen unerwartete. Ich kann diesen Syntaxfehler nicht lösen.

Antwort

0

Ich glaube nicht, dass dies zu IntelliJ verwandt ist, obwohl IntelliJ hier nicht den richtigen Fehler meldet.

Ich glaube, hier das eigentliche Problem ist, dass from entry-point einen Stringliteral erwartet oder eine gültige Kennung, die für die Einstiegspunkt-ID verwendet wird

In Ihrer Regel „entry one“ das (die ein String ist) nicht ein gültiger Bezeichner, da er ein Leerzeichen enthält und kein String-Literal ist, da er nicht in Anführungszeichen eingeschlossen ist (").

können Sie versuchen, from entry-point entry one

mit from entry-point "entry one"

ersetzen