在 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 企業整合工作流程。
必要條件
Azure 帳戶和訂用帳戶。 如果您還沒有訂閱,則請 註冊免費的 Azure 帳戶。
您在其中定義和儲存成品的整合帳戶資源 (例如交易夥伴、合約、憑證等),藉以用於企業整合和 B2B 工作流程。 此資源必須符合下列需求:
與邏輯應用程式資源相同的 Azure 訂閱相關。
存在於邏輯應用程式資源的相同位置或 Azure 區域。
如果您使用邏輯應用程式 (耗用)資源類型,則必須先將整合帳戶連結至邏輯應用程式資源,才能在工作流程中使用成品。
如果您使用邏輯應用程式 (Standard) 資源類型,則企業整合帳戶不需要邏輯應用程式資源的連結,但仍需要連結來儲存其他成品,例如合作夥伴、合約和憑證,以及使用 AS2、X12 或EDIFACT 作業。 您的整合帳戶仍然必須符合其他需求,例如使用與邏輯應用程式資源相同的 Azure 訂閱以及與邏輯應用程式資源位於相同位置。
注意
目前,只有 「邏輯應用程式 (耗用)」 資源類型才支援 RosettaNet 作業。 「邏輯應用程式 (標準)」 資源類型未包括 RosettaNet 作業。
整合帳戶中至少要有兩個合作對象。 這兩個合作夥伴的定義必須使用相同的商務身分識別限定詞,也就是 AS2、X12、EDIFACT 或 RosettaNet。
合作夥伴的 AS2 合約和 X12 合約,您正要在此工作流程中使用這兩個合約。 每個合約都需要一個主機合作夥伴和一個客體合作夥伴。
具有空白工作流程的邏輯應用程式資源,您可以在此工作流程中新增要求觸發程序,然後新增下列動作:
新增「要求」觸發程序
若要在此範例中啟動工作流程,請新增要求觸發程序。
在 Azure 入口網站中,於工作流程設計工具中開啟您的邏輯應用程式資源和空白工作流程。
在設計工具搜尋方塊下方,選取 [全部] (若未選取)。 在搜尋方塊中輸入
when a http request
。 選取名為收到 HTTP 要求時的要求觸發程序。在觸發程序中,將 [要求本文 JSON 結構描述] 方塊保留空白。
原因是觸發程序會收到一般檔案格式的 X12 訊息。
當完成設計師工具列時,請選取儲存。
此步驟會產生 HTTP POST URL,您稍後會將其用來傳送觸發邏輯應用程式工作流程的要求。
複製並儲存 URL 以供稍後使用。
新增解碼 AS2 動作
現在,新增此範例的 B2B 動作,其會使用 AS2 和 X12 動作。
在觸發程序下方,選取 [新增步驟]。
提示
若要隱藏要求觸發程序詳細資料,請選取觸發程序的標題列。
在 [選擇作業] 搜尋方塊下,選取 [全部] (如果未選取)。 在搜尋方塊中,輸入
as2
,然後選取 [AS2 解碼]。在動作的 [要解碼的訊息] 屬性中,輸入您想要 AS2 動作解碼的輸入,也就是要求觸發程序的
body
輸出。 您有多種方式可透過從動態內容清單選取或作為運算式,將此內容指定為動作的輸入:若要從顯示可用觸發程序輸出的清單中選取,請按一下 [要解碼的訊息] 方塊內部。 在動態內容清單出現之後,請在 [收到 HTTP 要求時] 下,選取 [本文] 屬性值,例如:
提示
如果未顯示任何觸發程式輸出,請在動態屬性清單的 [收到 HTTP 要求時] 下,選取 [查看更多]。
若要輸入一個運算式,參考觸發程序的
body
輸出,請按一下 [要解碼的訊息] 方塊內部。 在動態內容清單出現之後,選取 [運算式]。 在運算式編輯器中,輸入下列運算式,然後選取 [確定]:triggerOutputs()['body']
或者,在 [要解碼的訊息] 方塊中,直接輸入下列運算式:
@triggerBody()
運算式會解析為本文權杖。
在動作的 [訊息標頭] 屬性中,輸入 AS2 動作所需的任何標頭,這些標頭位於要求觸發程序的
headers
輸出中。若要輸入一個運算式,參考觸發程序的
headers
輸出,請選取 [將訊息標頭切換為文字模式]。按一下 [訊息標頭] 方塊內部。 在動態內容清單出現之後,選取 [運算式]。 在運算式編輯器中,輸入下列運算式,然後選取 [確定]:
triggerOutputs()['Headers']
在 [AS2 解碼] 動作中,運算式現在會顯示為權杖:
若要取得要解析為標頭權杖的運算式權杖,請在設計工具與程式碼檢視之間切換。 在此步驟之後,AS2 解碼 動作看起來像下列範例:
將回應動作新增為訊息回條
若要通知合作對象收到訊息,您可以使用條件和回應動作,傳回包含 AS2 訊息處置通知 (MDN) 的回應。 藉由在 AS2 動作之後立即新增這些動作,邏輯應用程式工作流程可以在 AS2 動作成功時繼續處理。 否則,如果 AS2 動作失敗,邏輯應用程式工作流程就會停止處理。
在 [AS2 解碼] 動作下,選取 [新增步驟]。
在 [選擇作業] 搜尋方塊下,選取 [內建] (如果尚未選取)。 在搜尋方塊中輸入
condition
。 選取 [條件] 動作。現在,條件圖形隨即出現,包括判斷是否符合條件的路徑。
現在指定要評估的條件。 在 [選擇值] 方塊中,輸入下列運算式:
@body('AS2_Decode')?['AS2Message']?['MdnExpected']
在中間方塊中,確定比較作業設定為
is equal to
。 在右側方塊中,輸入Expected
值。儲存您的邏輯應用程式工作流程。 若要取得要解析為這個權杖的運算式,請在設計工具與程式碼檢視之間切換。
現在指定要根據 [AS2 解碼] 動作是否成功傳回的回應。
針對 [AS2 解碼] 動作成功的情況,請在 [True] 圖形中,選取 [新增動作]。 在 [選擇作業] 搜尋方塊下,輸入
response
,然後選取 [回應]。若要從 [AS2 解碼] 動作的輸出中存取 AS2 MDN,請指定下列運算式:
在 [回應] 動作的 [標頭] 屬性中,輸入下列運算式:
@body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']
在 [回應] 動作的 [本文] 屬性中,輸入下列運算式:
@body('AS2_Decode')?['OutgoingMdn']?['Content']
若要取得要解析為權杖的運算式,請在設計工具與程式碼檢視之間切換:
針對 [AS2 解碼] 動作失敗的情況,請在 [False] 圖形中,選取 [新增動作]。 在 [選擇作業] 搜尋方塊下,輸入
response
,然後選取 [回應]。 設定 [回應] 動作以傳回您想要的狀態和錯誤。
儲存您的邏輯應用程式工作流程。
新增「解碼 X12 訊息」動作
現在,新增 [解碼 X12 訊息] 動作。
在 [回應] 動作下,選取 [新增動作]。
在 [選擇作業] 下,於搜尋方塊中輸入
x12 decode
,然後選取 [解碼 X12 訊息]。如果 X12 動作提示您輸入連線資訊,請提供連線的名稱、選取要使用的整合帳戶,然後選取 [建立]。
現在指定 X12 動作的輸入。 這個範例會使用 AS2 動作的輸出,這是訊息內容,但請注意此內容採用 JSON 物件格式,且以 base64 編碼。 因此,您必須將此內容轉換為字串。
在 [要解碼的 X12 一般檔案訊息] 方塊中,輸入下列運算式來轉換 AS2 輸出:
@base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])
儲存您的邏輯應用程式工作流程。 若要取得要解析為這個權杖的運算式,請在設計工具與程式碼檢視之間切換。
儲存您的邏輯應用程式工作流程。
如果您需要針對此邏輯應用程式工作流程執行其他步驟,例如,解碼訊息內容並以 JSON 物件格式輸出該內容,請繼續將必要的動作新增至邏輯應用程式工作流程。
您現在已完成 B2B 邏輯應用程式工作流程的設定。 在真實世界應用程式中,您可能想要在企業營運 (LOB) 應用程式或資料存放區中儲存已解碼的 X12 資料。 例如,請檢閱下列文件:
若要連線到您自己的 LOB 應用程式,並在您的邏輯應用程式中使用這些 API,您可以新增其他動作或撰寫自訂 API。