Mulesoft-flow-control-and-transformers

提供:Dev Guides
移動先:案内検索

MuleSoft-フロー制御と変圧器

フロー制御(ルーター)

フロー制御コンポーネントの主なタスクは、入力Muleイベントを取得し、それを1つ以上のコンポーネントシーケンスにルーティングすることです。 基本的には、入力Muleイベントをコンポーネントの他のシーケンスにルーティングします。 したがって、ルーターとも呼ばれます。 Choice and Scatter-Gatherルーターは、フロー制御コンポーネントで最も使用されているルーターです。

選択肢ルーター

名前が示すように、このルーターはDataWeaveロジックを適用して2つ以上のルートのいずれかを選択します。 前述のように、各ルートはESB Muleイベントプロセッサの個別のシーケンスです。 選択ルーターは、メッセージコンテンツの評価に使用される一連のDataWeave式に従って、フローを介してメッセージを動的にルーティングするルーターとして定義できます。

選択肢ルーターの概略図

Choiceルーターを使用する効果は、ほとんどのプログラミング言語でフローまたは if/then/else コードブロックに条件付き処理を追加するのと同じです。 以下に、3つのオプションがある選択肢ルーターの概略図を示します。 これらのうち、1つはデフォルトのルーターです。

選択ルーター

スキャッターギャザールーター

もう1つの最もよく使用されるルーティングイベントプロセッサは、* Scatter-Gatherコンポーネント*です。 その名前が示すように、スキャター(コピー)とギャザー(統合)の基本に作用します。 私たちは次の2つのポイントの助けを借りてその働きを理解することができます-

  • まず、このルーターはMuleイベントを2つ以上のパラレルルートにコピー(散布)します。 条件は、各ルートがサブフローのような1つ以上のイベントプロセッサのシーケンスでなければならないということです。 この場合の各ルートは、個別のスレッドを使用してMuleイベントを作成します。 各Muleイベントには、変数と同様に独自のペイロード、属性があります。
  • 次に、このルーターは各ルートから作成されたMuleイベントを収集し、それらを新しいMuleイベントに統合します。 その後、この統合Muleイベントを次のイベントプロセッサに渡します。 ここでの条件は、すべてのルートが正常に完了した場合にのみ、S-Gルーターが統合Muleイベントを次のイベントプロセッサに渡すことです。

スキャッターギャザールーターの概略図

以下は、4つのイベントプロセッサを持つスキャターギャザールーターの概略図です。 すべてのルートを順番に実行するのではなく、並行して実行します。

Scatter Gather Router

スキャッターギャザールーターによるエラー処理

まず、Scatter-Gatherコンポーネント内で生成される可能性のあるエラーの種類に関する知識が必要です。 Scatter-Gatherコンポーネントがタイプ Mule:COMPOSITE_ERROR のエラーをスローするイベントプロセッサ内でエラーが生成される場合があります。 このエラーは、すべてのルートが失敗または完了した後にのみ、S-Gコンポーネントによってスローされます。

このエラータイプを処理するには、Scatter-Gatherコンポーネントの各ルートで* tryスコープ*を使用できます。 エラーが try scope によって正常に処理された場合、ルートはMuleイベントを確実に生成できます。

変圧器

ESB Muleイベントの一部を設定または削除する場合は、Transformerコンポーネントが最適な選択肢です。 トランスコンポーネントは次のタイプのものです-

可変トランスフォーマーを削除

名前が示すように、このコンポーネントは変数名を取得し、Muleイベントからその変数を削除します。

変数トランスフォーマーの削除の構成

以下の表は、変数トランスフォーマーの削除を構成する際に考慮されるフィールドの名前とその説明を示しています-

Sr.No Field & Explanation
1

Display Name (doc:name)

ESB Muleワークフローでこのコンポーネントの一意の名前を表示するようにカスタマイズできます。

2

Name (variableName)

削除する変数の名前を表します。

ペイロードトランスフォーマーの設定

*set-payload* コンポーネントを使用して、メッセージのペイロードを更新できます。ペイロードは、リテラル文字列またはDataWeave式にすることができます。 このコンポーネントを複雑な式や変換に使用することはお勧めしません。 *selections* のような単純なものに使用できます。

次の表は、セットペイロードトランスフォーマーの構成中に考慮されるフィールドの名前とその説明を示しています-

Field Usage Explanation
Value (value) Mandatory The value filed is required for setting a payload. It will accept a literal string or DataWeave expression defining how to set the payload. The examples are like “some string”
Mime Type (mimeType) Optional It’s optional but represents the mime type of the value assigned to the payload of message. The examples are like text/plain.
Encoding (encoding) Optional It’s also optional but represents the encoding of the value that is assigned to the payload of message. The examples are like UTF-8.

私たちはXML構成コードを介してペイロードを設定できます-

静的コンテンツあり-次のXML構成コードは、静的コンテンツを使用してペイロードを設定します-

<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
   mimeType = "application/json" encoding = "UTF-8"/>

式コンテンツを使用-次のXML構成コードは、式コンテンツを使用してペイロードを設定します-

<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>

上記の例は、今日の日付にメッセージペイロード「Hi」を追加します。

可変変圧器の設定

*set variable* コンポーネントの助けを借りて、Muleアプリケーションのフロー内で使用するために、文字列、メッセージペイロード、属性オブジェクトなどの単純なリテラル値である値を格納する変数を作成または更新できます。 このコンポーネントを複雑な式や変換に使用することはお勧めしません。 *selections* のような単純なものに使用できます。

セット変数トランスフォーマーの構成

次の表は、セットペイロードトランスフォーマーの構成中に考慮されるフィールドの名前とその説明を示しています-

Field Usage Explanation
Variable Name (variableName) Mandatory It is required filed and it represents the name of the variable. While giving the name, follow the naming convention like it must contain number, characters and underscores.
Value (value) Mandatory The value filed is required for setting a variable. It will accept a literal string or DataWeave expression.
Mime Type (mimeType) Optional It’s optional but represents the mime type of the variable. The examples are like text/plain.
Encoding (encoding) Optional It’s also optional but represents the encoding of the variable. The examples are like ISO 10646/Unicode(UTF-8).

以下の例では、変数にメッセージペイロードを設定します-

Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio

同様に、以下の例では、変数にメッセージペイロードを設定します-

Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.