java - Drools 返回规则列表

标签 java drools

我是 drools 新手,我成功创建了一个使用创建的规则的工作应用程序。我有一个简单的类 Message ,其中包含两个变量 typelanguage

public class Message {
  private String type;
  private String language;

  public String getType() {
      return type;
  }

  public void setType(String type) {
      this.type = type;
  }
  public String getLanguage() {
      return language;
  }

  public void setLanguage(String language) {
      this.language = language;
  }
}

我的规则实现为

rule "test_auto"
when
  message:Message (( type == 'string1' ) && ( language == 'string2' ) )
then
  ...
end

如果用户为类型或语言插入一些奇怪的值,我有一个返回错误的特定规则。但最重要的是,我想知道是否可以返回规则中插入的所有可能变量的列表:例如 string1string2

最佳答案

我猜你的意思是“字符串文字”而不是变量?

有一个类来表示规则;具有模式和约束的类。但这些“不稳定”,通常不建议基于它们构建应用程序。

如果您有多个规则捕获 Message.type 和 Message.language 的某些错误组合,您可以考虑根据

插入事实
class BadMessage {
    String type;
    String language;
}

所有这些“糟糕”的组合,以及单一规则

rule "catch bad messages"
when
    $m: Message'( $t: type, $l: language )
    BadMessage( type == $t, language == $l )
then
    // handle $m as a "bad" message

顺便说一句,请注意,您可以将模式简单地写为

message: Message( type == "string1", language == "string2" )

关于java - Drools 返回规则列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25198641/

相关文章:

java - 安全性 - 如何在 android 应用程序中实现用户之间的阻止功能,使他们无法再相互联系

java - 在 drools 中使用相当于 'not exists' 的值

java - 无法通过 ADB 或自己的应用程序打开应用程序 Activity/屏幕 - 权限拒绝

java - 如何在二维数组上使用 foreach 循环来表达 for 循环?

java - 使用 JTextField 调整文本

java - Jar 捆绑程序无法从 jar 文件自动获取主类。您能描述一下整个过程吗?

drools - Drools 7.57.0.Final 中的模式匹配问题

java - 从有状态的 drools session 中获取事实

java - Drools 适用于我的场景吗?如果不是还有什么?

java - 什么是 Drools Kie?