我不知道';无法理解drools规则中生成错误的原因
我是流口水的初学者。 我有两种类似的代码 第一个代码是工作查找。但第二个代码不起作用 我不明白为什么这个代码不同 请检查这个问题 规则文件-工作查找我不知道';无法理解drools规则中生成错误的原因,drools,Drools,我是流口水的初学者。 我有两种类似的代码 第一个代码是工作查找。但第二个代码不起作用 我不明白为什么这个代码不同 请检查这个问题 规则文件-工作查找 rule "VoLTE Validate Rule" dialect "mvel" when $uBody : VoLTEBody() then ArrayList ltErrorCd = new ArrayList(); ErrorCD_Intl uErrCdOut = new ErrorCD_In
rule "VoLTE Validate Rule"
dialect "mvel"
when
$uBody : VoLTEBody()
then
ArrayList ltErrorCd = new ArrayList();
ErrorCD_Intl uErrCdOut = new ErrorCD_Intl("0001", "10", 1, "IMSI");
ltErrorCd.add(uErrCdOut);
String[] ltErrCd = new String[5];
ErrorCD_Intl eachErrorCd = ltErrorCd.get(0);
ltErrCd[0] = new String(eachErrorCd.sErrCd);
end
规则文件-不工作
rule "VoLTE Validate Rule"
dialect "mvel"
when
$uBody : VoLTEBody()
then
ArrayList ltErrorCd = new ArrayList();
ErrorCD_Intl uErrCdOut = new ErrorCD_Intl("0001", "10", 1, "IMSI");
ltErrorCd.add(uErrCdOut);
String[] ltErrCd = new String[5];
for (int i=0; i<ltErrorCd.size(); i++) {
ErrorCd_Intl eachErrorCd = ltErrorCd.get(i);
ltErrCd[i] = new String(eachErrorCd.sErrCd);
}
end
错误CD_国际等级
public class ErrorCD_Intl {
public String sErrCd;
public String sErrLevelDivCd;
public int iErrPriority;
public String sOldErrCd;
}
这是MVEL语言的一个缺点。它通过允许您编写
eachErrorCd.sErrCd
来简化,但它希望类实际具有字段的getter方法(getSErrCd()
)
在对象中的字段为公共字段的情况下,MVEL仍然希望通过其getter方法访问该属性
类中显然缺少getter方法,因此表达式失败。我承认,错误信息无助于确定原因
您有两个选项来解决此问题:
getSErrCd()
java
方言。在这种情况下,您必须将泛型类型参数添加到ArrayList
:
ArrayList<ErrorCD_Intl> ltErrorCd = new ArrayList<>();
ArrayList ltErrorCd=new ArrayList();
另外,如果在for循环之外执行相同的操作,我不理解为什么不会发生错误。这是MVEL语言的一个缺点。它通过允许您编写
eachErrorCd.sErrCd
来简化,但它希望类实际具有字段的getter方法(getSErrCd()
)
在对象中的字段为公共字段的情况下,MVEL仍然希望通过其getter方法访问该属性
类中显然缺少getter方法,因此表达式失败。我承认,错误信息无助于确定原因
您有两个选项来解决此问题:
getSErrCd()
java
方言。在这种情况下,您必须将泛型类型参数添加到ArrayList
:
ArrayList<ErrorCD_Intl> ltErrorCd = new ArrayList<>();
ArrayList ltErrorCd=new ArrayList();
另外,如果您在for循环之外执行相同的操作,我不理解为什么不会发生错误。谢谢您的评论。我将尝试修改我的源代码。我认为这实际上是MVEL中的一个bug。“preference”意味着如果有getter,它将使用getter,但是如果没有getter,它不应该失败。至少没有for循环的行为表明了这一点。我将提出一个问题。谢谢你的评论。我将尝试修改我的源代码。我认为这实际上是MVEL中的一个bug。“preference”意味着如果有getter,它将使用getter,但是如果没有getter,它不应该失败。至少没有for循环的行为表明了这一点。我将提出一个问题。