0

我对 mule 中的变量几乎没有疑问。

  1. 如果我有如下所示的有效载荷,

在 Groovy 脚本中访问这些信息的最佳方式是什么?#[有效负载] 似乎不起作用...

<scripting:script engine="Groovy">
...
qr.update(conn, "INSERT INTO event values(#[payload], 1)");
..
</scripting:script>
  1. 如何将来自流中特定点的值存储到我可以在以后的任何时间点使用的变量中。

  2. 如果我有一个字符串类型的有效负载,并且我需要使用自定义 java 类解析字符串(以获取各种数据)。如何从 java 类中取回值。

例如,我有一个字符串如下,

SNO           :1
Application   : a

我有一个解析字符串并使用 get set 方法返回值的 java 类。

CustomString.class 只是一个 bean。

getSno 将返回序列号。getApplication 将返回应用程序名称

我不确定如何将值从 mule 传递给 java 类并将值返回给 mule。

我需要使用,

public Object transform(MuleMessage message, String encoding) throws TransformerException

如果下面的初始有效负载具有上述字符串,我可以将此有效负载传递给自定义转换器并从转换器中获取所需的值吗?

<set-payload value="values #[payload]" doc:name="Set Payload" />
<transformer ref="customTransformer" doc:name="Transform string"/>
<set-payload value="values #[payload['sNo']]" doc:name="Set Payload" />
4

1 回答 1

1
  1. 在 Groovy 中,payload变量绑定到消息负载。您可以直接使用它。#[payload]是 MEL 表达式,与 Groovy 无关。

  2. 这取决于您所说的“任何时间点”是什么意思。如果它在同一个流或被它引用的流中,您可以使用set-variable. 如果它在端点交互(出站 -> 入站)后位于另一个流中,请使用set-property,您将在下一个流中找到入站范围内的值。或者,您可以使用set-session-variable将值存储在 Mule 会话中,该会话将跨流维护。

  3. 如上所示,要么创建一个转换器,要么只使用一个普通的 POJO 作为component一个单一的方法,该方法接受一个字符串并返回 Bean。后一种方法的优点是它不会将您绑定到 Mule API。

于 2013-02-22T18:19:44.217 回答