需要澄清骡子中的变量

时间:2013-02-22 17:32:47

标签: mule

关于骡子中的变量我几乎没有问题。

  1. 如果我有如下的有效负载,
  2. 在Groovy脚本中访问此信息的最佳方法是什么? #[payload]似乎不起作用......

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

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

    3. 例如我有一个字符串,如下所示

      SNO           :1
      Application   : a
      

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  3. 创建变换器,如上所示,或者只使用普通POJO作为component,使用一个接受String并返回Bean的方法。后一种方法的优势在于它不会将您与Mule API联系起来。