自訂最佳做法

請遵循下列最佳做法,以避免 Dynamics 365 Field Service 發生效能、可用性和可支援性問題。

盡量減少表單的自訂欄位

系統自訂員會將自訂欄位新增至實體表單,以擷取專屬於其行業與業務的資訊、執行商務程序,以及收集要據以報告的資訊。 不過,表單的自訂欄位過多會造成效能問題。

若要避免效能問題:

  • 盡量減少所有表單上的自訂欄位數目。 如果這是您在 Field Service 應用程式中用得最多的表單,最好先從工單表單開始著手。
  • 在自訂欄位中,將查詢類型欄位和子格最小化,就會對表單效能 (例如載入時間) 造成最大的影響。
  • 將自訂欄位 (特別是查詢和子格) 從表單的第一個索引標籤移到表單的其他索引標籤。
  • 預設隱藏表單上較少使用的欄位。

不要變更現成可用的 Web 資源、選項組、資訊安全角色或工作流程

自訂、取得相依性或現成可用 Web 資源自訂引動過程、選項組、資訊安全角色或工作流程不受支援,並且可能會導致意想不到的系統行為。

自訂這些元件的組織可能無法立即發現其環境中的問題。 不過,當 Microsoft 發佈對自訂現成可用元件的變更時,這些變更不會套用至該元件的最上層。 特定的自訂層會覆寫所有未來變更,而這最終會造成無法預料的錯誤與行為。

不要修改、編輯或刪除日期欄位或系統狀態

修改、編輯或刪除日期欄位及狀態可能會影響商務規則,並且導致解決方案更新出現問題。 工單日期的範例有承諾發出時間承諾兌現時間。 狀態欄位的範例包括工單系統狀態合約系統狀態

不要編輯或移除表單中現成可用欄位

客戶會編輯現成可用的欄位來滿足其業務需求。 不過,編輯現成可用欄位可能會造成錯誤,尤其是在程序相依於這些欄位值時。

若要避免錯誤:

  • 隱藏表單中不需要的欄位。
  • 將不需要的欄位移到其他表單索引標籤。

以下只是一個範例:Field Service 程序計算可預約資源預約記錄的估計抵達時間欄位值,以指示第一線工作人員預計何時到達地點。 如果您的組織不需要此欄位,請在表單上加以隱藏,而不是將其移除。

如需詳細資訊,請參閱下列文章:

不要編輯選項組 (選擇) 值

編輯現成可用欄位的選項組可能會導致錯誤,尤其是在程序相依於這些欄位值或是進行升級時。

若要避免錯誤:

  • 僅編輯標籤選項組,但永不編輯現成可用欄位的選項組。
  • 不要移除任何選項組選項。
  • 不要新增任何選項組選項。

以下只是一個範例:Field Service 工單預設包含名為「系統狀態」的欄位。 此欄位是選項組 (類型為「選擇」),包含 [未排程]、[已排程]、[進行中]、[已完成]、[已取消] 等選項。這其中每一個選項都有標籤以及相關聯的數值。 系統管理員可以編輯選項組的標籤 (例如「未排程」),但是絕不能編輯標籤的相關聯數值。

少用自訂指令碼,請遵循最佳做法

系統自訂員會撰寫指令碼 (通常是 JavaScript Web 資源) 來執行商務規則。 不過,自訂指令碼可能會在升級時導致效能問題、錯誤和混亂。

若要避免這些問題:

  • 盡量減少在載入時執行的指令碼。
  • 不要撰寫呼叫大量資料的指令碼,也不要撰寫多個呼叫相同資料的指令碼。

多多遵循表單指令碼最佳做法,包括下列最佳做法:

將網路要求數目和 OnLoad 事件中所需的資料量降到最低

表單載入過程中發出的網路要求數量越多,從這些要求下載的資料越多,載入表單所花費的時間就越長。 僅要求最少的必要資料量。 另外,請考慮盡量快取資料,以避免未來載入頁面時要求不必要的資料。

避免使用同步網路要求

