Scripting コンポーネントの移行

このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

Mule 3 の ​<scripting>​ コンポーネントは、新しい ​<scripting>​ モジュールに置き換わります。この新しいモジュールは、構文が少し変更されていますが、機能面ではかなり似ています。

Mule 3 の例: スクリプティング
 <flow name="greedy">
    <choice>
        <when expression="#[flowVars['currency'] == 'USD']">
            <scripting:component>
                <scripting:script file="greedy.groovy">
                    <property key="currency" value="USD"/>
                </scripting:script>
            </scripting:component>
            </when>
        <when expression="#[flowVars['currency'] == 'GBP']">
            <scripting:component>
                <scripting:script file="greedy.py">
                    <property key="currency" value="GBP"/>
                </scripting:script>
            </scripting:component>
            </when>
    </choice>
</flow>

+

Mule 4 の例: スクリプティング
 <flow name="greedy">
    <scripting:execute engine="groovy">
        <scripting:code>${file::greedy.groovy}</scripting:code>
        <scripting:parameters>
            #[{currency: vars.currency}]
        </scripting:parameters>
    </scripting:execute>
</flow>

このように、主な違いは DataWeave を使用して入力パラメーターを生成できるようになったことです。

スクリプトから変数へのアクセス

上の例では、変数を使用してパラメーターをスクリプトに渡す方法を示しています。Mule アプリケーションの変更によりスクリプトを変更する必要がないように、スクリプトをフローの残りの部分から分離しておくことが最良の方法です。

ただし、​vars​ キーワードを使用して、引き続きスクリプトから変数にアクセスすることができます。例:

Mule 4 の例: 変数への直接アクセス
<flow name="greedy">
    <scripting:execute engine="groovy">
        <scripting:code>return "currency is " + vars.currency</scripting:code>
    </scripting:execute>
</flow>

スクリプティングモジュールを使用するには、Studio のパレットを使用してアプリケーションに追加するか、​pom.xml​ ファイルで次の連動関係を追加します。

<dependency>
  <groupId>org.mule.modules</groupId>
  <artifactId>mule-scripting-module</artifactId>
  <version>1.1.0</version> <!-- or newer -->
  <classifier>mule-plugin</classifier>
</dependency>