本节继续来看drools的高级语法:query 和function函数。

drools规则调用不了(开启灵活开发编码模式)(1)

query(一)
  • ① 介绍

query查询提供了一种查询working memory中符合约束条件的Fact对象的简单方法。它仅包含规则文件中的LHS部分,不用指定“when”和“then”部分并且以end结束。

  • ② 语法结构

query 查询的名称(可选参数) LHS end

drools规则调用不了(开启灵活开发编码模式)(2)

  • ③ java调用类

不仅仅返回fact的对象的数量,还能具体地返回这fact。通过遍历的方式可以取到。

drools规则调用不了(开启灵活开发编码模式)(3)

第一个查询没有参数,第二个查询里面有参数的。kieSession.getQueryResults(“query_2”,“王五”); 这个方式就是传递参数,可以传递多个。

function(二)
  • ① 介绍

function关键字用于在规则文件中定义函数,就相当于java类中的方法一样。可以在规则体中调用定义的函数。使用函数的好处是可以将业务逻辑集中放置在一个地方,根据需要可以对函数进行修改

  • ② 语法结构

function 返回值类型 函数名(可选参数){ //逻辑代码 }

  • ③ 调用步骤

function.drl

drools规则调用不了(开启灵活开发编码模式)(4)

编写单元测试

drools规则调用不了(开启灵活开发编码模式)(5)

drools规则调用不了(开启灵活开发编码模式)(6)

PS:本节讲述的内容主要是query查询内存中的对象,function是为了方便自定义一些函数,调用的时候使用

,