Azure Logic Apps のワークフローを使用してパートナー間で B2B メッセージを交換する

適用対象: Azure Logic Apps (従量課金プラン + Standard)

取引先と契約を定義する統合アカウントがあれば、Azure Logic Apps を使用して取引先間でメッセージを交換する自動化された企業間 (B2B) ワークフローを作成できます。 ワークフローでは、AS2、X12、EDIFACT、RosettaNet などの業界標準のプロトコルをサポートするコネクタを使用できます。 Office 365 Outlook、SQL Server、Salesforce など、Azure Logic Apps の他のコネクタによって提供される操作を含めることもできます。

この記事では、要求トリガーを使用して HTTP 要求を受信し、AS2 デコード アクションと X12 のデコード アクションを使用してメッセージ コンテンツをデコードし、応答アクションを使用して応答を返すことができるロジック アプリ ワークフローのサンプルを作成する方法を説明します。 この例では Azure portal のワークフロー デザイナーを使用しますが、Visual Studio のワークフロー デザイナーでも同様の手順に従うことができます。

ロジック アプリを初めて使用する場合は、「Azure Logic Apps とは」を参照してください。 B2B エンタープライズ統合の詳細については、Azure Logic Apps を使用した B2B エンタープライズ統合ワークフローに関する記事を参照してください。

前提条件

  • Azure アカウントとサブスクリプション。 サブスクリプションをまだお持ちでない場合には、無料の Azure アカウントにサインアップしてください。

  • エンタープライズ統合および B2B ワークフローで使用する成果物 (取引先、契約、証明書など) を定義して保存する統合アカウント リソース。 このリソースでは、次の要件が満たされている必要があります。

    • ロジック アプリ リソースと同じ Azure サブスクリプションに関連付けられている。

    • ロジック アプリ リソースと同じ場所または Azure リージョンに存在する。

    • ロジック アプリ (従量課金) のリソースの種類を使用している場合、ワークフローで成果物を使用するには、統合アカウントにロジック アプリ リソースへのリンクが必要です。

    • ロジック アプリ (Standard) のリソースの種類を使用している場合、統合アカウントにロジック アプリ リソースへのリンクは必要ありませんが、AS2X12、または EDIFACT の操作を使用すると共に、パートナー、契約、証明書などの他の成果物を格納する必要があります。 統合アカウントは、ロジック アプリ リソースと同じ Azure サブスクリプションを使用することや、ロジック アプリ リソースと同じ場所に存在することなど、他の要件も満たす必要があります。

    Note

    現時点では、RosettaNet の操作をサポートしているのは、ロジック アプリ (従量課金) のリソースの種類のみです。 ロジック アプリ (Standard) のリソースの種類には、RosettaNet 操作は含まれていません。

  • 統合アカウント内の少なくとも 2 つの取引先。 両方の取引先の定義では、同じ "ビジネス ID" 修飾子 (AS2、X12、EDIFACT、または RosettaNet) を使用する必要があります。

  • このワークフローで使用している、パートナー向けの AS2 契約および X12 契約。 契約には、ホスト パートナーとゲスト パートナーが必要です。

  • 空のワークフローを含むロジック アプリ リソース。これに、要求トリガーを追加した後に、次のアクションを追加できます。

要求トリガーを追加する

この例のワークフローを開始するには、要求トリガーを追加します。

  1. Azure portal のワークフロー デザイナーで、ロジック アプリ リソースと空のワークフローを開きます。

  2. デザイナーの検索ボックスの下の [すべて] を選択します (選択されていない場合)。 検索ボックスに「 when a http request」と入力します。 [HTTP 要求の受信時] という名前の要求トリガーを選択します。

    Azure portal とマルチテナント デザイナーを示すスクリーンショット。[HTTP 要求] (検索ボックス内) と、要求トリガーが選択されている。

  3. このトリガーの [要求本文の JSON スキーマ] ボックスは空のままにしておきます。

    このトリガーでは、フラット ファイル形式で X12 メッセージを受信するためです。

    マルチテナント デザイナーと要求トリガーのプロパティを示すスクリーンショット。

  4. 操作が完了したら、デザイナーのツールバーで、 [保存] を選択します。

    この手順では、後でロジック アプリ ワークフローをトリガーする要求を送信するために使用する HTTP POST URL が生成されます。

    マルチテナント デザイナーと、要求トリガー用に生成された URL を示すスクリーンショット。

  5. この URL をコピーして、後で使用できるように保存します。

