我想在'eval'函数中使用'in'关键字,在该函数中我得到错误消息,即“流口水”无法识别“ in”。所以我有多个值要对照特定事实的属性进行检查
when
$person : Person(PIN in ("123","456","789"))
then
//do something
end
//例如,我想在eval中使用它
when
$person : Person()
eval($person.PIN in ("123","456","789"))
then
//do something
end
但是它显示了编译时错误。 还有其他方法吗?
已编辑
所以我在决策表中有一些条件要使用eval,因为其他方式对我的情况没有帮助,下面的快照将对此进行解释
SnapShot 1: Decision Table without eval()
SnapShot 2: Decision Table with eval()
when
personMap : PersonMap ()
basicEligiblePerson : Person( personalAddress.PIN in ($param) ) from
personMap.AddressesList
addresses : Address() from basicEligiblePerson.AddressesList
personalAddress : PersonalAddress() from addresses.PersonalAddress
then
basicEligiblePerson.setEligibility(true);
end
when
personMap : PersonMap ()
basicEligiblePerson : Person( personalAddress.PIN in ($param) ) from
personMap.AddressesList
addresses : Address() from basicEligiblePerson.AddressesList
personalAddress : PersonalAddress() from addresses.PersonalAddress
eval( personalAddress.PIN in ($param) )
then
basicEligiblePerson.setEligibility(true);
end
我该怎么办?
答案 0 :(得分:1)
您的问题中给出的第一个样本足以进行验证。您不需要使用eval。
when
$person : Person(PIN in ("123","456","789"))
then
//do something
end
如果您的要求是将给定一组PIN的资格设置为true,那么您实际上就不需要决策表。我不完全了解您的POJO结构,因此,如果Person类具有成员变量addressList,而AddressList类具有成员personalAddress,该成员具有成员变量pin,则可以使用以下规则来获得结果。请注意,嵌套字段是使用成员变量名称而不是类名称来引用的。另外,在访问嵌套元素时,如果任何元素都可以为null,请同时添加null检查,以避免null指针异常。
when
$basicEligiblePerson : Person( addressesList.personalAddress.pin in ("1234", "4567") )
then
$basicEligiblePerson.setEligibility(true);
end