用于过滤记录的Mule表达式语言和全局函数

时间:2016-02-22 20:43:48

标签: mule dataweave

我有一个共同的功能,可供多个数据编辑转换使用,所以我想把它写成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;
                    }

                }

如果我删除单引号&#39;在属性周围使其成为数字,然后DW代码在运行时失败。

知道如何进行这种比较吗?

感谢。

1 个答案:

答案 0 :(得分:0)

  

根据评论中的讨论,我将假设属性解析在导入的MEL文件中不起作用。

您可以通过Spring setter注入在bean中加载这些不同的属性,或者使用Spring的实用程序在java.util.Properties对象中加载这些不同的属性,然后查找它们:

app.registry.myConfigBean.minRoute

或:

app.registry.myConfigProperties['min.route']