【问题标题】:Need clarification of variables in mule需要澄清 mule 中的变量
【发布时间】:2013-02-22 17:32:47
【问题描述】:

我对 mule 中的变量有一些疑问。

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

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

<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" />

【问题讨论】:

    标签: mule


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

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 2011-11-09
      • 2012-07-18
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2017-01-18
      相关资源
      最近更新 更多