使用 Visual Studio Code 在邏輯應用程式工作流程中建立對應以轉換數據
適用於:Azure Logic Apps (標準)
當您在邏輯應用程式工作流程中交換使用不同 XML 或 JSON 格式的訊息時,您必須指定如何將 資料從來源格式轉換 或轉換成目標格式,例如 XML 檔案之間或 JSON 檔案之間的數據。 這項工作很重要,特別是當您在來源和目標架構中的數據結構之間有間距時。 架構描述 XML 或 JSON 檔案中的數據元素、屬性和數據類型。
若要定義數據結構之間的轉換,並橋接任何間距,您可以建立對應 (.xslt 檔案),以指定來源和目標架構中數據元素之間的關聯性。 您可以在標準邏輯應用程式項目的內容中使用 Visual Studio Code 搭配 Azure Logic Apps (Standard) 延伸模組,以可視化方式建立或編輯地圖。 數據對應工具提供統一的對應和轉換體驗,使用拖放手勢、用於建置表達式的預先建置函式,以及在工作流程中使用地圖之前手動測試地圖的方法。
建立對應之後,您可以直接從邏輯應用程式專案中的工作流程或 Azure 入口網站 中的標準邏輯應用程式工作流程呼叫該對應。 針對此工作,您可以在工作流程中使用名為 [使用對應程式工具 XSLT 轉換] 的資料對應程式作業動作。
本作說明指南示範如何建立空的數據對應、選擇來源和目標架構、在架構元素之間建立各種對應、儲存和測試對應,然後從邏輯應用程式專案中的工作流程呼叫對應。
限制和已知問題
資料對應程式目前只能在 Windows 作業系統上執行的 Visual Studio Code 中運作。
資料對應程式目前只能在 Visual Studio Code 中使用,而不是 Azure 入口網站,而且僅能從標準邏輯應用程式專案內,而不是使用量邏輯應用程式專案。
數據對應程式目前不支援使用逗號分隔值 (.csv) 檔案格式的架構。
數據對應工具中的 [ 程序代碼 ] 窗格目前是唯讀的。
數據對應工具中的版面配置和專案位置目前為自動且只讀。
Filter 函式會正確處理以雙引弧括住的數值條件,例如 “>=10”。 不過,此函式目前對於字串比較的行為並不一致,例如檢查專案名稱是否為 “= 'Pen'”。
當您在來源和目標架構中建立父陣列元素之間的對應時,對應程式會自動新增迴圈來逐一查看陣列項目元素。 不過,您仍然必須明確建立來源和目標數位專案專案項目之間的對應。
若要呼叫使用 Data Mapper 建立的對應,您只能使用名為使用數據對應程式 XSLT 轉換的數據對應程式作業動作。 針對任何其他工具建立的對應,請使用名為 [轉換 XML] 的 XML 作業動作。
若要使用您在 Azure 入口網站 中使用數據對應工具建立的對應,您必須將它們直接新增至標準邏輯應用程式資源。
此版本目前不支援自定義函式。
必要條件
Visual Studio Code 和 Azure Logic Apps (標準) 延伸模組用來建立標準邏輯應用程式工作流程。
注意
先前個別的數據對應程式延伸模組現在會與 Azure Logic Apps (Standard) 延伸模組合併。 為了避免衝突,當您安裝或更新 Azure Logic Apps (標準) 延伸模組時,會移除任何現有的資料對應程式延伸模組版本。 在延伸模組安裝或更新之後,請重新啟動 Visual Studio Code。
描述要轉換的資料類型的來源和目標結構描述檔案。 這些檔案可以有下列其中一種格式:
- 副檔名為 .xsd 的 XML 結構描述定義檔案
- 副檔名為 .json 的 JavaScript 物件標記法檔案
標準邏輯應用程式專案,包含具狀態或無狀態工作流程,且至少具有觸發程式。 如果您沒有專案,請在 Visual Studio Code 中遵循這些步驟:
連線至您的 Azure 帳戶 (如果您尚未這樣做)。
建立本機資料夾、本機標準邏輯應用程式專案,以及具狀態或無狀態工作流程。 在工作流程建立期間,選取 [在目前視窗中開啟]。
如果您想要測試對應並檢查轉換是否如預期般運作,請對輸入資料取樣。
若要使用執行 XSLT 函式,您的 XSLT 程式碼片段必須存在於使用 .xml 或 .xslt 副檔名的檔案中。 您必須將 XSLT 程式碼片段放在本機專案資料夾結構的 InlineXslt 資料夾中:Artifacts>DataMapper>Extensions>InlineXslt。 如果此資料夾結構不存在,請建立遺漏的資料夾。
建立資料對應
在 Visual Studio Code 中,開啟標準邏輯應用程式項目的資料夾。
在 Visual Studio Code 左側功能表上,選取 Azure 圖示。
在 Azure 視窗的 [資料對應程式] 底下,選取 [建立數據對應]。
在 Visual Studio Code 標題列上,會開啟提示方塊,以便提供地圖的名稱。
在提示方塊中,輸入數據對應名稱。
針對本指南,這些步驟會使用 Name Example-data-map。
數據對應工具會建立並開啟空白的數據對應。
請遵循下列步驟來選擇您的來源和目標架構:
在 [來源] 窗格中,選取 [新增>流覽] 以尋找並上傳您的來源架構。
新增來源架構之後,[ 來源 ] 窗格會填入來源架構中數據類型的 XML 元素 「nodes」,例如:
在 [目的地] 窗格中,選取 [新增>流覽] 以尋找並上傳您的目標架構。
新增目標架構之後, [目的地 ] 窗格會填入目標架構中數據類型的 XML 元素 “nodes”,例如:
提示
如果您在載入架構時遇到問題,您可以在本機將來源和目標架構檔案新增至邏輯應用程式專案的 Artifacts/Schemas 資料夾。 在此案例中,若要在 [數據對應程式] 中指定您的來源和目標架構,請在 [來源 ] 和 [目的地 ] 窗格中開啟 [ 選取現有的 清單],而不是使用 [新增],然後選取您的架構。
架構數據類型
下表描述可能出現在結構描述中的可能資料類型:
符號 | 類型 | 其他資訊 |
---|---|---|
![]() |
複雜 (陣列) | 包含專案或重複的項目節點。 陣列元素也會顯示下列連接點: ![]() |
![]() |
Bool | 僅限 True 或 false |
![]() |
Complex | 具有子系屬性的 XML 物件,類似於物件 JSON 類型 |
![]() |
Datetime | |
![]() |
Decimal | |
![]() |
整數 | 僅限整數 |
![]() |
String |
建立元素之間的直接對應
若要在來源和目標架構中具有相同類型的元素之間指定直接轉換,請遵循下列步驟:
若要在建立對應時檢視程式代碼中發生的情況,請在對應工具的右上角選取 [檢視程序代碼]。
在對應程式介面 的 [來源 ] 窗格中,尋找您要對應的來源元素。
根據預設,父元素會自動展開以顯示其子系。
此範例會從來源元素開始對應,但您可以選擇從目標元素開始對應。
將滑鼠指標移至來源項目名稱旁邊的圓形,直到指標變更為加號 (+)。
此範例會從 員工標識碼 來源元素開始建立對應。
拖曳並繪製線條,讓來源元素連接到 [目的地] 窗格中目標元素的圓形。
此範例會使用 標識符 目標元素完成對應,其數據類型與來源專案相同。
您現在已建立兩個具有相同數據類型之元素之間的直接對應。
[程序 代碼 ] 窗格會顯示您所建立的對應關聯性:
提示
若要檢查您的對應是否有任何問題,請選取 [ 檢視問題]。 例如,如果您在具有不相符數據類型的項目之間建立對應,警告會出現在 [警告] 索引卷標上的 [問題] 清單中:
建立元素之間的複雜對應
若要指定來源和目標架構中元素之間的更複雜的轉換,例如,您想要合併或擁有不同數據類型的專案,您可以使用一或多個函式來執行對應中所需的轉換。
在對應程式介面上,函式卷標會根據函式群組進行色彩編碼。 函式名稱旁邊會出現函式的符號,例如:
下表列出您可以使用的函式群組和一些範例函式。 如需完整清單,請參閱 數據對應工具中的函 式清單。
群組 | 函式範例 |
---|---|
集合 | Average、Count、Direct Access、Distinct values、Filter、Index、Join、Maximum、Minimum、Reverse、Sort、Subsequence、Sum |
轉換 | 至日期、整數、數位、字串 |
日期和時間 | 新增天數、目前日期、目前時間、等於日期 |
邏輯比較 | Equal、Exists、Greater、Greater 或 equal、If、If Else、Is Nil、Is Null、is number、is string、less、less 或 equal、logical AND、Logical NOT、logical NOT、logical OR、Not equal |
數學運算 | Absolute、Add、Arctangent、Ceiling、Cosine、Divide、Exponential、Exponential(base 10)、Floor、Integer Divide、Log、Log(base 10)、Module、Multiply、Power、Round、Sine、Square Root、Subtract、Tangent |
String | 字串、Concat、Contains、End with、Length、Lowercase、Name、Regular Expression Matches、Regular Expression Replace、Replace、Replace、Starts with、String to Codepoints、Substring、Substring after、Substring before、Trim、Trim Left、Trim Right、Uppercase |
Utility | Copy、Error、Execute XPath、Format DateTime、Format Number、Run XSLT |
新增不含對應的函式
本節中的範例會將來源元素中的數據從 String 轉換成 DateTime,這是目標元素類型。 此範例會在不先建立對應的情況下開始,並使用接受單一輸入的 To Date 函式。
若要在建立對應時檢視程式代碼中發生的情況,請在對應工具的右上角選取 [檢視程序代碼]。
在 [ 函式 ] 清單中,尋找並選取您想要使用的函式,以將函式新增至對應器介面。 如果函式清單已折疊,請在對應工具的左上角選取函式圖示 (
)。
此範例會選取 [轉換函式] 群組中的 [到日期] 函式。
注意
如果對應中不存在對應,或當您將函式新增至對應時選取對應,則函式會出現,但未連線到任何元素或其他函式,例如:
將函式連接到來源和目標元素。
拖曳並繪製來源專案與函式左邊緣圓形之間的線條。 您可以從來源專案或函式開始。
在函式右邊緣與目標元素之間拖曳並繪製線條。 您可以從目標專案或函式開始。
[程序 代碼 ] 窗格會顯示您所建立的對應關聯性:
在對應器介面上,選取函式圖形以檢視函式詳細數據。
在 [ 輸入] 索引標籤上,確認或編輯要使用的輸入。
某些案例需要定義超越立即配對來源和目標元素的轉換。 例如,若要定義一組陣列與其專案之間的轉換,您需要 在數位之間建立迴圈。 或者,若要在元素的值符合條件時執行工作,您需要 在專案之間新增條件。
新增使用多個輸入的函式
本節中的範例會將多個來源元素串連為輸入,並將單一輸出對應至目標元素。 此範例會使用 Concat 函式,此函式接受多個輸入。
若要在建立對應時檢視程式代碼中發生的情況,請在對應工具的右上角選取 [檢視程序代碼]。
在 [ 函式 ] 清單中,尋找並選取您想要使用的函式,以將函式新增至對應器介面。
如果函式清單已折疊,請在對應工具的左上角選取函式圖示 (
)。
此範例會選取 String 函式群組中的 Concat 函式。
注意
如果對應中不存在對應,或當您將函式新增至對應時選取對應,則函式會出現,但未連線到任何元素或其他函式,例如:
在對應器介面上,選取函式圖形以檢視函式詳細數據。
在 [ 輸入] 索引標籤上,選取要作為輸入的來源架構元素。
此範例會 選取 FirstName 和 LastName 來源架構元素作為函式輸入。 對應程式會自動新增來源專案與函式之間的個別對應。
若要完成對應,請在函式的右邊緣與目標元素之間拖曳並繪製線條。 您可以從目標專案或函式開始。
[程序 代碼 ] 窗格會顯示您所建立的對應關聯性:
逐一查看陣列
如果您的來源和目標架構包含陣列,您可以建立循環來逐一查看陣列的專案。 本節中的範例會透過 Employee 來源陣列和 Person 目標陣列建立迴圈,以及數位專案之間的對應。
若要在建立對應時檢視程式代碼中發生的情況,請在對應工具的右上角選取 [檢視程序代碼]。
在對應程式介面 的 [來源 ] 和 [目的地 ] 窗格中,尋找您要對應的陣列。
拖曳並繪製數位專案配對之間的線條。 您可以從 [ 來源 ] 窗格或 [ 目的地 ] 窗格開始。
下列範例會從 [來源] 窗格開始,並對應 Employee 來源陣列和 Person 目標陣列中的 [名稱] 專案:
完成對應第一組陣列之後,對應程式會自動在來源和目標陣列父元素之間新增迴圈,其具有下列連接點類型:
下列範例會反白顯示來源 Employee 與目標 Person 父陣列之間的自動新增迴圈:
[程序 代碼 ] 窗格會顯示您所建立的對應和循環:
繼續對應其他陣列元素,例如:
評估條件以執行工作
假設您想要新增評估條件的對應,並在符合條件時執行工作。 在此案例中,您可以使用多個函式。
在下列範例中,當購買數量超過 20 個專案時,對應會使用下列函式計算要套用的折扣:
函式群組 | 函式 | 此範例中的用途 |
---|---|---|
比較 | 大於 | 檢查購買數量是否超過 20。 |
比較 | If | 檢查 Greater 函式是否傳回 true。 |
數學運算 | 乘積 | 如果 condition 為 true,請將項目價格乘以 10% 以計算折扣。 |
在 [來源] 和 [目的地] 窗格中,尋找要對應您案例中的元素。
此範例使用下列元素:
來源 窗格: ItemPrice 和 ItemQuantity
目的地 窗格: ItemPrice、 ItemQuantity 和 ItemDiscount
在 [ 函式 ] 清單中,尋找並選取您想要使用的函式,以將函式新增至對應器介面。
如果函式清單已折疊,請在對應工具的左上角選取函式圖示 (
)。
如有必要,請移動地圖工具介面上的函式圖形,使其更容易選取。
本範例會將下列函式新增至對應器介面: Greater、 If 和 Multiply
若要在建立對應時檢視程式代碼中發生的情況,請在對應工具的右上角選取 [檢視程序代碼]。
視您的案例需要,依特定順序連接來源元素、函式和目標專案。
此範例會以指定的順序連接下列專案,以正確建立對應:
啟動 尾端 ItemPrice 來源專案 ItemPrice 目標元素 ItemQuantity 來源專案 圖形左邊緣的更大 函式輸入。 此輸入會提供函式詳細數據中 [值 1] 欄位的數據。 圖形右邊緣的更大 函式輸出 如果 函式的輸入位於圖形的左邊緣。 此輸入會提供函式詳細數據中 [條件] 欄位的數據。 ItemPrice 來源專案 將函式的輸入乘 以圖形左邊緣。 此輸入會提供函式詳細數據中 Multiplicand 欄位的數據。 將函式的輸出乘 以圖形右邊緣。 如果 函式的輸入位於圖形的左邊緣。 此輸入會提供函式詳細數據中 [值] 欄位的數據。 如果 函式的輸出位於圖形的右邊緣。 ItemDiscount 目標專案 下列範例顯示此時的對應:
在下列函式詳細數據中,於 [輸入 ] 索引標籤上確認或提供下列值:
函式 輸入域和值 大於 - 值 1: ItemQuantity 來源元素
- 值 2: 20 做為自定義值乘積 - Multiplicand 1: ItemPrice 來源元素
- 多重和 2: .10 做為自定義值If - 條件: 大於(ItemQuantity, 20)
- 值:multiply(ItemPrice, .10)下圖顯示完成的範例:
[程序 代碼 ] 窗格會顯示您所建立的對應:
儲存您的對應
完成時,在對應工具列上,選取 [儲存]。
Visual Studio Code 會將對應儲存為下列成品:
- your-map-name.love> my life file in the Artifacts>MapDefinitions project folder <
- 在 Artifacts>Maps 專案資料夾中的 <your-map-name>.xslt 檔案
測試您的對應
若要確認轉換如預期般運作,您需要範例輸入資料。
在您的地圖工具列上,選取 [ 開啟測試面板]。
在 [測試對應] 窗格的 [範例數據] 方塊中,貼上您的範例輸入,然後選取 [測試]。
[ 結果] 方塊會顯示測試結果。
從專案中的工作流程呼叫您的對應
在 Visual Studio Code 活動列上,選取 [總 管] (檔案圖示) 以檢視邏輯應用程式項目結構。
展開具有您的工作流程名稱的資料夾。 從 workflow.json 檔案的捷徑功能表中,選取 [開啟設計工具]。
在工作流程設計工具上,遵循下列一般步驟,來新增名為使用對應程式工具 XSLT 轉換的資料對應程式作業內建動作。
在設計工具上,選取 [使用資料對應程式 XSLT 轉換] 動作。
在出現的動作資訊窗格中,指定 [內容] 值,並將 [對應來源] 設定為 LogicApp。
開啟 [ 對應名稱] 列表,然後選取您的地圖 (.xslt 檔案)。
若要在 Azure 入口網站中使用相同的使用資料對應程式 XSLT 轉換動作,您必須將對應新增至標準邏輯應用程式資源。
相關內容
- 如需在 Azure Logic Apps 中使用 B2B 作業的資料轉換,請參閱使用 Azure Logic Apps 在工作流程中新增轉換的對應