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?
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 –