2

我有一个供多个数据编织转换使用的通用函数,因此我想将其编写为 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 代码在运行时会失败。

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

谢谢。

4

1 回答 1

0

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

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

app.registry.myConfigBean.minRoute

或者:

app.registry.myConfigProperties['min.route']
于 2016-02-24T18:40:10.790 回答