Как использовать факты (объект данных), определенные в kie workbench, и запустить все правила, определенные в kie workbench, в другом Java-приложении? - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в слюнях и Ки верстак.Я закончил настройку 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?

...