我们尝试使用drools pmml执行某些complexPartialScore公式,发现在单个complexPartialScore公式中使用多个fieldRef时遇到错误。
在complexPartialScore.mvel下,我们在@end {,}遇到错误。运行以下功能时。
<Apply function="+">
<Apply function="*">
<Constant>0.03</Constant>
<FieldRef field="age"/>
</Apply>
<FieldRef field="income"/>
</Apply>
@declare{'complexPartialScore'}
rule "PartialScore_RowScore @{context}_@{complexScore.characteristicName}_@{complexScore.attributeIndex}"
when
$sc: @{name}ScoreCardData( @foreach{ field: complexScore.fldNames }
m@{ compactUpperCase(field) } == false,
@{ compactAsJavaId(field) }: v@{ compactUpperCase(field) } != null@end{,})
$sr: ScoreRow( characteristic == "@{complexScore.characteristicName}", id == "@{complexScore.characteristicName}@{complexScore.attributeIndex}" )
then
Double score = @{complexScore.complexScore};
System.out.println("setting a score!");
modify( $sr ) {
setValue(score);
}
end
@end{}
@includeNamed{'complexPartialScore'}]`
我们希望引擎能够执行和计算分数,但是遇到错误。
通过将null @ end {,}更改为null @ end {','},我们发现引擎能够正确执行公式。
检查这是否是真正的错误,或者我们对PMML实际支持的内容是否有误解。