處理工作佇列
工作佇列處理是指需要以特定順序完成的工作項目清單管理。 此清單包含每個項目的相關資訊,例如名稱、優先順序、到期日、狀態及要處理的實際值。
處理工作佇列的方式:
使用 Dataverse 專業開發人員功能 (僅適用於高級整合案例):
深入瞭解 Dataverse 專業程式碼工具:Dataverse開發人員文件。
正在處理逐步解說
若要展示一些可用的處理選項,這裡有三種不同的處理案例。
Power Automate 桌面 (PAD) 中根據桌面流程的工作佇列處理
處理工作佇列項目 & 更新範例
在 Power Automate 桌面中使用工作佇列動作的第一步是在您正在使用的環境中建立工作佇列,並載入一些下游要使用的佇列項目和資料。 佇列項目可以透過桌面流程、雲端流程或大量載入至工作佇列中,如此處所述。 在此範例中,一些佇列項目已手動新增至工作佇列中,以說明如何使用 Power Automate 桌面中的動作。
工作佇列項目已建立,且 [值] 欄位包含 JSON 格式的文字,此文字將在桌面流程的下游使用。
我們將用來示範工作佇列動作用法的範例流程模擬了一個程序,該程序將使用來自雲端的工作佇列項目、處理值欄位中包含的資料並將其轉換為要在下游處理的自訂物件。 請注意,並非強制使用 JSON 或自訂物件做為工作佇列項目的值,但是這種方法對於組織具有多個屬性並遵循特定架構的值而言是個非常實用的方法。
處理工作佇列項目動作是用來指定要在桌面流程中使用和處理項目的工作佇列。 您可以將該動作設定為使用下拉箭頭從清單中選取工作佇列,並傳遞包含佇列名稱的變數。 執行時,此動作的運作原理是將工作佇列中的第一個 (最舊的) 項目引入包含已排入佇列狀態的流程。 佇列項目開始在流程中處理後,其狀態就會自動變更為正在處理。
若要設定中斷點 (紅點),請按一下流程中 [動作 3] 的旁邊,然後透過 PAD 主控台執行。 當程序在中斷點處暫停時,按兩下流程變數底下的填入值,就可以打開 WorkQueueItem 變數,這會顯示與正在處理工作佇列項目相關的所有屬性。
在流程的動作 2 中,我將傳回的 JSON 值轉換為自訂物件 (在此案例中,可透過 %WorkQueueItem.Value% 存取)。 這樣做的原因是因為它有助於剖析 JSON,並在流程下游使用 JSON 屬性。 在此假設的案例中,這些資訊將用於進入 Farbrikam 的財務入口網站。
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
例如,假設您需要將發票識別碼輸入到財務系統的欄位中,做為自動化 web 或桌面應用程式 UI 流程的一部分,您可以使用 %JsonAsCustomObject.InvoiceId% 填入文字欄位,然後按下按鈕。
接下來,此範例在完成處理步驟後會包含一些條件陳述式,並使用來自子流程 Fabrikam 資料項目內自訂物件的資料。 如果程序在執行端對端而未遇到任何與輸入系統相關的例外狀況時,則使用更新工作佇列項目動作會將工作佇列項目的狀態變更為已處理,且處理結果欄位可用於輸入一些選擇性附註。 如果到期欄位保留空白,新的佇列項目就會保留工作佇列屬性中定義的項目到期時間值。
您可以按一下更新工作佇列項目動作設定視窗中的發生錯誤,設定例外狀況處理選項。 [進階] 索引標籤底下有三個選項可進行自訂。如果在 PAD 中完成處理之前手動或透過其他系統程序從佇列中移除工作佇列項目,則可能會出現找不到工作佇列項目。 如果在處理佇列項目時,自動化流程或某人在流程入口網站中將正在處理的工作佇列項目的狀態變更為 暫停,則可能會發生工作佇列項目暫停。 如果佇列中已不存在該佇列項目,或已將其置於暫停狀態,則可能會出現無法更新工作佇列項目。 以上所有情況都是可能發生的邊緣情況 - 在此處深入了解如何處理桌面流程中的錯誤。
如果在將工作佇列項目的資料處理至資料輸入系統的過程中發現某些問題,則可以將該項目的狀態指派為一般例外狀況、IT 例外狀況或業務例外狀況。 當您的自動化使用案例符合可能適用的準則時,就可以使用這些例外狀況。
假設在處理佇列項目時,發現其符合案例 2。 在這種情況下,佇列項目會在原始佇列中標示為一般例外狀況。 根據具體情況,您可能會決定將無法成功處理之佇列項目的狀態變更為替代狀態選項之一。 在這裡,您可以決定是否需要人工干預,或是建立一個後續程式,其中必須具有管理每個例外狀況狀態所需的邏輯。
自動重試模式
Power Automate 電腦版中的處理工作佇列項目動作包含一個用於設定或覆寫自動重試機制的進階選項。 此功能可讓您指定每個工作佇列項目的最大自動重試計數,這對於處理暫時性網路錯誤或臨時系統不可用等 IT 例外狀況非常有用。 它使機器能夠保留項目並執行受控重試,而無需將項目重新排入佇列,從而確保更有效率、更有彈性的工作佇列處理。
您可以在 Dataverse 中設定並集中控制工作佇列記錄的最大重試次數。 此預設值適用於透過處理工作佇列項目動作處理此工作佇列的所有桌面流程。
若要覆寫流程中的佇列等級預設值,請導覽至處理工作佇列項目動作的進階區段,然後切換覆寫工作佇列自動重試設定選項。 此設定可讓您將最大重試計數調整為更高或更低的值,甚至可以透過將最大重試計數設為 0 來停用重試機制。
當您使用狀態設定為 IT exception
且最大自動重試計數大於 0 的更新工作佇列項目動作時,系統不會立即將更新傳送至工作佇列協調器。 相反,它會重試該操作,直到達到指定的最大重試次數。 工作佇列項目中唯一更新的值是 retrycount
。 該值從第二次更新嘗試開始增加,直到達到最大自動重試計數。 此外,名為 CurrentRetryCount
的本機工作佇列項目變數會隨著每次重試而遞增。 如果需要,此變數允許您根據其值實作自訂邏輯。
如果滿足以下條件,流程循環回到處理工作佇列項目動作的頂部時不會請求新項目:
- 未達最大重試次數。
- 除 IT 例外狀況外,不會發生其他更新。
當達到最大重試計數時,更新操作會將更新傳送至協調器,將專案的狀態變更為 IT 例外狀況並包含任何提供的處理註解。
PAD 中的新增和重新排隊工作佇列項目範例
新增工作佇列項目可讓桌面流程使用者將工作佇列項目填入已在流程入口網站中設定的工作佇列中。 使用新增工作佇列項目動作支援批次項目建立。
在此範例中,每天都會將 .csv 格式的 Excel 檔案放入目錄中,且每一列都必須新增至工作佇列中。
此範例程序圖中的前幾個動作對應每天 Contoso Invoices.csv 檔案所在的資料夾,當程序執行時,會先從 CSV 檔中讀取資料表。 CSVTable 變數包含已匯入,並將處理為新佇列項目的資料。
動作 3 和 4 會產生我們選擇新佇列項目新增到工作佇列後到期的時間。 動作 3 會擷取目前的系統資料和時間,在此範例中,使用 %Add to datetime% 動作將 7 天新增至其中。 此輸出會儲存在名為 ExpiryDatetime 的變數中,此變數將在新增工作佇列項目動作中使用。
動作 5 引入了每個迴圈,用來迭代瀏覽匯入的 CSVTable 中的每一列資料,此動作會為目前正在處理的項目呈現資料列。
現在,此範例範例中所有先前的動作都已合併到新增工作佇列項目動作的值設定中。
工作佇列參數設定為我們想要新增工作佇列項目的佇列,在本案例中,已從下拉式功能表中選取示範 PAD 佇列。
優先順序參數會保留預設值一般,但也可以選擇低或高。 會先處理優先順序較高的工作佇列項目,然後是一般,最後處理混合到同一工作佇列的項目。
名稱參數已使用靜態首碼來設定,並帶有變數值 CurrentItem['ID'],其中包含正在處理之資料列的 [ID] 儲存格值。 這是選擇性的,但根據您的使用案例,這可能很實用。
使用變數 CurrentItem 中資料列的值,以 JSON 格式輸入輸入參數。 請注意,每個標頭名稱都是使用標記法 ['name of header'] 附加到 currentitem 變數
到期欄位填入了我們在前面的步驟中所新增 7 天的日期時間變數。 如果保留空白時,所新增的工作佇列項目將包含為工作佇列設定的項目到期時間值。
處理附註是選擇性的,請視需要使用。
執行程序時,匯入的 CSV 中的每個資料列都會建立一個包含佇列狀態的工作佇列項目,這表示該工作佇列項目可以進行處理。
這些只是一小部分可在 PAD 中使用的工作佇列動作。 花一些時間探索並開發具有創造性的用途,將工作佇列整合至您的 Power Automate 流程中!
將項目重新排入佇列並包含延遲範例
將項目重新排入佇列並包含延遲動作可讓桌面流程使用者重新將項目排入佇列並設定延遲時間段,在此期間可以再次釋放項目進行處理。
在此範例中,會有一個工作佇列載入項目 (設定為在 24 小時後到期),因為 IT 正在進行一些日常系統維護,且項目需要重新排入佇列,所以無法及時處理這些項目。 維護將在一個晚上後完成,因此我們將繼續將每個佇列項目延遲 24 小時,然後將它們設定為在發佈期後 24 小時後到期。
此範例程序的前三個動作是日期時間動作。 「取得目前日期和時間」動作會擷取動作執行時的系統日期時間。 接下來,我們使用「新增至日期時間」動作來滿足兩個要求,首先我們要在目前日期時間加上 24 小時來定義延遲時間,然後在目前日期時間加上 48 小時作為到期時間。
接下來,在範例中,「處理工作佇列項目」動作會設定為指向已載入的工作佇列,並且「將項目重新排入佇列並包含延遲」會置於迴圈中。
為延遲和到期產生的值現在可以傳遞到「將項目重新排入佇列並包含延遲」動作中。 「工作佇列項目」欄位由迴圈產生的變數填入 - 這表示哪個佇列項目要重新排入佇列。 接下來,我們將使用日期時間動作所建立的值插入「延遲至」和「到期」欄位。 「延遲至」是必填項目,但您可以自行決定如何使用「到期」和「處理結果」。
透過這個簡單的過程,您可以將佇列中所有可用的項目重新排入佇列,將它們延遲一定時間,並可以選擇設定到期日和處理結果。
根據雲端流程和連接器處理
將工作佇列專案出列和處理的最簡單方式如下:
移至 Power Automate 並以您的認證登入。
在左功能表中,選取我的流程。
在工具列中,選取 + 新增流程,然後選取即時雲端流程。
提供流程名稱,例如我的第一個工作佇列流程,然後選取手動觸發流程。
選取建立。
打開流程設計工具後,選取 + 新步驟,然後選取 Microsoft Dataverse 連接器。
在動作清單中,執行未繫結動作。
參數 | 數值 | 描述: |
---|---|---|
資料表名稱 | 工作佇列 | 工作佇列資料表的名稱。 |
動作名稱 | 出列 | 用來取得佇列中的下一個可用項目的動作。 |
資料列識別碼 | [工作佇列識別碼] | 您想要從佇列清除佇列的工作佇列識別碼 (GUID)。 您可以瀏覽至佇列的工作佇列詳細資料頁面,並開啟進階詳細資料面板來取得此值。 |
注意
繫結動作是 Dataverse 在特定表格 (我們範例中的工作佇列) 上定義的動作,而且只能在該資料表的記錄上執行。 平台會使用繫結動作來執行特定記錄的自訂商務規則或作業。
- 您的流程現在應該類似此範例。
選取儲存,然後測試您的流程。
在測試面窗格中,請選取手動、測試、執行流程,然後 完成。
如果流程成功執行,您應該會得到類似的結果 (但具有不同的識別碼)。
- 接下來,從主體欄位複製整個 JSON 內容,然後選取流程右上角的編輯。
提示
出列工作佇列專案之後,請使用此專案的 JSON 內容作為架構範例來解析專案的 JSON 屬性。 這可讓您輕鬆存取後續流程動作中由工作佇列 orchestrator 所傳回之專案的任何屬性。
- 選取 + 新步驟並搜尋名為 Parse JSON 的動作來新增新步驟,並選取該動作。
- 將滑鼠放在內容欄位中,然後選取先前動作中的主體屬性。
接著,選取從範例生成,並將先前複製的 JSON 字串貼入對話方塊,然後選取完成。
選取 + 新增步驟,然後選取 Microsoft Dataverse 連接器。
從動作清單中,選取更新資料列。
在資料表名稱欄位中,選取 工作佇列項目資料表,並將游標放在資料列識別碼欄位中。
在動態內容清單中,您現在會擁有工作佇列項目資料表中所有可用的欄位。
選取顯示高級選項,然後將 RowID、處理結果、狀態和狀態原因欄位設定為下列值。
欄位 | 數值 | Details |
---|---|---|
資料列識別碼 | workqueueitemid | 您可以在動態內容清單對話方塊中選取此值。 |
正在處理結果 | 項目已成功處理。 | |
狀態 | 已處理 | |
狀態原因 | 已處理 |
選取儲存,然後再次測試流程。
如果流程成功執行,您應該會得到和下列類似的結果。
現在,瀏覽至工作佇列詳細資料頁面和工作佇列項目清單區段,然後選取查看全部。
篩選狀態欄位,只顯示處理中和已處理的項目,以確認我們的清除佇列和更新動作如預期進行。
恭喜,您剛剛完成第一個工作佇列處理案例!
具有桌面流程支援的雲端流程流程處理
對於此案例,我們透過新增桌面流處理步驟來擴展前一個場景。
返回並編輯我的第一個工作佇列流程。
在剖析 JSON 動作之後 直接新增動作,並搜尋桌面流程連接器和執行由電腦版 Power Automate 建立的流程。
在桌面流程下拉式功能表中,選擇並編輯現有的桌面流程,或選取 + 建立新的桌面流程,然後遵循畫面上的指示建立桌面流程並啟動電腦版 Power Automate。 如果您是新的桌面流程,您可以在此處深入瞭解。
電腦版 Power Automate 設計工具打開後,會建立兩個名為 WorkQueueItemValue 和 WorkQueueItemName 的輸入變數,然後分別新增兩個名為 ProcessingNotes 和 ProcessingStatus 的輸出變數,這些變數都應該有文字作為其資料類型。
提供 WorkQueueItem 變數的預設值,以便您可以稍後在本機測試指令碼。 在您已遵循大量匯入教學課程時,您應在廠商發票佇列中找到值為 JSON 格式的工作佇列專案。 這是使用的其中一個值的範例。
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
接下來,儲存雲端流程。
在動作面板中,打開變數動作群組,然後按兩下將 JSON 轉換成自訂物件動作,將其新增至在屬性視窗中開啟的設計視窗。
選取 JSON 欄位中的變數圖示,然後選擇 WorkQueueItemValue 變數。
將生成的輸出變數從 JsonAsCustomObject 重新命名為 VendorInvoice,然後選取儲存。
接著,從條件群組新增 If 動作,並設定其屬性,如下所示:
First operand Operator Second operand %VendorInvoice['Amount']% 小於 (<) 5000 選取儲存。
從名為 Else 的條件群組新增另一個動作,並在 If 和 End 動作之間加入。
現在,請從稱為 Set variable 的 Variables 群組新增另外兩個動作,並在 If 及 Else 動作中新增,並將 ProcessingNotes 和 ProcessingStatus 變數設定為下列值:
變數 數值 %ProcessingNotes% 發票已完成處理 %ProcessingStatus% 已處理 複製兩個 Set 變數動作,並將它們貼到 Else 和 End 動作之間,並將值變更以符合下列條件:
變數 數值 %ProcessingNotes% 業務例外:發票金額大於 $5000,這需要管理員核准。 %ProcessingStatus% 例外狀況 您的流程現在應該類似此範例。
儲存流程並執行該流程,確認流程邏輯如預期方式運作。
返回以編輯我的第一個工作佇列流程。
從清單中選取新建立 (或編輯的) 桌面流程,然後選取有人參與其執行模式。
填入下方顯示的 Work Queue Item Value 和 Work Queue Item Name 參數:
在更新資料列動作之前新增條件動作。
在選擇值欄位中定位滑鼠,然後從動態內容清單對話方塊中選取處理狀態。
將滑鼠放在另一個選擇一個值欄位中,並將已處理當作文字值輸入。
將更新資料列動作拖曳至條件動作的如果是區段。
開啟更新資料列動作詳細資訊並取代數值,以配對下列內容:
在紅色的 If 方塊中新增另一個更新資料列動作,並選取工作佇列項目作為資料表名稱。
接著,選取 workqueueitemid 作為資料列識別碼和打開顯示高級選項區段,選取處理備註結果作為 處理結果值。
選取錯誤作為狀態原因的狀態和 GenericException。
選取儲存並測試以測試整體自動化,並觀察桌面流程動作的輸出。
若要確認已處理工作佇列專案,您可以前往工作佇列詳細資料頁面,選取工作佇列項目區段中的查看所有,然後依已處理狀態篩選項目。
做得好,您剛完成了一種包含混合工作佇列處理的更高級案例!