我尝试编写一个规则,将ISO国家/地区代码与字符串中的ISO代码列表进行比较(以逗号分隔)。
规则的时间部分如下所示:
rule "TEST"
when
$s :SCC();
$f : Fund()
(exists(
RegulationGroup(
(CI matches ".*" + $s.clientDomicile + ".*")
) from $f.regulationGroups
))
CI是一个国家/地区列表(例如“DE,AT,GB”),我尝试将其与单个ISO代码进行匹配,该代码由$ s.clientDomicile表示。
以上语法不起作用。错误信息: text = Predicate'CI~ =“。”+ $ s.clientDomicile +“。”'必须是布尔表达式
如何在“匹配”-Pattern中包含变量/数据点?
答案 0 :(得分:0)
运算符优先级似乎要求您对连接加以括号。这适用于6.4.0:
rule "TEST"
when
$s: SCC( $cd: clientDomicile )
$f: Fund( $rg: regulationGroups )
exists RegulationGroup( CI matches (".*\\b" + $cd + "\\b.*") ) from $rg
then ... end
我更喜欢绑定在它们所属的模式中脱颖而出。
\b
可能对ISO代码有些过分,但它们不会受到伤害。