在 Azure Logic Apps 中使用工作流程於合作夥伴之間交換 B2B 訊息

適用於:Azure Logic Apps (使用量 + 標準)

當具有定義合作對象和合約的整合帳戶時,您可以建立自動化的企業對企業 (B2B) 工作流程,使用 Azure Logic Apps 在合作對象之間交換訊息。 您的工作流程可以使用支援業界標準通訊協定的連接器,例如 AS2、X12、EDIFACT 和 RosettaNet。 您也可以包含 Azure Logic Apps 中其他連接器所提供的作業,例如 Office 365 Outlook、SQL Server 和 Salesforce。

本文說明如何建立範例邏輯應用程式工作流程,其可以使用要求觸發程序接收 HTTP 要求、使用 AS2 解碼解碼 X12 動作解碼訊息內容,以及使用回應動作傳回回應。 此範例會在 Azure 入口網站中使用工作流程設計工具,但您可以針對 Visual Studio 中的工作流程設計工具遵循類似步驟。

如果您不熟悉邏輯應用程式,則請檢閱 什麼是 Azure Logic Apps? 如需 B2B 企業整合的詳細資訊,請檢閱 具有 Azure Logic Apps 的 B2B 企業整合工作流程

Prerequisites

  • Azure 帳戶和訂用帳戶。 如果您還沒有訂閱,則請 註冊免費的 Azure 帳戶

  • 您在其中定義和儲存成品的整合帳戶資源 (例如交易夥伴、合約、憑證等),以用於企業整合和 B2B 工作流程。 此資源必須符合下列需求:

    • 與邏輯應用程式資源相同的 Azure 訂閱相關。

    • 存在於邏輯應用程式資源的相同位置或 Azure 區域。

    • 如果您使用邏輯應用程式 (耗用)資源類型,則必須先將整合帳戶連結至邏輯應用程式資源,才能在工作流程中使用成品。

    • 如果您使用邏輯應用程式 (Standard) 資源類型,則企業整合帳戶不需要邏輯應用程式資源的連結,但仍需要連結來儲存其他成品,例如合作夥伴、合約和憑證,以及使用 AS2X12EDIFACT 作業。 您的整合帳戶仍然必須符合其他需求,例如使用與邏輯應用程式資源相同的 Azure 訂用帳戶以及與邏輯應用程式資源位於相同的位置。

    注意

    目前,只有「邏輯應用程式 (耗用)」資源類型才支援 RosettaNet 作業。 「邏輯應用程式 (標準)」資源類型未包括 RosettaNet 作業。

  • 整合帳戶中至少要有兩個合作對象。 這兩個合作夥伴的定義必須使用相同的商務身分識別限定詞,也就是 AS2、X12、EDIFACT 或 RosettaNet。

  • 合作夥伴的 AS2 合約和 X12 合約,您正要在此工作流程中使用這兩個合約。 每個合約都需要一個主機合作夥伴和一個客體合作夥伴。

  • 具有空白工作流程的邏輯應用程式資源,您可以在此工作流程中新增要求觸發程序,然後新增下列動作:

新增「要求」觸發程序

若要在此範例中啟動工作流程,請新增要求觸發程序。

  1. Azure 入口網站中,於工作流程設計工具中開啟您的邏輯應用程式資源和空白工作流程。

  2. 在設計工具搜尋方塊下方,選取 [全部] (若未選取)。 在搜尋方塊中,輸入 when a http request。 選取名為收到 HTTP 要求時的要求觸發程序。

    顯示 Azure 入口網站和多租用戶設計工具的螢幕擷取畫面,其中已在搜尋方塊輸入「當 HTTP 要求」,並選取了要求觸發程序。

  3. 在觸發程序中,將 [要求本文 JSON 結構描述] 方塊保留空白。

    原因是觸發程序會收到一般檔案格式的 X12 訊息。

    顯示多租用戶設計工具和要求觸發程序屬性的螢幕擷取畫面。

  4. 完成後,在設計工具的工具列上,選取 [儲存]。

    此步驟會產生 HTTP POST URL,您稍後會將其用來傳送觸發邏輯應用程式工作流程的要求。

    螢幕擷取畫面顯示多租用戶設計工具和針對要求觸發程序產生的 URL。

  5. 複製並儲存 URL 以供稍後使用。

新增解碼 AS2 動作

