当前位置: 首页 > 知识库问答 >
问题:

java应用程序对drools工作台的消防规则

蔡鹏程
2023-03-14

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

我在drools workbench和一个简单的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();
}
(...)

共有1个答案

文建业
2023-03-14

问题出现在以下语句系统中。出来println(kSession.fireAllRules())

为了使其工作,“fire All规则”指令不得在println方法内部。菜鸟错误

 类似资料:
  • 我对drools环境真的很陌生,试着去理解它。 我做了第一个java项目,它基本解析drl规则文件,将它们应用到java对象,并根据对象属性和规则输出结果。如果我错了就阻止我,但我认为这是口水的超基础。 ->我认为工作台可以允许我动态地将xls编译为DRL是对的吗? ->我是否遗漏了工作台的一点?

  • 想想有没有一种方法可以使用Drools API将drl文件转换为excel工作表? 我们目前使用的是Drools 5.3,但实际上可以使用任何版本。 提前感谢

  • 在drool引擎中,如何在THEN部分中将新对象作为响应填充?我希望用另一个专用对象返回答案,而不是LiabilityRequestDto。谢谢你的帮助

  • 我试图将我的流程变量放入业务规则任务中,并在该任务中更改该变量,但值保持不变。我做错了什么?流程是在kie工作台中开发的,不使用Eclipse。 在触发规则之前,我的变量在脚本任务中初始化,如 谢谢你的帮助!

  • 我第一次尝试Drools/Guvnor,我们计划在Guvnor中进行规则创作,编译、构建并将包下载到“规则包目录”。 现在我遇到的问题是,将Drools与我们的Java应用程序集成的最佳方式是什么?选项1)构建知识代理并开始将事实插入内存以在我们的应用程序中进行规则评估。在这种情况下,Drools引擎使用与应用程序JVM相同的JVM。选项2)拥有一个构建知识代理的Drools Server,应用程

  • 我重新安排了云firestore的安全规则,以防止在集合中重新创建文档。以下是我使用的规则: 我用这些文档路径和用户凭据在控制台中模拟了这些规则 如果我创建了一个id为09-07-2020的文档,并使用上述路径进行模拟,则会失败。当我删除文件09-07-2020时,上述模拟工作正常。因此,它在规则模拟器中运行良好。 但当我在应用程序中尝试时,每次尝试都会再次创建文档。因此,如果文档内容以前不同,则