如何创建可在dataweave中重用的函数

时间:2017-02-16 12:04:51

标签: function mule anypoint-studio dataweave

我在Dataweave转换消息组件中有3个函数,我想在其他4个转换消息组件中重用这些函数。

有没有办法可以集中3个函数并在其他4个转换消息组件中引用它们,而无需将函数复制并粘贴到我想要使用的每个转换消息中?

我正在使用Anypoint Studio 6.1和Mule 3.8.1。

我希望在项目中全局访问的Dataweave中的3个函数是:

%function acceptable(value) (
    value match {
        :null -> false,
        a is :array -> a != [{}],
        o is :object -> o != {},
        s is :string -> s != "",
        default -> true
    }
)

%function filterKeyValue(key, value) (
    {(key): value} when acceptable(value) otherwise {}
)

%function removeFields(x)
    x match {
        a is :array -> a map removeFields($),
        o is :object -> o mapObject
            (filterKeyValue($$, removeFields($))),
        default -> $
    }

这些函数是从Stackoverflow帖子中删除空字段的,我在尝试部署应用程序时收到此错误:

INFO  2017-02-17 19:31:37,190 [main] org.mule.config.spring.MuleArtifactContext: Closing org.mule.config.spring.MuleArtifactContext@70b2fa10: startup date [Fri Feb 17 19:31:30 GMT 2017]; root of context hierarchy
ERROR 2017-02-17 19:31:37,478 [main] org.mule.module.launcher.application.DefaultMuleApplication: null
org.mule.mvel2.CompileException: [Error: unknown class or illegal statement: org.mule.mvel2.ParserContext@515940af]
[Near : {... value match { ....}]
                        ^
[Line: 3, Column: 20]
    at org.mule.mvel2.compiler.AbstractParser.procTypedNode(AbstractParser.java:1476) ~[mule-mvel2-2.1.9-MULE-010.jar:?]

由于

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以在配置部分创建一个全局函数,并从您的Dataweave中调用它。