2017-07-13 3 views
1

Die statische Java-Klasse und Methodencode ist:geifert importiert statische Java-Methode

public class DroolsStringUtils { 
public static boolean isEmpty(String param) { 
    if (param == null || "".equals(param)) { 
     return true; 
    } 
    return false; 
} 

}

und die TFL-Code ist:

package com.rules 

import com.secbro.drools.utils.DroolsStringUtils.isEmpty; 


rule CheckIsEmpty 
    when 
    isEmpty(""); 
    then 
    System.out.println("the param is not empty"); 
    end 

aber die Idee Hinweise "nicht relove" auf der Methode 'isEmpty (""). Ich möchte nur eine statische Methode von Java-Klasse in Drl-Datei importieren.

aber es funktioniert nicht!

+0

die drools Version ist 7.0.0.Final – secbro

+0

die IDEE ist intellij IDEA 2016.3 – secbro

Antwort

0

Verwenden Sie den Import statisch, um eine statische Methode zu importieren.

import static com.secbro.drools.utils.DroolsStringUtils.isEmpty; 
//  ^^^^^^ 

(bearbeitet :) und natürlich können Sie nicht eine statische Methode aufrufen, wo ein Muster erforderlich ist.

rule CheckIsEmpty 
when 
    eval(isEmpty("")) 
then 
    System.out.println("the param is not empty"); 
end 

(Es hilft erheblich die Drools Dokumentation zu lesen)

+0

Vielen Dank! Ich habe es versucht, aber habe das gleiche Ergebnis. Und das Drools-Dokument 'Beispiel ist' Import-Funktion my.package.Foo.hello '. Aber in meinem Code funktioniert es auch. – secbro

+0

Die Ausnahme ist java.lang.RuntimeException: Fehler beim Erstellen von KieBase [Nachricht [ID = 1, kieBase = Regeln, Ebene = Fehler, Pfad = Rules.drl, Zeile = 8, Spalte = 0 text = Kann nicht aufgelöst werden Objekttyp 'isEmpty']] – secbro

+0

Sah deine "Regel"; Sie können auf diese Weise keine Bedingung schreiben. – laune