Anypoint Studio を使用した Scripting Module の設定 - Mule 4

Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。

Studio で Scripting Module を追加して設定する手順は、次のとおりです。

「アプリケーションログの表示」​で説明されているように、コネクタを実行するときに、アプリケーションログを表示して問題を確認できます。

Studio で初めてコネクタを設定する場合は、​「Anypoint Studio を使用したコネクタの設定」​を参照してください。このトピックを読んだ後でモジュール項目の追加情報が必要になった場合は、​「Scripting Module リファレンス」​を参照してください。

Mule プロジェクトを作成する

Studio で、モジュールを追加して設定する新規 Mule プロジェクトを作成します。

  1. Studio のメインメニューから ​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ を選択します。

  2. Mule プロジェクトの名前を入力して、​[Finish (完了)]​ をクリックします。

モジュールを Mule プロジェクトに追加します。

Scripting Module を Mule プロジェクトに追加すると、XML コードにモジュールの名前空間とスキーマの場所が自動的に入力され、プロジェクトの ​pom.xml​ ファイルに必要な連動関係が追加されます。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  2. [Add Modules to Project (モジュールをプロジェクトに追加)]​ で、検索項目に「​scripting module​」と入力します。

  3. [Available modules (使用可能なモジュール)]​ で ​[Scripting Module]​ をクリックします。

  4. [Add (追加)]​ をクリックします。

  5. [Finish (完了)]​ をクリックします。

Studio でモジュールを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのモジュールを使用できません。

入力元を設定する

ソースは、指定された条件が満たされたときにフローを開始します。 次の入力元のいずれかを Scripting Module で使用するように設定できます。

  • HTTP Listener​: 設定されたホストとポートで要求を受信するたびにフローを開始

  • Scheduler​: 時間ベースの条件が満たされたときにフローを開始

たとえば、​HTTP Listener​ を設定するには、次の手順に従います。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[HTTP]​ > ​[Listener]​ を選択します。

  2. [Listener]​ を Studio キャンバスにドラッグします。

  3. [Listener (リスナー)]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

  4. [Path (パス)]​ 項目の値を指定します。

  5. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内のすべての ​HTTP Listener​ インスタンスで使用できるグローバル要素を設定します。

  6. [General (一般)]​ タブで、接続情報を指定します。

  7. [TLS]​ タブで、必要に応じて TLS 情報を指定します。

  8. [Advanced (詳細)]​ タブで、必要に応じて再接続戦略を含む再接続情報を指定します。

  9. [Test Connection (接続をテスト)]​ をクリックして、Mule が特定のサーバーに接続できることを確認します。

  10. [OK]​ をクリックします。

Execute 操作をフローに追加する

モジュール操作をフローに追加することで、そのモジュールが実行する特定の操作が直ちに定義されます。

Scripting Module の Execute 操作を追加する手順は次のとおりです。

  1. [Mule Palette (Mule パレット)]​ ビューで ​[Scripting Module]​ を選択してから、​[Execute]​ を選択します。

  2. Execute​ 操作を Studio キャンバスのソースの右にドラッグします。

  3. [Execute]​ をクリックして Execute の設定タブを開きます。

  4. 次の 2 つのオプションのどちらかを使用して ​jsr-223​ 準拠エンジンをインストールして設定します。

    • [Required Libraries (必須のライブラリ)]​ セクションで ​[Configure…​ (設定…​)]​ をクリックし、次のオプションのいずれかを選択してエンジンを検索およびインストールします。

      • Add recommended libraries (推奨されるライブラリを追加)
        推奨される Groovy エンジンをインストールします。このオプションは、Groovy をインストールしていない場合にのみ表示されます。

      • Use local file (ローカルファイルを使用)
        ローカルファイルで必要なエンジンライブラリを探してインストールします。

      • Maven の連動関係を追加する
        エンジンの連動関係を探してインストールします。

    • pom.xml​ ファイルで、次の 2 つのセクションの間にエンジンを手動で追加します。

      • <configuration>​ セクションの ​<sharedLibraries>​ タグ

      • <dependencies>​ セクションの ​<dependency>​ タグ

  1. [Execute]​ タブの ​[General (一般)]​ セクションで、更新ボタンをクリックして操作のエンジン値のリストを更新します。

  2. [Engine (エンジン)]​ で、インストールされているエンジンを選択します。

  3. [Code (コード)]​ テキストボックスにスクリプトコードを入力します。
    さらに、​ファイル設定プロパティ​を使用して外部ファイルからスクリプトコードを読み込むこともできます。

