【问题标题】:Drools and Maps compilation errorDrools 和 Maps 编译错误
【发布时间】:2014-02-15 17:26:11
【问题描述】:

MY 规则条件和动作定义如下。我收到编译错误。在规则条件下,我将左右值指定为“abc”和“xyz” 哪些值存储在 Me 对象的 MAP 中。当我在操作部分使用 me.getVariableValues('abc') 时,它工作正常。但当 我想在条件下使用相同的 me.getVariableValues('abc') 然后我遇到编译错误。

创建规则包时出错 - [139,0]: unknown:139:0 mismatched token: [@463,2378:2383='me',,139:0];期望类型 RIGHT_PAREN[140,37]: 未知:140:37 意外令牌')'[140,39]:未知:140:39 意外令牌'abc'

规则“规则”

什么时候

我:我()

getValue(me.getVariableValues(),${condition.leftVariableCode}) ${condition.operator} getValue(me.getVariableValues(),${condition.rightVariableCode})

然后

me.addVariableValue("$action.output.variableCode", me.getVariableValue("$action.firstInput.VariableCode") $action.operator me.getVariableValue("$action.secondInput.VariableCode"));

结束

【问题讨论】:

  • 以“getValue”开头的完全错误的语法。它看起来像一些模板代码。 - 你想做什么?
  • 您好,Laune,感谢您的即时回复,我正在尝试根据规则中定义的条件比较地图中的值。 DRL 字符串生成在速度文件中定义。地图保存在内存中,我想要地图的两个值。请让我知道给我示例代码两个比较地图中的两个值。
  • 如图所示的 DRL 代码完全损坏。地图在哪里? Me类是如何定义的?
  • 这是我的类 public class Me{ // 变量详细信息 Map variableValues = new HashMap(); public Map getVariableValues() { return variableValues; } public void addVariableValue(String variableCode, Integer count){ if (count

标签: drools


【解决方案1】:

给定 Me 类声明的正确规则是

Me( $vv: variableValues )
Map( this["key"] == 42 ) from $vv

Me( $vv: variableValues )
Map( this["foo"] < this["bar"] ) from $vv

如果您发布了速度模板,则它已损坏。

如果您在展开模板后发布了结果,则模板和您的展开机制都被破坏了。

【讨论】:

  • 感谢 Laune 扩展模板的结果低于一个---> me: Me() getValue(me.getVariableValues(),Y1PC) > getValue(me.getVariableValues(),Y0CC)
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2012-10-12
  • 2011-10-12
  • 2018-02-01
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多