 |
ライセンス制約のために、ESB MuleにJSR-223ライブラリを同梱することができません。最新版のESB Muleは、インストレーション中にインターネットから必要なファイルをダウンロードします。そのために、インターネットに接続できない場合は、JSR-223スクリプティングが使えませんので注意してください。 |
ESB Muleコンポーネント、トランスポート、設定にPHP(ステートレス), Groovy, Rhino(JavaScript)のような
JSR-223 に準拠のスクリプト言語を使うことができます。
スクリプト・コンポーネント
スクリプトはESB Muleが管理しているコンポーネントとしてorg.mule.components.script.jsr223.ScriptComponentを使って、呼び出すことができます。
Groovyを使った例:
<mule-descriptor name="GroovyUMO"
inboundEndpoint="jms://groovy.queue"
implementation="org.mule.components.script.jsr223.ScriptComponent">
<properties>
<property name="scriptEngineName" value="groovy"/>
<text-property name="scriptText">
return "Received message: " + message.getPayload()
</text-property>
</properties>
</mule-descriptor>
ScriptComponentに次のプロパティを設定することができます:
| プロパティ |
説明 |
| scriptText |
実行するスクリプトの文字列。 |
| scriptFile |
スクリプト・ファイルの場所(ファイル・システムのクラス・パス) |
| scriptEngineName |
解析するスクリプトのタイプ。例:php, groovy, javascript |
スクリプトからESB Muleの利用
スクリプトが実行されると、JSR-223 APIは名前空間に対応しています。スクリプトから名前で参照できるオブジェクトの集まりです。
ESB Muleは以下のオブジェクトを提供しています: || 名前 || 説明 ||
| eventContext |
現在のUMOEventContext |
| managementContext |
ESB Muleマネージャのインスタンス |
| message |
現在のUMOMessage。「context.getMessage()」を使って取得することもできます。 |
| descriptor |
このUMODescriptorオブジェクトを表すスクリプト・コンポーネント。 |
| componentNamespace |
このスクリプトの名前コレクションへのレファレンス |
| log |
スクリプト・コンポーネントが使う共有ログ(Logger)のインスタンス |
| result |
スクリプト・コンポーネントから結果を戻すために使える「result」オブジェクト変数。 |
スクリプト構成ブルダ
ScriptConfigurationBuilderは、SR-223準拠スクリプトからESB Muleインスタンスを生成します。JavaScriptからマネージャをロードするには以下のように記述します:
ScriptConfigurationBuilder builder = new ScriptConfigurationBuilder("javascript");
UMOManager manager = builder.configure("../conf/mule-config.js");
又は、コマンド・ラインからサーバを開始するには:
java -Dorg.mule.script.engine=javascript
-cp ... org.mule.MuleServer
-builder org.mule.config.builders.ScriptConfigurationBuilder
-config ../conf/mule-config.js
プログラム又はスクリプトを使って、ESB Muleインスタンスを設定するに付いてはプログラムからESB Muleを設定を参照してください。
スクリプト変換(Script Transform)
スクリプトを使ってオブジェクトを変換することができます。トランスフォーマはScriptComponentを同じように設定されます。
以下の例は、Groovyを使ってコンマ「,」区切りの文字列(String)を java.util.List に変換します:
<transformer name="StringToList" returnClass="java.util.List"
className="org.mule.transformers.script.ScriptTransformer">
<properties>
<property name="scriptEngineName" value="groovy"/>
<property name="sourceType" value="java.lang.String"/>
<text-property name="scriptText">
return src.toString().tokenize(",")
</text-property>
</properties>
</transformer>
sourceType プロパティは、トランスフォーマに文字列方(String)のソース・オブジェクトのみを受信するように指示します。このプロパティは異なるソース・タイプ毎に設定することができます。
scriptText プロパティは呼び出すgroovyスクリプトを指定します。
トランスフォーマの returnClass 属性は、トランスフォーマから java.util.List が戻されるようにします。