Я новичок в слюнях и Ки верстак.Я закончил настройку kie workbench, создал правила (.drl) и объекты данных, используя workbench.Я могу позвонить и увидеть все правила в другом Java-приложении.Но как мне вызвать эти правила и факты из этого Java-приложения?
Я попытался определить факт в Java-приложении, который совпадает с объектом данных, определенным в kie workbench.Я использовал этот факт и вставил в kieSession и попытался запустить все правила.Программа работала без ошибок, но правила не выполнялись.
'' '
KieServices ks = KieServices.Factory.get();
KieResources resources = ks.getResources();
String url = "http://127.0.0.1:8080/kie-wb/maven2/org/eRules/1.0/Rules-1.0.jar";
UrlResource urlResource = (UrlResource) resources.newUrlResource(url);
urlResource.setUsername("workbench");
urlResource.setPassword("workbench229");
urlResource.setBasicAuthentication("enabled");
InputStream stream = urlResource.getInputStream();
KieRepository repo = ks.getRepository();
KieModule k = repo.addKieModule(resources.newInputStreamResource(stream));
KieContainer kContainer = ks.newKieContainer(k.getReleaseId());
KieBase kBase = kContainer.getKieBase();
KieSession kSession = kBase.newKieSession();
ResultSet sql_result = sql.Execute( connectionUrl, config.driver, query);
for ( KiePackage a : kBase.getKiePackages()) {
for (Rule r: a.getRules()) {
System.out.println("KiePackage {} Rule {}"+ a.getName() + "-" +
r.getName());
}
}
while (sql_result.next()) {
obj = new M();
obj.setEM(sql_result.getInt("EM"));
kSession.insert(obj);
}
kSession.fireAllRules();
' ''
Как я могу инициализировать факт, определенный в kie workbench?