如何使用和扩展Mule-EL?

时间:2014-09-24 09:29:57

标签: mule mule-studio mule-el mule-component

最近,我遇到了一些Mule文档,似乎我可以使用java类中的更多方法扩展MEL。有没有人有这方面的经验和工作方式?

因此,MEL会自动导入以下java类,以便我们可以在MEL中调用它们的方法。希望扩展这个java类列表。

MEL自动导入下面列出的Java类。您可以使用这些导入的类而不使用完整限定符名称。例如,因为导入了BigInteger,所以可以编写#[BigInteger.valueOf(payload.dueAmount)]而不是#[java.math.BigInteger.valueOf(payload.dueAmount)]。

  • 的java.lang。*
  • java.io。*
  • java.net。*
  • java.util中。*
  • java.math.BigDecimal中
  • java.math.BigInteger中
  • 的javax.activation.DataHandler
  • javax.activation.MimeType
  • java.util.regex.Pattern中
  • org.mule.api.transformer.DataType
  • org.mule.transformer.types.DataTypeFactory

有关于如何使用其他java类导入等定义全局配置的文档。但我不确定如何使用它。

<configuration>
  <expression-language autoResolveVariables="false">
    <import class="org.mule.util.StringUtils" />
    <import name="rsu" class="org.apache.commons.lang.RandomStringUtils" />
    <alias name="appName" expression="app.name" />
    <global-functions file="extraFunctions.mvel">
      def reversePayload() { StringUtils.reverse(payload) }
      def randomString(size) { rsu.randomAlphanumeric(size) }
    </global-functions>
  </expression-language>
</configuration>

如何使用上述配置访问MEL中的方法?会不会......

<set-variable value="#[appName.reversePayload()]" variableName="reversePayload" doc:name="Variable containing a reverse version of the Payload"/>

1 个答案:

答案 0 :(得分:2)

我认为它们没有资格。

<set-variable value="#[reversePayload()]" variableName="reversePayload" doc:name="Variable containing a reverse version of the Payload"/>