同步網路要求可能會導致頁面載入緩慢和表單沒有回應。 改為使用非同步要求。 如需詳細資訊,請參閱這篇部落格文章。 此外,還要在任何需要對同一個實體或記錄進行多次網路呼叫記錄的案例中考慮使用「非同步和等待」;在這裡尋找更多詳細資料

避免包含不必要的 JavaScript Web 資源程式庫

越多指令碼加入至表單,下載這些表單需要越多時間。 通常指令碼在第一次載入後於瀏覽器中快取,但第一次顯示表單時的效能通常令人印象最深刻。

避免在 Onload 事件中載入所有指令碼

如果您的程式碼僅支援各欄的 OnChange 事件或是 OnSave 事件,請務必使用這些事件 (而不是 OnLoad 事件) 的事件處理常式來設定指令碼程式庫。 如此一來,當表單載入時,載入這些程式庫可以順延並提升效能。

使用摺疊的索引標籤,將 Web 資源載入順延

當 Web 資源或 iFrame 元件包含在摺疊索引標籤內的區段中,如果索引標籤已摺疊,則不會將其載入。 當索引標籤展開時,這些元件會載入。 索引標籤狀態變更時,會發生 TabStateChange 事件。 支援摺疊的索引標籤內 Web 資源或 iFrame 所需的所有程式碼都可以使用 TabStateChange 事件的事件處理常式,而減少 OnLoad 事件可能必須產生的程式碼。

避免在用戶端程式碼中出現重複的網路要求

多個或重複的網路要求會造成網頁瀏覽器懸置並影響表單載入時間。 減少要求數目可以改善效能。 替代方法是合併網路要求,並快取這些要求的值。 如前所述,也請考慮非同網路要求。

如果 XRM API 中有提供相關資訊,請避免使用角色及系統使用者特定的呼叫

使用 XRM API 來避免網路要求取得使用者權限資訊。 請參閱下列有關從同步要求轉換至其他要求的文章。 同樣地,如果 XRM API 的資訊符合您的需求,也請避免系統使用者呼叫。

設定預設可視性選項

避免在 OnLoad 事件中使用隱藏表單元素的表單指令碼。 而是針對表單載入時預設會隱藏的表單元素,設定預設可視性選項。 然後,在 OnLoad 事件中使用指令碼以顯示您要顯示的表單元素。

如需詳細資訊,請參閱下列資源:

對您的指令碼執行解決方案檢查工具

Power Apps 解決方案檢查工具是 Microsoft 的實用公用程式,可檢查 Power Apps 解決方案是否有問題並建議最佳做法。 這些問題包括 JavaScript、HTML、外掛程式及自訂工作流程活動的問題。

如需詳細資訊,請參閱下列資源:

使用非同步工作流程,而不使用同步工作流程

系統自訂員經常撰寫同步工作流程,以即時執行會在 Field Service 變更資料時執行的商務規則。 不過,以同步方式執行工作流程會降低效能。

若要避免效能問題,請非同步執行工作流程。

啟動 Field Service 和資源排程的現成可用程序

Field Service 和資源排程隨附許多執行必要商務規則的程序。

停用的程序可能會導致錯誤。

為避免出現問題,請確定所有 Field Service 和資源排程程序都處於使用中狀態。 定期執行 Field Service 解決方案健全狀況中心,以確定程序是否處於停用狀態。

執行解決方案健全狀況中心以偵測問題

Solution Health Hub 可讓您更清楚瞭解環境的狀態,並且偵測 Dynamics 365 環境的問題。 Solutoin Health Hub 在執行個體中執行規則,以驗證環境的組態,其可能隨著時間透過自然系統作業變更。 某些規則專為 Dynamics 365 Field Service 擬訂,您可以在遇到問題時根據需要執行規則。 當安裝或更新 Field Service時,會自動觸發某些規則。

定期執行 Field Service 解決方案健全狀況中心規則集,以監視您環境的健康情況。

行動應用程式效能考量

自訂行動應用程式也可能會影響效能。 如需詳細資訊,請參閱這篇文章:自訂行動應用程式時的效能考量