gpt4 book ai didi

java - java 应用程序中 drools 工作台的火灾规则

转载 作者:行者123 更新时间:2023-12-02 12:23:42 24 4
gpt4 key购买 nike

这似乎是一个关于流口水的流行问题......

我在 drools 工作台上创建了一些规​​则以及一个简单的 java 应用程序来与其通信。

我能够连接到工作台(身份验证等),我可以从规则集中检索名称,但我的“fireAllRules()”指令返回零并且对我的对象没有影响。

但是,当我在本地添加完全相同的规则(.drl 文件)时,它运行顺利并且结果正确。

有什么想法吗?

规则(工作台和本地):

package org1.notif;
rule "validate"
dialect "mvel"
when
c : Communication( status == "Pending" , type == "Dual" )
then
modify( c ) {
setStatus( "Executed" )
}
end
<小时/>

Java 代码(用于与 Workbench 通信):

public static final void main(String[] args) {
try {
KieServices ks = KieServices.Factory.get();
KieResources resources = ks.getResources();
String url = "http://192.168.9.20:8080/drools-wb/maven2/org1/notif/1.0/notif-1.0.jar";
UrlResource urlResource = (UrlResource) resources.newUrlResource(url);
urlResource.setUsername("admin");
urlResource.setPassword("admin");
urlResource.setBasicAuthentication("enabled");
InputStream stream = urlResource.getInputStream();
KieRepository repo = ks.getRepository();
KieModule k = repo.addKieModule(resources.newInputStreamResource(stream));
KieContainer kc = ks.newKieContainer(k.getReleaseId());
KieBase kBase = kc.getKieBase();
System.out.println(kBase.getKiePackage("org1.notif").getRules());

KieSession kSession = kBase.newKieSession();

Communication c = new Communication();
c.setStatus("Pending");
c.setType("Dual");

kSession.insert(c);
System.out.println(kSession.fireAllRules());
System.out.println(c.getStatus());
kSession.dispose();
}
(...)

最佳答案

问题出在以下语句中System.out.println(kSession.fireAllRules());

为了使其正常工作,“fireAllRules”指令不得位于 println 方法内部。菜鸟错误

关于java - java 应用程序中 drools 工作台的火灾规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45588480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com