Mule アプリケーションの開発

Mule アプリケーションを作成してシステムインテグレーションを実行します。通常、アプリケーションは内部ソースや外部ソースからデータを読み込み、データを処理して必要な形式や構造に変換して、変換後のデータを格納または使用するシステムやサーバーに出力を書き込みます。

Mule アプリケーションは Mule Runtime Engine (Mule) で実行するように設定されています。Mule アプリケーションへの要求により、Mule は要求およびデータを Mule イベントでエンコードし、単一または複数のスレッドに渡します。

Mule アプリケーション開発入門

Mule アプリケーションの開発を始めるには、以下のチュートリアルの手順に従ってください。

Mule アプリケーションのビルディングブロック

Mule アプリケーションは、コネクタ、モジュール、コンポーネントを使用して、データの読み込み、書き込み、処理を行います。

  • コネクタおよびモジュール

    Anypoint Connector は、Mule アプリケーションから外部 API エンドポイントとやり取りしてデータを処理するコンポーネント (リスナーなど) を提供します。検証、Java、Spring、OAuth などのモジュールは、エンドポイントに直接接続せずに Mule アプリケーション内でデータを処理します。

  • コアコンポーネント

    コアコンポーネントは、フロー制御、エラー処理、ログ、バッチ処理など、アプリケーション内を流れるデータに対するプログラム操作をサポートします。

DataWeave 言語

DataWeave は、Mule で式を作成するために使用される主言語です。 コネクタ、モジュール、コンポーネントでは、DataWeave を使用してデータ構造や出力形式にアクセスし、処理や変換を行ったり、Mule アプリケーション内で処理するデータを抽出したりできます。

実行時に、Mule はフローを実行するときに DataWeave 式を評価して、次のことを行います。

  • 現在のメッセージを処理するために必要なデータの抽出

  • メッセージ内の値の設定または操作

Mule フロー

基本的なフローアーキテクチャを理解することは、Mule アプリケーションを理解するための鍵です。 基本的に、すべての Mule フローにはメッセージを受信または処理する一連の Mule コンポーネントが含まれています。

Design Center での簡単なフロー
Figure 1. Design Center での簡単なフロー

最もシンプルなレベルでは、フローは一連のプロセッサーです。フローに入ったメッセージは、さまざまなプロセッサーを通過します。一般的なフローでは、Mule アプリケーションはソース (HTTP Listener コンポーネントなど) を使用してメッセージを受信し、そのメッセージを新しい形式に変換し、何らかのビジネスロジックを処理してから、処理されたメッセージを外部システムに向けてそのシステムが読み取れる形式で記述します。

処理を管理しやすい単位に分割するために、通常、Mule アプリケーションには 1 つのフローではなく複数の相互に関係するフローが含まれています。1 つのフローから、他のフローを直接参照としてコールできます。

このトピックについての詳細は、​「フローおよびサブフロー」​と​「Mule コンポーネント」​を参照してください。

ソース

ソースコンポーネント (またはトリガー) は、フローの最初のコンポーネントです。このコンポーネントは、トリガーイベントを受信し、対応する Mule イベントを作成し、そのイベントを処理するためにフローの次のコンポーネントに転送します。

外部クライアントは、Mule フローでの処理をいくつかの通信プロトコルや方法でトリガーできます。たとえば、JMS、HTTP、FTP、JDBC、ファイルなどを使用できます。 Mule は、これらの通信プロトコルや方法を標準メッセージ形式に変換し、それをフローのプロセッサーに渡します。

Mule のソースは、標準プロトコルまたはサードパーティ API を使用して、特定の外部取得元に接続できます。また、Scheduler コンポーネントを設定することも可能です。一部のスケジューラーは、外部リソースの特定の変更 (外部リソースの新規ファイルやテーブル行など) へのポーリングを実行できます。フローをトリガーできるリスナーやコネクタ操作の例として、次のようなものがあります。

  • 関連するコネクタでの HTTP、JMS、VM リスナー

  • データベースコネクタでの On Table Row 操作

  • ファイルコネクタや FTP Connector での On New or Updated File 操作

  • スケジューラー