Studio での Jython エンジンの設定は次のようになります。

[Configure (設定)] ボタンを使用してエンジンをインとする
Figure 1. [Configure (設定)] ボタンを使用してエンジンをインとする

pom.xml​ ファイルでの Jython エンジンの手動による追加は次のようになります。

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-clean-plugin</artifactId>
			<version>3.0.0</version>
		</plugin>
	  <plugin>
			<groupId>org.mule.tools.maven</groupId>
			<artifactId>mule-maven-plugin</artifactId>
			<version>${mule.maven.plugin.version}</version>
			<extensions>true</extensions>
			<configuration>
				<sharedLibraries>
          <sharedLibrary>
            <groupId>org.python</groupId>
            <artifactId>jython-standalone</artifactId>
          </sharedLibrary>
        </sharedLibraries>
      </configuration>
			</plugin>
		</plugins>
	</build>

<dependencies>
  <dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
   <version>2.7.2</version>
  </dependency>
</dependencies>

Studio でのスクリプトコードでの Scripting Module の設定は次のようになります。

スクリプトコードによる Scripting Module の設定
Figure 2. スクリプトコードによる Scripting Module の設定

Configuration XML (設定 XML)​ エディターでは、XML は次のように記述されます。

<scripting:execute engine="python" doc:name="Script">
    <scripting:code>
      def factorial(n):
          if n == 0: return 1
	  return n * factorial(n-1)

      result = factorial(10)
    </scripting:code>
</scripting:execute>

Studio で外部ファイルを使用して読み込まれたスクリプトは次のようになります。

外部ファイルを使用したスクリプトコード
Figure 3. 外部ファイルを使用したスクリプトコード

Configuration XML (設定 XML)​ エディターで、スクリプトを次のように ​<scripting:code>​ タグの間に配置します。

<scripting:execute engine="python">
    <scripting:code >${file::script.py}</scripting:code>
</scripting:execute>

他のモジュール項目の設定

Parameters (パラメーター)​、​Target Variable (対象変数)​、​Target Value (対象値)​ など、Execute 操作の他の追加項目も設定できます。

Parameters パラメーター

Parameters​ パラメーターを使用すると、スクリプトが使用する入力値を DataWeave 式で定義できます。DataWeave 式が正常に機能するためには、Parameters の出力種別を組み合わせる必要があり、キーは文字列で値は任意のオブジェクトとなります。Parameters をバインド変数として使用する場合は、次のように名前で参照します。

factorial(initialValue + int(payload))

このパラメーターを Scripting Module 用に設定する手順は次のとおりです。

  1. Studio キャンバスでコネクタの名前を選択します。

  2. [General (一般)]​ セクションの ​[Parameters (パラメーター)]​ 項目にパラメーター値を追加します。

Studio でのパラメーターの設定は次のようになります。

パラメーターを使用したスクリプト
Figure 4. パラメーターを使用したスクリプト

Configuration XML (設定 XML)​ エディターでは、XML は次のように記述されます。

<scripting:execute engine="python" >
	<scripting:code >def factorial(n):
	if n == 0: return 1
	return n * factorial(n-1)
result = factorial(initialValue + int(payload))</scripting:code>
	<scripting:parameters ><![CDATA[#[{
        initialValue: 3
    }]]]></scripting:parameters>
</scripting:execute>

Target Variable (対象変数) と Target Variable (対象値)

Target Variable​ パラメーターは、操作の出力を格納する変数の名前を定義します。​Target Variable​ パラメーターは、操作の出力に対して評価する式を定義します。この式の出力は対象変数に保存されます。

これらのパラメーターを Scripting Module 用に設定する手順は、次のとおりです。

  1. Studio キャンバスでコネクタの名前を選択します。

  2. [Advanced (詳細)]​ タブで、​[Target Variable (対象変数)]​ と ​[Target Value (対象値)]​ をスクリプト実行の​対象​として定義します。

Studio での対象変数と対象値の設定は次のようになります。

詳細設定
Figure 5. スクリプトの Target Variable と Target Variable

Configuration XML (設定 XML)​ エディターでは、XML は次のようになります。

<scripting:execute engine="python" target="variableName">
    <scripting:code >${file::script.py}</scripting:code>
</scripting:execute>

アプリケーションログの表示

問題を確認するため、アプリケーションログを次の方法で表示できます。

  • アプリケーションを Anypoint Studio から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。

  • コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。

アプリケーションのログファイル (​log4j2.xml​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​MULE_HOME/logs/<app-name>.log​ でアプリケーションログを表示することもできます。