2016-10-06 6 views
0

Ich möchte geifert für Bean Validation mit Frühlings-Stiefel verwenden, aber ich habe das Problem auf diese wenigen Zeilen Code verengte:geifert nicht richtig mit Federverschluß arbeiten

Main-Klasse

@SpringBootApplication 
public class App { 

    public static void main(String[] args) { 
     //SpringApplication.run(App.class, args); 
     check(); 
    } 

    public static void check() { 
     // load up the knowledge base 
     KieServices ks = KieServices.Factory.get(); 
     KieContainer kContainer = ks.getKieClasspathContainer(); 
     KieSession kSession = kContainer.newKieSession("ksession-rules"); 
     //go 
     Patient patient = new Patient("Hans", "Mueller"); 
     kSession.insert(patient); 
     kSession.fireAllRules(); 
    } 
} 

Patient ist eine Entity mit nur einer ID, einem Vornamen und einem Nachnamen mit Getter und Setter.

Die kmodule.xml

<?xml version="1.0" encoding="UTF-8"?> 
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> 
    <kbase name="rules" packages="rules"> 
     <ksession name="ksession-rules"/> 
    </kbase> 
</kmodule> 

und zwei Regeln

package com.sample 

import com.sample.Patient; 

rule "Test" 
    when 
     eval(1 == 1) 
    then 
     System.out.println("This rule is always fired"); 
end 

rule "Patient" 
    when 
     exists Patient() 
    then 
     System.out.println("Patient found"); 
end 

Wenn nicht Aufruf SpringApplication.run(App.class, args) (wie oben) funktioniert alles einwandfrei:

15:50:12.730 [main] DEBUG org.drools.core.impl.KnowledgeBaseImpl - Starting Engine in PHREAK mode 
15:50:12.820 [main] DEBUG org.drools.core.common.DefaultAgenda - State was INACTIVE is nw FIRING_ALL_RULES 
15:50:12.821 [main] DEBUG org.drools.core.common.DefaultAgenda - Fire Loop 
This rule is always fired 
15:50:12.827 [main] DEBUG org.drools.core.common.DefaultAgenda - Fire Loop 
Patient found 
15:50:12.827 [main] DEBUG org.drools.core.common.DefaultAgenda - Fire Loop 
15:50:12.827 [main] DEBUG org.drools.core.common.DefaultAgenda - State was FIRING_ALL_RULES is nw HALTING 
15:50:12.827 [main] DEBUG org.drools.core.common.DefaultAgenda - State was HALTING is nw INACTIVE 

Allerdings, wenn ich fügen Sie SpringApplication.run(App.class, args) zum Haupt, auf hinzu ly eine Regel wird ausgelöst:

This rule is always fired 

Nicht einmal die Protokollierung von org.drools.core.common.DefaultAgenda mehr sichtbar ist.

Ich habe keine Ahnung, was schief läuft? Ich erwarte die gleiche Ausgabe in beiden Situationen. Fungiert SpringBoot etwas im Hintergrund?

Antwort

1

Für alle, die das gleiche Problem und liest meine Frage hat:

ich es direkt nicht gelöst haben, aber das Problem etwas mit Netbeans zu tun hat. Alles funktioniert gut, wenn Sie die Anwendung über die Befehlszeile starten. Also das ist der Weg zu gehen.

+0

Ich bin Debuggen von Apps Drools + Spring Boot mit Eclipse. Und hat das Problem von Sabber nicht zu schießen, bis ich diesen Beitrag sehe. Dann starte ich die Apps direkt in Cli und sehe, dass Sabber anfangen zu feuern –