我正在阅读Dataweave documentation,并对下面的示例感到困惑。
文档说
输入指令允许您创建任意数量的输入源 可用于全局变量,然后可以在任何变量中引用 变形体的一部分。要参考其中一个,你可以 按照你在指令中定义的名称来调用它。
然后跟进以下示例
%dw 1.0
%input in0
%output application/xml
---
payload
我的问题:
在哪个范围内mule会查找变量in0?有效负载,流量,会话或其他什么,以及以何种顺序?
在这个例子中,在哪里使用?在这个例子中它有什么帮助?
为什么我需要一个输入变量? Dataweave似乎允许使用flowVars.hello。
答案 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