Мы попытались выполнить некоторые формулы complexPartialScore с использованием drools pmml и обнаружили, что возникла ошибка при использовании нескольких fieldRef в одной формуле complexPartialScore.
В 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.