1

我正在阅读Dataweave 文档,并被下面的示例难住了。

文件说

输入指令允许您在全局变量中提供任意数量的输入源,然后可以在转换主体的任何部分中引用这些输入源。要引用其中之一,您可以使用您在指令中定义的名称来调用它。

然后跟进下面的例子

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

我的问题:

mule 将在哪些范围内查找变量 in0?有效负载、流、会话或其他东西,以及按什么顺序?

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

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

4

2 回答 2

2

我认为该示例与文本不匹配。该示例应该是:

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

默认情况下,输入(无论您如何命名)将是有效负载。您可以只是显式的,也可以选择将有效负载定义为标头中的输入指令,尽管这不是必需的。

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

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

CSV 输入指令 在定义 CSV 类型的输入时,您可以将一些可选参数添加到输入指令中,以自定义数据的解析方式。

header:布尔值,定义数据中的第一行是否包含标题

separatorChar:分隔字段的字符,默认为','

quoteChar:定义引用文本的字符,默认为“”

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

带有自定义参数集的 CSV 输入指令如下所示:

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

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

于 2015-07-16T10:12:33.633 回答
0

通常,您不需要使用 %input 指令声明任何内容。默认情况下,有效载荷、flowVars、入站/出站属性、sessionVars 等可以在 dataweave 中访问,就像在 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
}

查看此示例以获取多个输入 - 多个输入

于 2016-02-26T19:17:03.660 回答