適用対象: Azure Logic Apps (従量課金 + Standard)
ビジネス間 (B2B) 統合で XML コンテンツを取引先と交換する場合、多くの場合、コンテンツを送信する前にエンコードする必要があります。 エンコードされた XML コンテンツを受け取ったら、そのコンテンツを使用する前にそのコンテンツをデコードする必要があります。
このガイドでは、フラット ファイルの組み込みコネクタ アクションと フラット ファイル スキーマを使用して、ワークフロー内の XML をエンコードおよびデコードする方法について説明します。
コネクタに関するテクニカル リファレンス
フラット ファイルのエンコードおよびデコード アクションは、従量課金ロジック アプリ ワークフローと標準ロジック アプリ ワークフローで使用できます。
| ロジック アプリ | 環境 |
|---|---|
| 従量課金 | マルチテナント Azure Logic Apps |
| Standard | シングルテナントの Azure Logic Apps、App Service Environment v3 (Windows プランのみ)、ハイブリッド デプロイ |
詳細については、「 統合アカウントの組み込みコネクタ」を参照してください。
前提条件
Azure アカウントとサブスクリプション。 無料の Azure アカウントを取得します。
フラット ファイル操作を使用するロジック アプリのリソースとワークフロー。
フラット ファイル 操作にはトリガーは含まれません。 ワークフローは、任意のトリガーから開始するか、任意のアクションを使用してソース XML を取り込むことができます。
この記事の例では、HTTP 要求 を 受信したときにという名前の要求トリガーを使用します。
詳細については、以下を参照してください。
エンタープライズ統合と B2B ワークフローの成果物を定義および格納するための統合 アカウント リソース 。
統合アカウントとロジック アプリ リソースの両方が、同じ Azure サブスクリプションおよび Azure リージョンに存在する必要があります。
フラット ファイル操作を開始する前に、従量課金ロジックアプリをリンクするか、スタンダードロジックアプリを統合アカウントにリンクして、取引先や契約などのアーティファクトを操作できるようにする必要があります。 統合アカウントを複数の従量課金プランまたは標準ロジック アプリ リソースにリンクして、同じアーティファクトを共有できます。
ヒント
Standard ワークフローで取引先や契約などの B2B 成果物を操作していない場合は、統合アカウントが必要ない可能性があります。 代わりに、スキーマを Standard ロジック アプリ リソースに直接アップロードできます。 どちらの方法でも、同じロジック アプリ リソース内のすべての子ワークフローで同じスキーマを使用できます。 複数のロジック アプリ リソースで同じスキーマを使用するには、統合アカウントを使用してリンクする必要があります。
XML コンテンツをエンコードまたはデコードする方法を指定するフラット ファイル スキーマ。
標準ワークフローでは、 フラット ファイル 操作を使用すると、リンクされた統合アカウントから、またはロジック アプリに以前にアップロードしたスキーマを選択できますが、両方を選択することはできません。
詳細については、「 統合アカウントにスキーマを追加する」を参照してください。
HTTP 要求を送信してソリューションをテストできるツールをインストールまたは使用します。次に例を示します。
- Visual Studio Code と Visual Studio Marketplace の拡張機能
- PowerShell Invoke-RestMethod
- Microsoft Edge - ネットワーク コンソール ツール
- ブルーノ
- curl
注意
資格情報、シークレット、アクセス トークン、API キーなどの機密データがあるシナリオでは、必要なセキュリティ機能でデータを保護するツールを必ず使用してください。 このツールはオフラインまたはローカルで動作する必要があり、オンライン アカウントへのサインインやクラウドへのデータの同期は必要ありません。 これらの特性を持つツールを使用すると、機密データを一般に公開するリスクが軽減されます。
制限事項
デコードする XML コンテンツは、UTF-8 形式でエンコードする必要があります。
フラット ファイル スキーマの場合、含める XML グループの "1 より大きい" 値に設定した
max countプロパティ数が多くなりすぎないようにしてください。max countプロパティ値が1より大きいXMLグループをmax countプロパティが1より大きい別のXMLグループ内にネストしないでください。Azure Logic Apps でフラット ファイル スキーマが解析され、スキーマで次のフラグメントの選択が許可されると、Azure Logic Apps によってそのフラグメントの シンボル と 予測 が生成されます。 スキーマで許可されるコンストラクトの数が 100,000 を超える場合、スキーマの拡張が非常に大きくなり、リソースと時間が多すぎます。
スキーマのアップロード
スキーマを作成したら、ワークフローに基づいてスキーマをアップロードします。
標準: 標準ワークフローの統合アカウントにスキーマを追加する
フラット ファイル エンコード アクションを追加する
Azure portal で、ロジック アプリ リソースを開きます。
デザイナーで、ワークフローを開きます。
ワークフローに必要なトリガーやその他のアクションがワークフローにない場合は、最初にそれらの操作を追加します。
この例では、HTTP 要求 を 受信したときにという名前の要求トリガーを使用します。 トリガーを追加するには、「 ワークフローを開始するトリガーを追加する」を参照してください。
デザイナーで、次の 一般的な手順 に従って、 フラット ファイル エンコードという名前の組み込みアクションを追加します。
アクション情報ウィンドウが開き、[ パラメーター] タブが選択されています。
アクションの Content パラメーターで、エンコードする XML コンテンツを指定します。これは、次の手順に従って、トリガーまたは前のアクションからの出力です。
[コンテンツ] ボックス内を選択し、稲妻アイコンを選択して動的コンテンツ リストを開きます。
動的コンテンツの一覧から、エンコードする XML コンテンツを選択します。
次の例は、開いている動的コンテンツ リスト、 HTTP 要求が受信されたとき のトリガーからの出力、およびトリガー出力から選択した 本文 コンテンツを示しています。
Note
動的コンテンツ リストに Body が表示されない場合は、[ HTTP 要求を受信したとき ] セクション ラベルの横にある [ 詳細を表示] を選択します。 エンコードするコンテンツを [コンテンツ] ボックスに直接入力することもできます。
[スキーマ名] リストからスキーマを選びます。
Note
スキーマ リストが空の場合、原因は次のようになります。
- ロジック アプリ リソースは統合アカウントにリンクされていません。
- リンクされた統合アカウントにはスキーマ ファイルが含まれません。
- ロジック アプリ リソースにはスキーマ ファイルが含まれません。 この理由は、Standard ロジック アプリにのみ適用されます。
アクションに他の省略可能なパラメーターを追加するには、[詳細パラメーター] ボックスの一覧からこれらの パラメーター を選択します。
パラメーター 値 説明 空のノード生成モード ForcedDisabled または HonorSchemaNodeProperty または ForcedEnabled フラット ファイルのエンコードを使用した空のノード生成に使うモード
BizTalk の場合、フラット ファイル スキーマには、空のノード生成を制御するプロパティがあります。 フラット ファイル スキーマの空のノード生成プロパティの動作に従うことができます。 または、この設定を使用して、Azure Logic Apps で空のノードを生成または省略することもできます。 詳細については、「空の要素のタグ」を参照してください。XML 正規化 Yes または No フラット ファイル エンコードの XML 正規化を有効または無効にする設定。 詳細については、「XmlTextReader.Normalization」を参照してください。 ワークフローを保存します。 デザイナーのツール バーで、[保存] を選択します。
フラット ファイルのデコード アクションを追加する
Azure portal で、ロジック アプリ リソースを開きます。
デザイナーで、ワークフローを開きます。
ワークフローに必要なトリガーやその他のアクションがワークフローにない場合は、最初にそれらの操作を追加します。
この例では、HTTP 要求 を 受信したときにという名前の要求トリガーを使用します。 トリガーを追加するには、「 ワークフローを開始するトリガーを追加する」を参照してください。
デザイナーで、次の 一般的な手順 に従って、 フラット ファイル デコードという名前の組み込みアクションを追加します。
アクションの Content パラメーターで、次の手順に従って、トリガーからの出力または前のアクションからの出力として、デコードする XML コンテンツを指定します。
[コンテンツ] ボックス内を選択し、稲妻アイコンを選択して動的コンテンツ リストを開きます。
動的コンテンツの一覧から、デコードする XML コンテンツを選択します。
次の例は、開いている動的コンテンツ リスト、 HTTP 要求が受信されたとき のトリガーからの出力、およびトリガー出力から選択した 本文 コンテンツを示しています。
Note
動的コンテンツリストに本文が表示されない場合は、[HTTP 要求を受信したとき] セクションラベルの横にある [詳細を表示] を選択します。 デコードするコンテンツを [コンテンツ] ボックスに直接入力することもできます。
[スキーマ名] リストからスキーマを選びます。
Note
スキーマ リストが空の場合、原因は次のようになります。
- ロジック アプリ リソースは統合アカウントにリンクされていません。
- リンクされた統合アカウントにはスキーマ ファイルが含まれません。
- ロジック アプリ リソースにはスキーマ ファイルが含まれません。 この理由は、Standard ロジック アプリにのみ適用されます。
ワークフローを保存します。 デザイナーのツール バーで、[保存] を選択します。
以上で、フラット ファイルのデコード アクションの設定が完了しました。 実際のアプリでは、デコードしたデータを Salesforce などの基幹業務 (LOB) アプリに保存することが必要になる場合があります。 または、そのデコードしたデータを取引先に送信することもできます。 デコード アクションの出力を Salesforce または取引先に送信するには、Azure Logic Apps で使用可能な他のコネクタを使用します。
ワークフローをテストする
ワークフローをトリガーするには、次の手順に従います:
要求トリガーで、HTTP POST URL パラメーターを見つけて、URL をコピーします。
HTTP リクエスト ツールを開き、その手順を使用して HTTP リクエストを リクエスト トリガーで期待されるメソッドを含め、コピーした URL に送信します。
この例では、URL の
POSTメソッドを使用しています。リクエスト本文にエンコードまたはデコードする XML コンテンツを含めます。
ワークフローの実行が完了したら、ワークフローの実行履歴に移動し、 フラット ファイル アクションの入力と出力を調べます。