Dataweave中的动态映射

时间:2016-04-27 15:31:18

标签: dynamic mule dataweave

我正在尝试使用流变量的内容在Dataweave中动态映射列名。我想要实现的静态版本看起来像:

payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUTA
})

现在我需要动态的部分是INPUTA - 我需要从在Dataweave组件之前设置的流变量派生A。我尝试过类似的东西:

payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUT#flowVars['varName']
})

但我收到com.mulesoft.weave.grammar.InvalidNamespacePrefixException错误。

这可以在Dataweave中实现吗?似乎找不到任何描述如何的相关文档。

3 个答案:

答案 0 :(得分:0)

尝试像MEL方式一样访问flowVar:#[flowVars.varName],不要使用前缀payload01

答案 1 :(得分:0)

如下所示使用它。注意键周围的括号是非常重要的,因为()告诉DataWeave首先在其中执行脚本,然后使用结果作为外部表达式的值。

    payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01[('INPUT' ++ flowVars.varName)]
})

让我知道这不起作用。

我看到您的密钥名称是COLUMNA,您也可以使用()将varName附加到密钥。

答案 2 :(得分:0)

从Dataweave中,您必须访问如下所示的flowvars或会话变量。 flowVars.varName sessionVars.varName

您可以使用各种Dataweave运算符来形成最终字段名称或值。 了解Dataweave Operators对于充分利用Dataweave组件至关重要。请通过以下链接了解Dataweave操作符。

https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators