如何从java调用指导决策表?

时间:2017-01-31 10:09:20

标签: java drools drools-guvnor

KieServices ks = KieServices.Factory.get();

KieResources resources = ks.getResources();


String url = messageSource.getMessage("merchant.drool.engine.url", null, Locale.US);
UrlResource urlResource = (UrlResource) resources.newUrlResource(url);
urlResource.setUsername(messageSource.getMessage("merchant.drool.engin.username", null, Locale.US));
urlResource.setPassword(messageSource.getMessage("merchant.drool.engin.password", null, Locale.US));
urlResource.setBasicAuthentication(messageSource.getMessage("merchant.drool.engin.basicauth", null, Locale.US));

logger.info("DTR BATCH: Downloading... kie jar started.");

InputStream stream = urlResource.getInputStream();

KieRepository repo = ks.getRepository();
KieModule k = repo.addKieModule(resources.newInputStreamResource(stream));
KieContainer kieContainer = ks.newKieContainer(k.getReleaseId());

KieScanner kieScanner = ks.newKieScanner(kieContainer);
kieScanner.start(5000L);

KieSession kSession = kieKontainer.newKieSession();

MyDataObject mObj = new MyDataObject();
kSession.insert(mObj);
System.out.println("Fired rules: " + kSession.fireAllRules());

我们在流口水发动机侧创建了一个指导决策表。我从java代码调用决策表(gdst)。上面的代码正在执行而没有任何错误,但它没有更新mObj中的数据。 Drool正在返回我们传递的同一个对象。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

kSession.fireAllRules()方法返回int,即执行的规则数。要确认是否执行了规则,您可以打印' int'执行fireallrule方法后的值。

答案 2 :(得分:0)

上面提到的问题代码工作正常,只需要更新maven依赖项。

var quotes = a["Quotes"];

quotes.sort(function(a, b) {
    return a.MinPrice - b.MinPrice;
});


console.log(JSON.stringify(quotes));