在Dataweave中输入变量

时间:2015-07-15 22:53:06

标签: mule dataweave

我正在阅读Dataweave documentation,并对下面的示例感到困惑。

文档说

  

输入指令允许您创建任意数量的输入源   可用于全局变量,然后可以在任何变量中引用   变形体的一部分。要参考其中一个,你可以   按照你在指令中定义的名称来调用它。

然后跟进以下示例

%dw 1.0
%input in0
%output application/xml
---
payload

我的问题:

在哪个范围内mule会查找变量in0?有效负载,流量,会话或其他什么,以及以何种顺序?

在这个例子中,在哪里使用?在这个例子中它有什么帮助?

为什么我需要一个输入变量? Dataweave似乎允许使用flowVars.hello。

2 个答案:

答案 0 :(得分:1)

我认为这个例子与文本不匹配。那个例子应该是:

%dw 1.0
%input in0
%output application/xml
---
in0

默认情况下,输入(无论您将其命名)都是有效负载。您可以明确地并且可选地将有效负载定义为标头中的输入指令,但这不是必需的。

%dw 1.0
%input payload application/xml
%output application/xml
---
{
  a: payload
}

此外,在文档中还有更好的示例:

  

CSV输入指令定义CSV类型的输入时,有一个   您可以添加到输入指令的可选参数很少   自定义数据的解析方式。

     

header:boolean,定义数据中的第一行是否包含   头

     

separatorChar:分隔字段的字符,','默认情况下

     

quoteChar:定义引用文字的字符," "默认情况下

     

escapeChar:转义引号的字符,/默认情况下

     

设置了自定义参数的CSV输入指令如下所示:

     

%input in0 application / csv header = true separatorChar =;什么时候   header = true然后您可以在任何地方访问输入中的字段   按名字。例如:in0.userName。

     

当header = false时,您必须按索引访问字段,引用   首先是条目然后是字段,例如:in0 [107] [2]

答案 1 :(得分:0)

通常,您不需要使用%input指令声明任何内容。默认情况下,有效负载,flowVars,入站/出站属性,sessionVars等可以在数据编织中访问,就像它们在MEL中一样。

MEL与Java相同,您可以在java中编写的任何调试(System.out)也可以在MEL中完成。

%dw 1.0
%output application/java
---
{
    GENDER: payload.gender,
    test:flowVars.test,
    testIp:inboundProperties.testIp,
    testOp:outboundProperties.testOp
}

查看此示例以了解多个输入 - Multiple Inputs