Mule SDK​ を使用して独自のソースを作成することもできます。

プロセッサー

ソースコンポーネントによってフローがトリガーされると、データはフロー内を通過し、後続のコンポーネントによって処理されます。デフォルトでは、Mule イベントを受信する各プロセッサーは、新しい Mule メッセージを返します。通常、このメッセージにはプロセッサーが返す属性セットとメッセージペイロードが含まれます。プロセッサーは、新しいメッセージを出力としてフロー内の次のプロセッサーに転送します。

Mule アプリケーションで使用できるプロセッサーには、次のものがあります。

  • モジュールやコネクタからのコンポーネント

    たとえば、外部リソースからの読み込みや外部リソースへの書き込み、Mule アプリケーション内でのデータの検証などの操作があります。 一部の操作は、外部のリソースおよびサービス (Salesforce、Workday、ServiceNow などの多数の外部データベースやシステムを含む) や他の Mule アプリケーションへのクライアント要求を行うことができます。または、カスタムコードの実行、OAuth 設定のサポート、非同期キューを使用した通信の管理を実行できる操作もあります。他にも多くの操作が用意されています。

  • コアコンポーネント

    コアコンポーネントは、データの転送、データ変換の実行、イベント処理中に発生したエラー処理など、Mule アプリケーション内のタスクを実行できます。

    トランスフォーマー (Transform Message や Set Variable など) は、ノード間でデータを交換するために重要です。トランスフォーマーを使用することで、Mule は Mule イベント内のメッセージデータを別のアプリケーションやサービスが読み取れる形式に変換できます。

    また、Mule ではメッセージのコンテンツ強化 (​対象変数​を使用) も有効なため、追加データを取得して、メッセージに添付することができます。

Mule SDK​ を使用して独自のイベントプロセッサーを作成することもできます。

セキュリティ

プロパティの暗号化、TLS 上でのセキュア通信の設定、OAuth 2.0 による認証のセットアップ、さらには暗号化や FIPS 準拠などの機能を使用することで、Mule アプリケーションを保護できます。

開発環境

Mule アプリケーションは、​Anypoint Studio​ (Eclipse ベースの IDE) や ​Flow Designer​ (Anypoint Platform 上の Design Center で提供されるクラウドベースのアプリケーション)、そして上級者であれば自分の IDE で開発できます。

たとえば、Studio では、1 つ以上の XML ベースファイルを含むプロジェクトで Mule アプリケーションをビルドおよび設計します。Mule プロジェクトは、開発に必要なすべての連動関係をサポートします。Studio の ​[Package Explorer]​ ビューには、Mule プロジェクトを構成するプロジェクトフォルダーとファイルが表示されます。 Studio は、Mule アプリケーションをビルド、実行、テストするための設計環境を提供します。Flow Designer は、Mule プロジェクトのクラウドベースバージョンをサポートします。

Mule のバージョン設定

使用する Mule のバージョンによって、Mule アプリケーション、ドメイン、またはポリシーで実行できる内容と Mule との互換性がある機能や製品が決まります。 たとえば、Mule アプリケーションのフロー内を通過する Mule イベントを処理する​コアコンポーネント​は、Mule にバンドルされ、Mule と同じバージョンのコアモジュールの一部です。 モジュール、コネクタ​、DataWeave 言語、いくつかの MuleSoft 製品には、固有のバージョン設定システムがありますが、特定のバージョンの Mule と互換性があります。たとえば、DataWeave 2.0 と Studio 7.x は Mule 4.x Runtime Engine と互換性があり、DataWeave 1.0 と Studio 6.x は Mule 3.x Runtime Engine と互換性があります。Mule アプリケーションで使用するコネクタやモジュールが、Mule バージョンと互換性があることを確認する必要があります。