AS2 のデコード アクションを追加する

ここで、この例に必要な B2B アクションを追加します。この例では、AS2 アクションと X12 アクションを使用します。

  1. トリガーで、 [新しいステップ] を選択します。

    ヒント

    要求トリガーの詳細を非表示にするには、トリガーのタイトル バーを選択します。

    マルチテナント デザイナーと [新しいステップ] が選択されたトリガーを示すスクリーンショット。

  2. [操作を選択してください] 検索ボックスの下の [すべて] を選択します (選択されていない場合)。 検索ボックスに「as2」と入力し、 [AS2 デコード] を選択します。

  3. このアクションの [デコードするメッセージ] プロパティに、AS2 アクションでデコードする入力を入力します。これは、要求トリガーの body 出力です。 このコンテンツをアクションの入力として指定するには複数の方法があります。動的コンテンツ リストから選択する方法と、式として指定する方法です。

    • 使用可能なトリガー出力を示す一覧から選択するには、 [デコードするメッセージ] ボックス内をクリックします。 動的コンテンツ リストが表示されたら、 [HTTP 要求の受信時] で、 [本文] プロパティ値を選択します。次に例を示します。

      [動的なコンテンツ] リストと [本文] プロパティが選択されたマルチテナント デザイナーを示すスクリーンショット。

      ヒント

      [HTTP 要求の受信時] の動的プロパティ リストにトリガー出力がまったく表示されない場合は、 [もっと見る] を選択します。

    • トリガーの body 出力を参照する式を入力するには、 [デコードするメッセージ] ボックス内をクリックします。 動的コンテンツ リストが表示されたら、 [式] を選択します。 式エディターに次の式を入力して、 [OK] を選択します。

      triggerOutputs()['body']

      または、 [デコードするメッセージ] ボックスに次の式を直接入力します。

      @triggerBody()

      この式は、 [本文] トークンに解決されます。

      解決済みの [本文] プロパティ出力が指定されたマルチテナント デザイナーを示すスクリーンショット。

  4. アクションの [メッセージ ヘッダー] プロパティに、AS2 アクションに必要なすべてのヘッダーを入力します。これらは、要求トリガーの headers 出力に含まれるものです。

    1. トリガーの headers 出力を参照する式を入力するには、 [Switch Message headers to text mode](メッセージ ヘッダーをテキスト モードに切り替える) を選択します。

      [メッセージ ヘッダーをテキスト モードに切り替える] が選択されたマルチテナント デザイナーを示すスクリーンショット。

    2. [メッセージ ヘッダー] ボックス内をクリックします。 動的コンテンツ リストが表示されたら、 [式] を選択します。 式エディターに次の式を入力して、 [OK] を選択します。

      triggerOutputs()['Headers']

      これで、 [AS2 デコード] アクションに、式がトークンとして表示されます。

    3. Headers トークンに解決される式トークンを取得するには、デザイナーとコード ビューを切り替えます。 この手順を完了すると、 [AS2 デコード] アクションは次の例のように表示されます。

      マルチテナント デザイナーと、トリガーからの解決済みヘッダー出力を示すスクリーンショット。

応答アクションをメッセージ受信として追加する

