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

Drools 6.2如何从我自己的规则编辑器生成和部署DRL文件

窦英武
2023-03-14

作为概念证明,我已经使用Drools workbench创建数据对象和DRL文件。我创建了jar文件并部署到kie服务器(带有容器)。全部通过工作台UI完成。我使用C#应用程序中的KIE REST服务通过XML发布输入对象(使用批处理执行)来触发规则,并得到了我正在寻找的响应。

但是在实际场景中,我们将有自己的规则编辑器(为了便于使用)来根据现有对象的属性创建规则。一旦规则保存到我们的数据库中,我们的计划是生成DRL文件和数据对象。

共有1个答案

岑彬炳
2023-03-14

我想这个问题以前已经被问过并回答过了,但这里又是一次,将DRL编译成KieBase或Kiesession的代码。

public KieBase build( String drlPath ) throws Exception {
    KieServices kieServices = KieServices.Factory.get();
    KieFileSystem kfs = kieServices.newKieFileSystem();
    FileInputStream fis = new FileInputStream( drlPath );
    kfs.write( "src/main/resources/some.drl",
                kieServices.getResources().newInputStreamResource( fis ) );
    KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
    Results results = kieBuilder.getResults();
    if( results.hasMessages( Message.Level.ERROR ) ){
        System.out.println( results.getMessages() );
        throw new IllegalStateException( "### errors ###" );
    }
    KieContainer kieContainer =
        kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() );

    KieBase kieBase = kieContainer.getKieBase();
    return kieBase;
}
 类似资料:
  • 我试图将我的流程变量放入业务规则任务中,并在该任务中更改该变量,但值保持不变。我做错了什么?流程是在kie工作台中开发的,不使用Eclipse。 在触发规则之前,我的变量在脚本任务中初始化,如 谢谢你的帮助!

  • 我的项目使用drools专家手段(DRL)文件。在规则文件中,如果用户想删除和更新规则,应该怎么做? 规则文件: 例如,用户希望将温度值更改为30.0。

  • 问题内容: 在netbeans中创建新项目时,如果我选择JAVA Desktop应用程序,它将创建一些代码,这些代码我不会像在Swing中学到的那样完全无法识别。 它导入软件包,例如: 同样,main()的声明如下所示: 这对我对JFrame,JPanel等的了解确实没有任何意义。 如果我尝试从头开始编写netbeans应用程序,则可以编写自己的swing应用程序,但找不到GUI编辑器。 从头开始

  • 我在eclipse中创建了一个java项目,它会自动从外部目录中获取所有. drl文件并执行该目录中的所有规则。因此,这可以随时执行动态添加新规则。现在,我想使用引导规则编辑器来帮助非技术用户将新规则添加到该目录中,而不是创建一个新的drool文件。我已经开始使用drools-workbench,但我仍然不知道如何将这个eclipse项目与drools-wb中可用的引导规则编辑器功能集成。 是否有

  • 我在这里找到了drools编译器中可用的描述符列表,但我不知道需要使用哪个描述符以及如何定义。? 请任何人帮助我重新爱上这一个。提前谢了。

  • TraceId 生成规则 SOFATracer 通过 TraceId 来将一个请求在各个服务器上的调用日志串联起来,TraceId 一般由接收请求经过的第一个服务器产生,产生规则是: 服务器 IP + 产生 ID 时候的时间 + 自增序列 + 当前进程号 ,比如: 0ad1348f1403169275002100356696 前 8 位 0ad1348f 即产生 TraceId 的机器的 IP,