実行時に変化する値のカードへの入力

ペイロード項目、属性、および変数をプレーンテキスト項目にドラッグアンドドロップして、テキストと組み合わせるか、または単独で使用することで、静的な値ではなく動的な値を指定できます。値は、Mule アプリケーションを実行してフローがトリガされた時点で代入されます。

このタスクについて

フローを構成するカードには、いくつかの異なる種類の項目があります。

  • ユーザが選択するオプションを提供する項目

  • DataWeave 式を作成するための関数項目

  • 通常は静的で変化しない値を提供するプレーンテキスト項目

Design Center では、通常の項目で静的値の代わりに動的値を指定することができます。このロガーカードの画像に示すように、前に別のカードがあるすべてのカードは、1 つ前のカードからのペイロードのすべての属性と要素のリストを表示します (ここでは青色の枠で強調表示されています)。

logger with list

このリストには、フローに追加されている以前のカードからのすべての変数も含まれます。必要な操作は、追加するペイロード項目、属性、および変数をテキスト項目にドラッグアンドドロップするだけです。項目では、追加されている文字列にこれらが連結されます。

始める前に

カードのリストに表示されるペイロード項目、変数、および属性は、1 つ前のカードから渡されます。デフォルトのペイロードと (属性がある場合は) 属性は、常に要求するアクションなしで表示されます。ただし、メッセージのペイロードの要素を表示するためには、1 つ前のカードで出力ペイロードのカスタムデータ型を定義しておく必要があります。(1 つ前のカードが Set Variable カードである場合は、さらに 1 つ前のカードで出力ペイロードのカスタムデータ型を定義する必要があります。)変数をリストに表示するには、前のカードで変数を定義しておく必要があります。

たとえば、HTTP リスナの出力ペイロードを解析してペイロードデータを含むメッセージをログに記録するためのロガーが必要だとします。そのため、/example を HTTP リスナのエンドポイントとして、次のシンプルなフローをセットアップします。

simple flow before you begin

Logger カードのリストは、次の画像で青色で強調表示されたリストのようになります。

logger initial list

HTTP リスナはデフォルトのペイロードを使用しているため、受信するデータが特定の形式であるとは期待されません。リストエントリの payload[Message (メッセージ)] 項目にドラッグアンドドロップした場合、ロガーは、HTTP リスナから受信したすべてのペイロード全体をこのログファイルに記録しようとします。

次に、HTTP リスナがロガーに送信するペイロード部分を制限したいとします。JSON 例を使用して HTTP リスナの出力ペイロードのカスタムデータ型を作成することで、HTTP リスナが受信したペイロードから firstName 要素と lastName 要素のみを送信することができます。

{
	"firstName": "Ian",
	"lastName": "Stewart"
}

Design Center がフローのカスタムデータ型を認識するまで少しの間を置いて、Logger カードを再び開くと、リストの payload エントリが firstNamelastName に置き換わっています。

logger with list

下記の例では、HTTP Listener カードでカスタムデータ型を作成し、Logger カードで動的メッセージを作成して、Mule アプリケーションを実行することで動的メッセージをログに記録する手順を説明しています。

Logger カードの式で変数を使用する場合は、その直前に Set Variable カードを追加します。この例では、Set Variable カードで firstNameBasis 変数を定義して Logger カードに渡しています。

first name basis

手順

  • カードの右側にあるリストから、1 つまたは複数のペイロード項目、属性、または変数をカードのテキスト項目までドラッグアンドドロップします。リストエントリをドラッグすると、ドロップ先として選べる項目の境界線が強調表示されます。エントリを項目にドロップすると、そのエントリは_データ要素_となります。

    項目は、項目内の文字列値とエントリを連結します。たとえば、Logger カードの Messages 項目で次のエントリを指定したとします。

    hello firstname

    データ要素の矢印をクリックすると、値に適用できる関数のリストが表示されます。関数は、選択した順序で適用されます。

    関数を適用するかどうかに関係なく、値のプレビューを表示することもできます。アプリケーションが実行されていない場合は、データ型を定義したときに指定したサンプルデータを使用してプレビューが表示されます。アプリケーションが実行中であれば、ライブデータでプレビューが表示されます。

    hello firstname expanded

    ロガーは、firstName 要素を含むペイロードを受信すると、次の形式でログにメッセージを追加します。

    "Hello, Ian."

    ペイロードの firstName データ要素の後に lastName データ要素があり、その間にスペースが入っている場合、ロガーは次の形式でログにメッセージを記録します。

    "Hello, Ian Stewart."

    DataWeave 言語を理解しているのであれば、単純な値を DataWeave 式と組み合わせることができます。リストエントリの Custom Expression をテキスト項目にドラッグしてください。そして、ダブルクリックして開きます。

  • 項目からデータ要素を削除するには、その項目の直後の項目をクリックして、Delete キーまたは Backspace キーを押します。

例: シンプルな動的式の作成

この例では、HTTP リスナが JSON ペイロードを含む POST 要求を受け取るフローを使用します。HTTP リスナは、ペイロードをロガーに渡します。このペイロードには、人物の名前と名字が含まれています。

手順

  1. 新しい Mule アプリケーションプロジェクトで、新しいフローのトリガに HTTP Listener カードを追加します。

  2. カードを開いてパスを /example に設定します。

  3. このカードの出力用のデータ型をセットアップします。

    1. [Output (出力)] セクションに移動します。

    2. [Data Type (データ型)] ドロップダウンメニューの横にある [Add (追加)] をクリックします。

    3. [Name (名前)] 項目で、データ型の名前を指定します。

    4. [Format (形式)] ドロップダウンメニューから [JSON] を選択します。

    5. [Type (型)] 項目で [From Example (例から)] を選択して、ペイロード用に次の JSON 例を貼り付けます。

      {
      	"firstName": "Sancho",
      	"lastName": "Panza"
      }
    6. [Save (保存)] をクリックします。

  4. HTTP Listener カードの後ろに Logger カードを追加して開きます。

    結果: ペイロードの要素である payload.firstNamepayload.lastName、および HTTP リスナからの属性が、カードの右側のリストに表示されます。キャンバスの一番上にある [Run (実行)] ボタンの隣に「Creating…​ (作成中…​)」というメッセージが表示されている場合は、このメッセージが変わってから要素のリストが表示されます。

  5. ペイロードを受信したときにロガーがログに記録するメッセージを指定します。

    1. [Message (メッセージ)] 項目で Hello, と入力します。

    2. ペイロード項目の payload.firstName をクリックして、[Message (メッセージ)] 項目までドラッグします。

  6. キャンバスの一番上にある [Run (実行)] ボタンをクリックしてアプリケーションを実行します。

  7. [Run (実行)] ボタンの隣にあるアプリケーションの URL をクリックしてコピーします。

  8. Postman または cURL で、HTTP Listener カードで指定したのと同じ形式を使用して、/example エンドポイントに JSON メッセージを投稿します。

結果

メッセージを投稿したら、Design Center のフローに戻り、ログを開いてメッセージを確認します。

次にすること

HTTP Listener カードの後に Set Variable カードを追加してみてください。カードからデータが出力される場合、データを変数に保存することをお勧めします。これで、後でデータをフローで使用することができます。payload.firstName の値を保存する変数を作成し、ペイロード項目の代わりに変数を使用するようにロガーのメッセージを変更します。Logger カードでは、右側のリストに変数が表示されます。メッセージからペイロード項目を削除して、変数をドラッグします。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub