共用方式為


有關開發背景工作的建議

適用於此 Power Platform Well-Architected 可靠性檢查表建議:

回復:05 透過執行錯誤處理和瞬態失效處理來增強工作負載的彈性。 在解決方案中建置功能以處理元件失效和瞬態錯誤。

本指南說明開發背景工作的建議。 背景工作會自動執行,無需使用者互動。 許多應用程式要求獨立於使用者介面 (UI) 執行的背景工作。

背景工作的一些範例包括批次處理工作、密集型處理任務和長時間執行的流程,例如工作流程。 應用程式會啟動工作並處理來自使用者的互動式要求。

例如,應用程式可能需要產生摘要,並從使用者上傳的文件中擷取情緒和關鍵點。 可以執行背景工作來執行 AI 動作並將摘要和關鍵點儲存到資料庫。 使用者不必等待該過程完成。 另一個範例是,使用者可能會提交費用報告,這會啟動處理費用報告並將其提交以供核准的背景工作流程。 使用者可以在背景工作執行時,繼續提交另一個費用報告或離開應用程式。 背景工作完成後,會向使用者發送電子郵件,確認已提交費用報告以供核准。

背景工作會協助將應用程式 UI 上的負載減到最少,進而提高可用性並減少互動式回應時間。

關鍵設計原則

若要選擇要指定為背景工作的任務,請考慮任務是否在沒有使用者互動的情況下執行,以及 UI 是否需要等待任務完成。 要求使用者或 UI 在執行時等待的任務通常不是適當的背景工作。

背景工作的類型

以下是一些背景工作範例:

  • 需要很長時間才能完成的資源密集型工作,例如執行一系列交易。

  • 批次工作,例如夜間資料更新或排程處理。

  • 長時間執行的工作流程,例如訂單履行或佈建服務和系統。

  • 需要非同步協作的工作流程,例如核准。

  • 敏感資料處理,將任務傳輸到更安全的位置以進行處理。 例如,你可能不希望在 Web 應用程式中處理敏感資料。 反之,您可以使用諸如 Gatekeeper 模式之類的模式,將資料傳輸到有權存取受保護儲存體的獨立後台流程。

觸發程序

使用以下命令啟動背景工作:

  • 事件驅動的觸發器:事件 (應用程式中的使用者操作或針對資料來源發生的事件) 會觸發工作。

  • 計劃驅動的觸發器:基於計時器的計劃調用工作。 工作可以排程為定期執行,也可以規劃為單次執行。

事件驅動的觸發程序

動作會觸發啟動背景工作的事件驅動調用。 事件驅動觸發程序的範例包括:

  • UI 或其他工作會觸發背景工作,並將資料從執行的動作傳遞到背景工作。 例如,使用者透過表單提交費用報告,並將表單詳細資訊傳遞到背景工作以進行處理。

  • UI 或其他工作會儲存或更新儲存體中的值。 背景工作會監視儲存體並偵測變更 (例如正在新增新值或修改現有值),並根據該變更觸發背景工作。

  • UI 或其他工作向端點發出要求,例如 HTTPS URI 或作為 Web 服務公開的 API。 作為要求的一部分,UI 或工作會傳輸背景工作所需的資料。 端點或 Web 服務會調用背景工作,背景工作會使用資料作為其輸入。

事件驅動觸發器的其他範例包括:在應用程式中提交的表單、向資料存放區添加新行、在 copilot 中啟動調用流的主題的觸發字詞、資料存放區中欄位的值更改、收件匣中收到具有特定主題或來自特定發件者的電子郵件,以及上傳到檔儲存位置的檔。

使用觸發條件來簡化工作流程並減少不必要的執行次數。 觸發條件會設定在觸發工作流程之前,必須滿足的多個條件。

注意

如果在工作流程過程中變更了啟動工作流程的資料來源,請務必使用觸發條件來防止無限迴圈。 例如,應用程式可能會變更 Microsoft Dataverse 表格行中的欄位,工作流程會根據這些變更的欄位執行其他查詢,並進一步修改同一列。 僅當由應用程式變更的欄位更新時 (而非任何其他欄位),才使用觸發條件啟動工作流程。

排程驅動的觸發程序

計時器會觸發啟動背景工作的排程驅動調用。 排程驅動觸發程序的範例包括:

  • 背景工作每天或每周執行一次,並執行一組動作。

  • 單獨的過程或應用程式啟動了一個計時器,而該計時器在時間延遲後或在特定時間會調用背景工作。

適合排程驅動調用的其他工作範例包括批次處理例行公事 (例如根據客戶最近的行為更新客戶的相關產品清單)、例行資料處理工作 (例如產生累計結果)、每日報告的資料分析、資料保留清理和資料一致性檢查。

傳回結果

背景工作是在獨立的進程中,與 UI 或調用背景工作的進程非同步執行。 在理想情況下,背景工作是自主導引作業。 它們的執行階段進度不會影響 UI 或叫用進程,這意味著叫用進程不會等待工作完成。 UI 和叫用進程無法偵測工作何時結束。

如果您需要背景工作與叫用工作通訊以指示進度或完成,則必須執行如下機制:

  • 將狀態指示器值寫入 UI 或叫用方工作可存取的儲存體,該工作可以監視或檢查此值。 背景工作會傳回給叫用方的其他資料可放在同一個儲存體中。

  • 從背景工作公開 API 或端點,UI 或叫用方可以存取該 API 或以獲取狀態資訊。 回應可包括背景工作傳回給叫用方的資料。

  • 將背景工作設定為使用狀態或它處理回 UI 的資料來進行回應。

協調

背景工作可能很複雜,需要多個工作才能執行。 在這些情況下,通常會將工作劃分為多個使用者可以執行的較小離散步驟或子工作。 多步驟工作的效率更高、更具有彈性,因為個別步驟通常可在多個工作中重複使用。 新增、移除或修改步驟順序也很容易。

