drools 包名 (Fluent api)

drools package name (Fluent api)

我正在尝试使用 Fluent Api 在 java 中创建规则。实际上,我已经以我喜欢的方式成功创建了规则,但是我找不到不添加包名称来创建规则的方法。

Java代码:

PackageDescr pkg = DescrFactory.newPackage()
   .name("org.drools.example")
   .newRule().name("Xyz")
       .attribute("ruleflow-grou","bla")
   .lhs()
       .and()
           .pattern("Foo").id( "$foo", false ).constraint("bar==baz").constraint("x>y").end()
           .not().pattern("Bar").constraint("a+b==c").end().end()
       .end()
   .end()
   .rhs( "System.out.println();" ).end()
   .getDescr();

DrlDumper dumper = new DrlDumper();
String drl       = dumper.dump(pkg);

DRL 文件:

package org.drools.example  ---> I do not want this to be included

rule "Xyz"
    ruleflow-grou bla
when
    (
    $foo : Foo( bar==baz, x>y )  and
    not( 
    Bar( a+b==c )   ) ) 
then
System.out.println();
end

提前致谢。

注意:我使用的是 eclipse 默认安装的 Drools 7.3.0

您可以对所有规则重复使用相同的 PackageDescrBuilder。完成一条规则后,只需调用 end().newRule() 即可开始另一条规则:

PackageDescr pkg = DescrFactory.newPackage()
  .name("org.drools.example")
    .newRule().name("Rule 1")
      .attribute("ruleflow-grou","bla")
      .lhs()
        .and()
          .pattern("Foo").id( "$foo", false).constraint("bar==baz").constraint("x>y")
          .end()
          .not().pattern("Bar").constraint("a+b==c")
          .end().end()
        .end()
      .end()
    .rhs( "System.out.println();" ).end()
    .newRule().name("Rule 2")              // <--- Here starts the new rule
      .lhs()...end()
      .rhs()...end()
.getDescr();

希望对您有所帮助,