最近、Mule のドキュメントをいくつか見つけました。Java クラスのメソッドを追加して MEL を拡張できるようです。誰もこれを行った経験があり、それがどのように機能するのですか?
そのため、MEL は次の Java クラスを自動的にインポートして、MEL でそれらのメソッドを呼び出せるようにします。この Java クラスのリストを拡張したいと考えていました。
MEL は、次に示す Java クラスを自動的にインポートします。これらのインポートされたクラスは、完全修飾名を使用せずに使用できます。たとえば、BigInteger がインポートされるため、#[java.math.BigInteger.valueOf(payload.dueAmount)] の代わりに #[BigInteger.valueOf(payload.dueAmount)] を記述できます。
- java.lang.*
- java.io.*
- java.net.*
- java.util.*
- java.math.BigDecimal
- <em>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"/>