協調多個工作和步驟可能是一項挑戰,但有三種常見模式可以指引您的解決方案:

  • 將工作分解為多個可重用的步驟。 應用程式可能需要對其處理的資訊執行不同複雜度的各種工作。 實行此類應用程式的一種簡單但沒有彈性的方法是將此進程視為整體模組執行。 但是,如果應用程式需要在其他地方進行相同處理的部分,則此方法可能會減少重構代碼、最佳化代碼或重複使用代碼的機會。

  • 管理工作 的步驟編排。 應用程式可能會執行包含許多步驟的工作,其中一些步驟可能會調用遠端服務或遠端資源。 有時,各個步驟彼此獨立,但它們由實行工作的應用程式邏輯編排。

  • 管理失敗 工作步驟的恢復。 如果一或多個步驟失敗,應用程式可能需要撤消一系列步驟執行的工作,這樣也一併定義了最終一致的作業。

復原注意事項

建立可復原的背景工作,以為應用程式提供可靠的服務。 規劃和設計背景工作時,請考慮以下幾點:

  • 背景工作需要正常處理重新啟動,而不是損壞資料或將不一致引入應用程式。 對於長時間執行或多步驟工作,請考慮使用檢查點。 使用檢查點將工作的狀態保存在持續儲存體中或佇列中的訊息中,並設定在動作意外失敗時的重試邏輯。

  • 當您使用佇列與背景工作通訊時,佇列可充當緩衝區,用來儲存在應用程式負載比平時高時,發送到工作的要求。 工作可以在不太繁忙的時段趕上 UI,且重新啟動不會阻止 UI。

縮放和效能考量

背景工作必須提供足夠的效能,以確保它們不會在系統負載不足時,阻止應用程式或延遲作業。 通常,縮放託管背景工作的計算執行個體時,效能會提升。 規劃和設計背景工作時,請考慮以下與可擴縮性和效能相關的要點:

  • 如果背景工作的結果是呈現給使用者,則背景工作可能會影響使用者體驗。 例如,背景工作可能要求使用者等待通知、重新整理頁面或手動檢查工作的狀態。 這些行為可能會增加使用者互動的複雜性,並對使用者體驗產生負面影響。 請考慮將資料回應傳回 UI 的替代方法,例如透過電子郵件或 Microsoft Teams 發送通知,或包含在 UI 中檢查狀態更新的功能。 在我們的提交費用表單範例中,您可以在應用程式中有一個頁面,列出所有提交的費用表單及其狀態和觸發重新整理的功能,而不是將狀態回應傳回 UI。

  • 背景工作可能會給資料同步和流程協調帶來挑戰,尤其是在背景工作相互依賴或依賴其他資料來源時。 例如,後台作業可能會處理資料一致性問題、爭用條件、死鎖或超時。

  • 為了防止負載下的效能損失,您可以實施邏輯,以便處理鏈的單個點不會導致瓶頸。 請考慮其他限制,例如工作流程動作、儲存體以及應用程式和背景工作依賴的其他服務的最大輸送量。

權衡:後台作業會給系統引入更多元件和依賴項,這可能會增加解決方案的複雜性和維護成本。 例如,背景工作可能需要單獨的監視服務和重試機制。

Power Platform 便利

以下部分介紹可用於託管、執行、設定和管理背景工作的服務。

Power Automate

Power Automate 雲端流 是在雲中運行的工作流。 它們可以是由事件觸發的自動流程,例如來自特定人員的電子郵件抵達。 它們可以是即時流程,您只需點擊一個按鈕即可開始,例如您從行動裝置發送給團隊的提醒。 它們可以是在特定時間執行的預定流程,例如每日資料上傳到 SharePoint 或資料庫。 您也可以自動化桌上型電腦或行動裝置中的重複性工作。

熟悉自動化、排程和即時流程在輸送量、要求、並行、迴圈和反批次處理方面的限制。 請務必在設計工作流程時,考慮這些限制。

透過規劃錯誤處理來降低風險。

以下是您可以使用 Power Automate 流程運行後台作業的一些範例:

Microsoft Dataverse

Microsoft Dataverse 計算欄和匯總

  • 公式列 是在表中顯示計算值的 Microsoft Dataverse 列。

  • 計算結果資料行會將商務程序中使用的手動計算自動化。 例如,銷售人員可能想要知道商機的加權營收,這是根據商機的估計營收乘以可能性。 或者,如果訂單高於特定金額,他們要自動套用折扣。 計算結果資料行可以包含簡單算術運算和條件運算的結果 (例如大於或 If-Else) 。

  • 彙總資料行藉由監控重要商務計量,協助使用者取得資料的見解。 彙總資料行包含一個計算與特定資料列相關之資料列的彙總值。 這包括一般資料表和活動資料表 (例如電子郵件和約會)。 在較複雜的情況中,您可以透過資料列階層來彙總資料。 身為系統管理員或自訂員,您可以使用 Power Apps 中的自訂工具來定義彙總資料行,不需要撰寫程式碼。

後台操作 可以發送異步處理的 Dataverse 請求。 當您不想在要求執行時維護連線,背景作業就非常有用。

外掛程式 是自定義事件處理程式,在處理 Microsoft Dataverse 數據操作期間引發的特定事件回覆執行。

Microsoft Dataverse 也提供了強大的解決方案,可透過低程式碼外掛程式來達到更高效率的資料結構並減少用戶端工作負載。這些外掛程式是可重複使用,在 Dataverse 中執行一組特定命令的即時工作流程,可在伺服器端執行並由個人化事件處理常式觸發。

可靠性檢查清單

請參閱完整的建議集。