我是流口水和凯氏工作台的新手。我完成了设置kie工作台,使用工作台创建规则(.drl)和数据对象的工作。我能够进行get调用,并查看另一个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工作台中定义的事实?