現在,新增此範例的 B2B 動作,其會使用 AS2 和 X12 動作。

  1. 在觸發程序下方,選取 [新增步驟]。

    秘訣

    若要隱藏要求觸發程序詳細資料,請選取觸發程序的標題列。

    顯示多租用戶設計工具和觸發程序的螢幕擷取畫面,其中已選取「新增步驟」。

  2. 在 [選擇作業] 搜尋方塊下,選取 [全部] (如果未選取)。 在搜尋方塊中,輸入 as2,然後選取 [AS2 解碼]。

    顯示多租用戶設計工具的螢幕擷取畫面,其中已選取「AS2 解碼」動作。

  3. 在動作的 [要解碼的訊息] 屬性中,輸入您想要 AS2 動作解碼的輸入,也就是要求觸發程序的 body 輸出。 您有多種方式可透過從動態內容清單選取或作為運算式,將此內容指定為動作的輸入:

    • 若要從顯示可用觸發程序輸出的清單中選取,請按一下 [要解碼的訊息] 方塊內部。 在動態內容清單出現之後,請在 [收到 HTTP 要求時] 下,選取 [本文] 屬性值,例如:

      顯示多租用戶設計工具的螢幕擷取畫面,其中具有動態內容清單並已選取「本文」屬性。

      秘訣

      如果未顯示任何觸發程式輸出,請在動態屬性清單的 [收到 HTTP 要求時] 下,選取 [查看更多]。

    • 若要輸入一個運算式,參考觸發程序的 body 輸出,請按一下 [要解碼的訊息] 方塊內部。 在動態內容清單出現之後,選取 [運算式]。 在運算式編輯器中,輸入下列運算式,然後選取 [確定]:

      triggerOutputs()['body']

      或者,在 [要解碼的訊息] 方塊中,直接輸入下列運算式:

      @triggerBody()

      運算式會解析為本文權杖。

      顯示多租用戶設計工具的螢幕擷取畫面,其中具有已解析的「本文」屬性輸出。

  4. 在動作的 [訊息標頭] 屬性中,輸入 AS2 動作所需的任何標頭,這些標頭位於要求觸發程序的 headers 輸出中。

    1. 若要輸入一個運算式,參考觸發程序的 headers 輸出,請選取 [將訊息標頭切換為文字模式]。

      顯示多租用戶設計工具的螢幕擷取畫面,其中已選取 [將訊息標頭切換為文字模式]。

    2. 按一下 [訊息標頭] 方塊內部。 在動態內容清單出現之後,選取 [運算式]。 在運算式編輯器中,輸入下列運算式,然後選取 [確定]:

      triggerOutputs()['Headers']

      在 [AS2 解碼] 動作中,運算式現在會顯示為權杖:

      顯示多租用戶設計工具和 [訊息標頭] 方塊的螢幕擷取畫面,而方塊中具有

    3. 若要取得要解析為標頭權杖的運算式權杖,請在設計工具與程式碼檢視之間切換。 在此步驟之後,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 訊息]。

    顯示多租用戶設計工具的螢幕擷取畫面,其中已選取「解碼 X12 訊息」動作。

  3. 如果 X12 動作提示您輸入連線資訊,請提供連線的名稱、選取要使用的整合帳戶,然後選取 [建立]。

    螢幕擷取畫面顯示多租用戶設計工具和整合帳戶的連線。

  4. 現在指定 X12 動作的輸入。 這個範例會使用 AS2 動作的輸出,這是訊息內容,但請注意此內容採用 JSON 物件格式,且以 base64 編碼。 因此,您必須將此內容轉換為字串。

    在 [要解碼的 X12 一般檔案訊息] 方塊中,輸入下列運算式來轉換 AS2 輸出:

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

  5. 儲存您的邏輯應用程式工作流程。 若要取得要解析為這個權杖的運算式,請在設計工具與程式碼檢視之間切換。

    螢幕擷取畫面顯示多租用戶設計工具和從 base64 編碼內容到字串的轉換。

  6. 儲存您的邏輯應用程式工作流程。

    如果您需要針對此邏輯應用程式工作流程執行其他步驟,例如,解碼訊息內容並以 JSON 物件格式輸出該內容,請繼續將必要的動作新增至邏輯應用程式工作流程。

您現在已完成 B2B 邏輯應用程式工作流程的設定。 在真實世界應用程式中,您可能想要在企業營運 (LOB) 應用程式或資料存放區中儲存已解碼的 X12 資料。 例如,請檢閱下列文件:

若要連線到您自己的 LOB 應用程式,並在您的邏輯應用程式中使用這些 API,您可以新增其他動作或撰寫自訂 API

後續步驟