メッセージを受信したことを取引先に通知するために、条件および応答アクションを使用して、AS2 メッセージ処理通知 (MDN) を含む応答を返すことができます。 AS2 アクションの直後にこれらのアクションを追加することにより、AS2 アクションが成功した場合はロジック アプリ ワークフローで処理を続行できます。 それ以外の場合、AS2 アクションが失敗すると、ロジック アプリ ワークフローの処理は停止します。

  1. [AS2 デコード] アクションで、 [新しいステップ] を選択します。

  2. [操作を選択してください] 検索ボックスの下の [組み込み] を選択します (まだ選択されていない場合)。 検索ボックスに「 condition」と入力します。 [条件] アクションを選択します。

    マルチテナント デザイナーと

    条件図形が表示されます。条件が満たされているかどうかを判断するパスも表示されます。

    マルチテナント デザイナーと、空のパスを含む条件図形を示すスクリーンショット。

  3. 次に、評価する条件を指定します。 [値の選択] ボックスに、次の式を入力します。

    @body('AS2_Decode')?['AS2Message']?['MdnExpected']

    中央のボックスの比較演算が is equal to に設定されていることを確認します。 右側のボックスに、値 Expected を入力します。

  4. ロジック アプリ ワークフローを保存します。 式をこのトークンとして解決するには、[デザイナー] と [コード ビュー] を切り替えます。

    マルチテナント デザイナーと、操作が指定された条件図形を示すスクリーンショット。

  5. 次に、AS2 デコード アクションが成功したかどうかに基づいて返す応答を指定します。

    1. AS2 デコード アクションが成功した場合について、 [True] 図形で [アクションの追加] を選択します。 [操作を選択してください] 検索ボックスの下に、「response」と入力して、 [応答] を選択します。

      マルチテナント デザイナーと

    2. AS2 デコード アクションの出力から AS2 MDN にアクセスするには、次の式を指定します。

      • [応答] アクションの [ヘッダー] プロパティに、次の式を入力します。

        @body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']

      • [応答] アクションの [本文] プロパティに、次の式を入力します。

        @body('AS2_Decode')?['OutgoingMdn']?['Content']

    3. 式をトークンとして解決するには、[デザイナー] と [コード ビュー] を切り替えます。

      マルチテナント デザイナーと、AS2 MDN にアクセスするための解決済みの式を示すスクリーンショット。

    4. AS2 デコード アクションが失敗した場合について、 [False] 図形で、 [アクションの追加] を選択します。 [操作を選択してください] 検索ボックスの下に、「response」と入力して、 [応答] を選択します。 必要な状態とエラーを返すように応答 アクションを設定します。

  6. ロジック アプリ ワークフローを保存します。

[X12 メッセージをデコードする] アクションを追加する

次に、X12 メッセージのデコード アクションを追加します。

  1. [応答] アクションで、 [アクションの追加] を選択します。

  2. [操作を選択してください] の下の検索ボックスに「x12 decode」と入力して、 [X12 メッセージをデコードする] を選択します。

    マルチテナント デザイナーと、

  3. X12 アクションで接続情報の入力を求められたら、接続の名前を指定して、使用する統合アカウントを選択した後、 [作成] を選択します。

    マルチテナント デザイナーと統合アカウントへの接続を示すスクリーンショット。

  4. 次に、X12 アクションの入力を指定します。 この例では、AS2 アクションからの出力を使用します。これは、メッセージのコンテンツですが、このコンテンツは JSON オブジェクト形式で、Base64 でエンコードされることに注意してください。 このため、このコンテンツを文字列に変換する必要があります。

    [デコードする X12 フラット ファイル メッセージ] ボックスに、AS2 出力を変換する次の式を入力します。

    @base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])

  5. ロジック アプリ ワークフローを保存します。 式をこのトークンとして解決するには、[デザイナー] と [コード ビュー] を切り替えます。

    マルチテナント デザイナーと、Base64 でエンコードされたコンテンツから文字列への変換を示すスクリーンショット。

  6. ロジック アプリ ワークフローを保存します。

    このロジック アプリ ワークフローに追加のステップが必要な場合 (メッセージ コンテンツをデコードして、そのコンテンツを JSON オブジェクト形式で出力する場合など) は、必要なアクションをロジック アプリ ワークフローに引き続き追加します。

これで、B2B ロジック アプリ ワークフローの設定が完了しました。 実際のアプリでは、デコードした X12 データを基幹業務 (LOB) アプリやデータ ストアに保存できます。 例として、次のドキュメントを参照してください。

独自の LOB アプリに接続してロジック アプリでこれらの API を使用するために、さらにアクションを追加したり、カスタム API を作成したりすることができます。

次のステップ