java - 在 drools 中传递参数

标签 java parameters jboss drools rule-engine

如何在下面的 drools 规则中传递一个参数来设置年龄的比较值(18 应该是动态的)

package com.rule.models

import com.rule.models.User

rule "AgeCheck"
when
    $user: User( age < 18 )
then
    System.out.println("Warning, "+$user.getName()+" is below age!");
end

最佳答案

对于 Drools 中的规则,没有什么能与“参数传递”相提并论。规则中使用的数据必须来自工作内存中的事实或全局变量。

使用第一种技术看起来像这样:

rule "AgeCheck"
when
    Parameter( $ageLimit: ageLimit )
    $user: User( age < $ageLimit )
then ... end

Parameter 类的单个事实必须首先插入;它可能包含多个参数。

也可以使用全局变量:

global my.app.Parameter parameter

rule "AgeCheck"
when
    $user: User( age < parameter.getAgeLimit() )
then ... end

有关如何安装全局的详细信息,请参阅专家手册。

关于java - 在 drools 中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23410450/

相关文章:

powershell - 如果省略了必需的 *pipeline* 参数,是否可以强制 PowerShell 脚本抛出异常?

java - Spring-通过链接传递参数

ssl - 在 JBoss AS 7 中设置 SSL

java - ConcurrentHashMap 与同步

java - 为什么要避免在 Java 中使用 C++ 关键字?

ruby-on-rails - Ruby on Rails - 将值传递给 link_to

java - 即使我安装了 Java 8,Yosemite 也仅识别 1.6.0.jdk。我无法修改 java_home

maven - Dockerfile启动JBoss CLI失败

java - 将Wiremock部署到Weblogic作为 war 时的验证问题

java - 如何遍历属性文件夹并获取每个属性文件的路径