撰寫指令碼以實作複雜的商務規則
某些 Dynamics 365 Field Service 實現包括功能和複雜的業務邏輯,這些功能和複雜的業務邏輯超出了 Field Service 提供的現成流程。 有時,這些複雜性甚至超出了平台選項,例如工作流和 商務規則。 對於複雜的需求,開發人員可以建立自訂程式碼。
實作複雜商務規則通常涉及撰寫伺服器端的外掛程式以及用戶端的 JavaScript Web 資源。
本文探索這些最佳做法:
- 在編寫任何腳本之前,請研究現有的 Field Service 流程和功能。
- 盡可能避免編寫腳本。 首先,嘗試使用平臺選項,例如 Power Automate 和 工作流。
- 以非同步而不是同步方式執行指令碼。
- 避免在載入表單時載入腳本。 相反,僅在需要時載入它們。
- 對指令碼執行解決方案檢查工具。
- 不要編輯或刪除現有的表單程式庫。
指令碼的類型
外掛程式
外掛程式提供了一種在 Microsoft 的事件驅動的 Dynamics 365 平臺上編寫您自己的自定義功能的方法,適用於您能想像到的幾乎任何流程。 外掛程式充當事件處理程式,並註冊為在 Dynamics 365 中的特定事件上運行。 外掛程式是用 C# 編寫的, Visual Basic它們可以在同步模式或異步模式下運行。
自訂外掛程式可以協助下列作業:
- 運行一些業務邏輯,例如在創建或更新 Dynamics 365 記錄時更新記錄的特定欄位或更新相關記錄。
- 在特定事件上調用外部 Web 服務,例如在保存或更新記錄時。
- 在打開任何記錄時動態計算欄位值。
- 自動執行流程,例如在 Dynamics 365 中向客戶發送有關特定事件的電子郵件。
JavaScript Web 資源
JavaScript 提供了一種應用自定義業務流程邏輯以在 Dynamics 365 中的窗體上顯示數據的方法。 在 Field Service 的內容中,開發人員可以將 JavaScript 新增至工單和預約表單來強制執行商務規則。 他們也可以將 JavaScript 新增至排程面板來建立預約規則,以便在排程面板上建立預約時執行驗證。
步驟 1: 瞭解編寫自定義腳本的風險
向 Field Service 實施添加外掛程式和 JavaScript 時要小心。 過多的腳本和編寫不當的腳本是導致性能不佳和錯誤的主要原因。 僅當自定義項對於運行 Field Service 操作至關重要時,才編寫腳本。
在編寫和實現腳本之前、期間和之後,請仔細閱讀本文和相關內容。
步驟 2: 檢查 Field Service 或 Dynamics 365 是否滿足要求
在編寫外掛程式或 JavaScript Web 資源之前,請務必檢查 Field Service 或其他 Dynamics 365 應用是否可以執行相同的功能或類似的功能。 重複的程序可能會造成錯誤和效能問題。
步驟 3: 首先嘗試使用平台選項
在編寫自定義文稿之前,請嘗試使用平臺選項(如 Power Automate工作流和 商務規則)來滿足您的要求。
如果您無法通過使用平台選項來滿足您的要求,請確定工作流是否可以足夠接近以説明您的業務。 平臺選項更具可擴充性,更受支援,在升級過程中不太可能中斷,並且性能更好。
要了解有關如何使用平台選項的更多資訊,請 轉到何時使用外掛程式與工作流?
步驟 4. 在編寫外掛程式或腳本之前查看最佳實踐
許多最佳做法已根據開發人員在數千個 Dynamics 365 實作中的經驗建立起來。 在編寫外掛程式或腳本之前和期間,請查看以下最佳實踐:
- 外掛程式和工作流程開發的最佳做法和指引Microsoft Dataverse
- 模型驅動應用的用戶端腳本的最佳做法和指南
- 開發 Dynamics 365 Customer Engagement 最佳做法
- JavaScript 定製
- Microsoft Dataverse 中可調整的自訂設計
步驟 5: 使用工具測試腳本
編寫腳本后,必須對其進行測試。
首先, 使用解決方案檢查器來驗證您的模型驅動應用 Power Apps。 解決方案檢查器可識別腳本是否違反了最佳做法,例如同步運行而不是異步 運行。
接下來,使用外掛程式分析工具來偵錯問題。
表單庫
許多 Field Service 記錄類型(如工作訂單(如下圖所示))都具有默認情況下包含在 Field Service 中的 JavaScript 表單庫。 這些程式庫會執行重要程式。
重要
不要編輯或刪除表單程式庫。
排程面板上的 JavaScript (預約規則)
預訂規則提供了一種使用JavaScript對排程面板執行驗證的方法。 但是,與在其他表單(例如工作訂單)上使用 JavaScript 時一樣,請謹慎操作。 不要建立多個預約規則。 相反,請考慮使用 預訂警報 來提醒調度員有關問題的資訊。