У меня есть общая функция, которая будет использоваться несколькими преобразованиями в виде данных, поэтому я хочу написать это как глобальную функцию MEL.Язык выражения мула и глобальные функции для фильтрации записей
Я настроил мой глобальные функции файл -
<configuration doc:name="Configuration">
<expression-language>
<import class="org.apache.commons.lang3.StringUtils"></import>
<global-functions file="global_expressions.mvel">
</global-functions>
</expression-language>
</configuration>
то у меня есть global_expressions.mvel файл, в котором я хочу такую функцию -
def filterE1Records(route,type){
if(type == 'COR'){
return (route >= '${min.route}' and route <= '${max.route}');
} else if(type == 'NONCOR'){
return ((route >= '${min.route}' and route <= '${max.route}') == false and route != '${ndsin.route}');
} else if(type == 'NDS'){
return route == '${ndsin.route}';
} else {
return false;
}
}
Приведенная выше функция с заполнителей собственности не работает то ни записей проходят. Но если я жестко закодировать значения, то я вижу записи фильтрации, как и ожидалось -
def filterE1Records(route,type){
if(type == 'COR'){
return (route >= 10000 and route <= 15000);
} else if(type == 'NONCOR'){
return ((route >= 10000 and route <= 15000) == false and route != 15001);
} else if(type == 'NDS'){
return route == 15001;
} else {
return false;
}
}
Если я удалю, что апостроф 'вокруг собственности, чтобы сделать его номер, а затем DW код не во время выполнения.
Любая идея, как сделать это сравнение работать?
Спасибо.
С вашего вопроса неясно, связана ли ваша проблема с тем, что заполнители не были разрешены или что тесты фактов работают только со сравнением строк. Вы говорите, что использование 'code> = 10000' работает, но когда вы удаляете' '', это не так, что звучит противоречиво. Вы уверены, что заполнители разрешены в 'global_expressions.mvel'? –
Спасибо, что посмотрели @DavidDossot. Есть ли способ узнать, разрешают ли заполнители свойства в файле global_expressions.mvel? Я уверен и проверен, если я помещаю местозаполнитель в dataweave прямо как p ('min.route'), тогда он правильно решает, что означает, что свойства настроены правильно. Я не думаю, что могу отлаживать файл выражения. Я имею в виду 'route> = 10000', но' route> = '$ {min.route}' 'не работает для тех же входных записей. –
Я не понимаю, почему вы цитируете местозаполнитель? Предполагая, что это разрешено, вы хотите использовать 'route> = $ {min.route}', иначе вы будете выполнять сравнение строк, а не число. –