Azure Logic Apps を使用してワークフローで XML を変換する
適用対象: Azure Logic Apps (従量課金 + Standard)
エンタープライズ統合の企業間 (B2B) シナリオでは、XML を形式間で変換する必要がある場合があります。 ロジック アプリ ワークフローでは、XML 変換アクションと定義済みの "マップ" を使用して、XML を変換することができます。
たとえば、YearMonthDay という日付形式 (YYYYMMDD) を使用している顧客から、B2B の注文や請求書を定期的に受け取っているとします。 ただし、あなたの組織では MonthDayYear という日付形式 (MMDDYYYY) を使用しています。 そのような場合は、YearMonthDay 形式から MonthDayYear 形式に変換するマップを作成して使用できます。その後、顧客活動データベースに注文や請求書の詳細を保存できます。
前提条件
Azure アカウントとサブスクリプション。 サブスクリプションをまだお持ちでない場合には、無料の Azure アカウントにサインアップしてください。
ワークフローで必要に応じて XML 変換アクションを追加できるように、既にトリガーで開始されているロジック アプリ ワークフロー。
エンタープライズ統合および B2B ワークフローで使用する成果物 (取引先、契約、証明書など) を定義して保存する統合アカウント リソース。 このリソースでは、次の要件が満たされている必要があります。
ロジック アプリ リソースと同じ Azure サブスクリプションに関連付けられている。
XML 変換アクションを使用する予定のロジック アプリ リソースと同じ場所または Azure リージョンに存在する。
従量課金ロジック アプリ ワークフローで作業している場合、統合アカウントには次のものが必要です。
XML コンテンツの変換に使用するマップ。
Standard ロジック アプリ リソースおよびワークフローで作業している場合は、次のシナリオに基づいて、統合アカウントをロジック アプリ リソースにリンクするか、マップをロジック アプリ リソースに直接アップロードするか、またはその両方を行うことができます。
必要なまたは使用したい成果物を含む統合アカウントが既にある場合は、成果物を使用する場所になる複数の Standard ロジック アプリ リソースに統合アカウントをリンクできます。 こうすることで、個々のロジック アプリにマップをアップロードする必要がありません。 詳細については、ロジック アプリ リソースの統合アカウントへのリンクに関するページを参照してください。
統合アカウントを持っていない場合、または "同じロジック アプリ リソース" 内の複数のワークフローで成果物を使用するだけの場合は、Azure portal または Visual Studio Code を使用してロジック アプリ リソースにマップを直接追加できます。
Note
Liquid 組み込みコネクタを使用すると、ロジック アプリ リソースまたはリンクされた統合アカウントに以前にアップロードしたマップを選択できますが、両方は選択できません。
そのため、統合アカウントがないか、または必要としない場合は、アップロード オプションを使用できます。 それ以外の場合は、リンク オプションを使用できます。 どちらの方法でも、同じロジック アプリ リソース内のすべての子ワークフローで、これらの成果物を使用できます。
取引先、契約、証明書などの他の成果物を保存すると共に、AS2、X12、および EDIFACT 操作を使用するには、引き続き統合アカウントが必要です。
XML 変換アクションを追加する
Azure portal で、Standard ロジック アプリのワークフローをデザイナーで開きます。
トリガーがない空のワークフローがある場合は、次の一般的な手順に従って必要なトリガーを追加します。 使用する場合は、次の手順に進みます。
この例では、Request トリガーを使用します。
Transform XML アクションを追加するご使用のワークフロー内の手順で、次の一般的手順に従い、Transform XML という名前のアクションを追加します。
[コンテンツ] ボックスで、HTTP 要求で受信した XML データを使用して変換する XML コンテンツを指定します。
ワークフロー内の前の操作からの出力を選択するには、Transform XML アクションで、[コンテンツ] ボックス内をクリックし、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。
動的コンテンツ リストから、変換するコンテンツのトークンを選択します。
この例では、トリガーから [本文] トークンを選択します。
Note
必ず XML コンテンツをしてください。 コンテンツが XML ではないか、Base64 でエンコードされている場合は、コンテンツを処理する式を指定する必要があります。 たとえば、コンテンツをデコードする
base64ToBinary()
、コンテンツを XML として処理するxml()
などの式の関数を使用できます。
[マップ ソース] の一覧から、マップをアップロードした場所を選択します。LogicApp リソースまたは IntegrationAccount です。
[マップ] リストからマップを選択します。
完了したら、ワークフローを保存します。
これで、XML 変換アクションの設定が完了しました。 実際のアプリでは、変換したデータを Salesforce などの基幹業務 (LOB) アプリに保存することが必要になる場合があります。 変換された出力を Salesforce に送信するには、Salesforce アクションを追加します。
変換アクションをテストするには、ワークフローをトリガーして実行します。 たとえば、要求トリガーの場合は、トリガーのエンドポイント URL に要求を送信します。
XML 変換アクションは、ワークフローがトリガーされた後に、XML コンテンツが変換に使用できるようになると実行されます。
拡張機能
マップからアセンブリを参照する、またはカスタム コードを呼び出す
Transform XML アクションでは、マップから外部アセンブリへの参照がサポートされています。これにより、XSLT マップからカスタム .NET コードへの直接呼び出しが可能になります。 詳細については、「Azure Logic Apps でのワークフローのための XSLT マップの追加」を参照してください。
拡張オブジェクトを参照する
Standard ワークフローでは、Transform XML アクションは、マップで使用する XML 拡張オブジェクトの指定をサポートしています。
Transform XML アクションで、[詳細パラメーター] 一覧を開き、[XML 拡張オブジェクト] を選択します。このオブジェクトにより、アクションにパラメーターが追加されます。
[XML 拡張オブジェクト] ボックスで拡張オブジェクトを指定します。次に例を示します。
バイト順マーク (BOM: Byte Order Mark)
既定では、変換からの応答はバイト オーダー マーク (BOM) から始まります。 この機能にアクセスできるのは、コード ビュー エディターで作業しているときのみです。 この機能を無効にするには、transformOptions
プロパティを disableByteOrderMark
に設定します。
"Transform_XML": {
"inputs": {
"content": "@{triggerBody()}",
"integrationAccount": {
"map": {
"name": "TestMap"
}
},
"transformOptions": "disableByteOrderMark"
},
"runAfter": {},
"type": "Xslt"
}