Jboss Drools模板替换对象属性赢得';行不通
背景: 我正在尝试编写一个JBossDrools模板,用于测试对象的值是否为null、空或有效 持有该值的属性是一个变量,具体取决于$PITCRACT值 例如,如果Jboss Drools模板替换对象属性赢得';行不通,jboss,drools,mvel,Jboss,Drools,Mvel,背景: 我正在尝试编写一个JBossDrools模板,用于测试对象的值是否为null、空或有效 持有该值的属性是一个变量,具体取决于$PITCRACT值 例如,如果$pitCaract=='C'=>$valueProperty=valeurItemChaine 所以在我的模板中,我想测试itemDataCheck.valeurItemChaine 这是我到目前为止所做的尝试 template header $pitCaract $valueProperty p
$pitCaract=='C'=>$valueProperty=valeurItemChaine
所以在我的模板中,我想测试itemDataCheck.valeurItemChaine
这是我到目前为止所做的尝试
template header
$pitCaract
$valueProperty
package fr.xxx.validation;
/*created on: Jun 20, 2017*/
import fr.xxx.fides.dashboard.questionnaire.api.models.items.ItemData;
import fr.xxx.fides.dashboard.questionnaire.api.models.types.Item;
import fr.xxx.fides.dashboard.questionnaire.api.checks.QuestionnaireItemException;
import fr.xxx.fides.dashboard.questionnaire.api.ExceptionMessage;
template "Blocking Objects check"
rule "pre-check of blocking @{$pitCaract} @{row.rowNumber}"
auto-focus true
agenda-group "validate"
dialect "mvel"
salience 100
when
$item: Item(
itemProperty.pitCaract== "@{$pitCaract}",
itemProperty.isMandatory
)
Boolean(booleanValue ==true ) from nullOrEmptyStr($item.itemDataCheck.@{$valueProperty} )
---------------------------------------------------------------^ this line
then
$item.setQuestionnaireItemException(new QuestionnaireItemException(ExceptionMessage.Blocking_item ,QuestionnaireItemException.ERROR ) );
delete($item);
end
end template
function boolean nullOrEmptyStr(Object o)
{
System.out.println("nullOrEmptyStr:"+o);
return o==null || o.toString().trim().isEmpty();
}
我收到一条类似的错误消息
[错误:无法使用严格模式解析方法:
java.lang.Object.valeurItemChaine()][Near:{…nullOrEmptyStr(
$item.itemDataCheck.valeurItemChaine)…}]
我试过了
$item: Item(
itemProperty.pitCaract== "@{$pitCaract}",
itemDataCheck!.@{$valueProperty}.toString().trim().isEmpty(),
itemProperty.isMandatory
)
及
但要想让它发挥作用,运气不好
唯一有效的解决方案是itemDataCheck.@{$valueProperty}==null
,但这还不够,因为值可能是空字符串
感谢您的帮助Item.itemDataCheck及其类是如何定义的?@laune thay是简单的POJO,Item有一个名为itemDataCheck的成员。请提供代码如何编写,仅限相关成员。
$item: Item(
itemProperty.pitCaract== "@{$pitCaract}",
nullOrEmptyStr(itemDataCheck!.@{$valueProperty}),
itemProperty.isMandatory
)