自定义最佳实践

请按照这些最佳实践操作以避免 Dynamics 365 Field Service 出现性能、可用性和可支持性问题。

尽量减少窗体上的自定义字段

系统定制员将自定义字段添加到实体窗体中,以捕获特定于其行业和业务的信息,运行业务流程,并收集要报告的信息。 但是,窗体上的自定义字段过多会导致性能问题。

为避免性能问题:

  • 尽量减少所有窗体上自定义字段的数量。 如果工作订单窗体是 Field Service 应用中最常用的窗体,则最好从该窗体开始想法。
  • 尽量减少自定义字段中查找类型字段和子网格的数量。
  • 将自定义字段(特别是查找和子网格)从第一个窗体选项卡移到其他窗体选项卡。
  • 默认情况下,隐藏表单上较少使用的字段。

不要更改现成的 Web 资源、选项集、安全角色或工作流

不要更改或自定义现成的 Web 资源、选项集、安全角色或工作流吗。 否则,可能会导致意外的系统行为。

自定义这些组件的组织可能不会立即在其环境中遇到问题。 但是,Microsoft 对自定义的现成组件发布的更改不会应用于这些组件的顶图层。 相反,特定的自定义图层会覆盖所有未来的更改,而这些覆盖最终会导致不可预测的错误和行为。

不要修改、编辑或删除日期字段或系统状态

修改、编辑或删除日期字段和状态可能会影响业务逻辑,并可能导致解决方案更新问题。 工作订单日期字段的示例包括 〜承诺 开始时间“和 ”承诺时间”。 状态字段的示例包括 工作订单的“系统状态 ”和 协议的“系统状态 ”。

请勿编辑开箱即用的字段或将其从表单中删除

客户可以编辑现成的字段以满足其业务需求。 但是,编辑现成的字段可能会导致错误,尤其是当进程依赖于这些字段的值时。

要避免错误:

  • 在表单上隐藏不需要的字段。
  • 将不需要的字段移到另一个窗体选项卡。

例如,Field Service 流程计算“ 可预订资源预订 ”记录上“ 预计到达时间 ”字段的值,以指示一线工作人员预计何时到达现场。 如果您的组织不需要此字段,请在 表单 上将其隐藏,而不是删除它。

不要编辑选项集(选择项)值

编辑现成字段的选项集值可能会导致错误,尤其是当进程依赖于这些字段的值或在升级期间时。

要避免错误:

  • 仅编辑开箱即用字段的选项集 标签切勿 编辑这些字段的选项集
  • 不要删除任何选项集选择项。
  • 不要添加任何选项集选择项。

例如,默认情况下,Field Service 工作订单包含系统 状态 字段。 此字段是选项集( 选项类型),具有“ 未计划”、“ 已计划”、“进行 中”、“已完成 ”和“已取消” 等选项。 每个选项都有一个标签和一个关联的数值。 系统管理员可以编辑选项集的标签(例如 “未计划”),但永远无法编辑与标签关联的数值。

使用更少的自定义脚本并按照最佳实践操作

系统定制员编写脚本(通常是 JavaScript Web 资源)来运行业务逻辑。 但是,自定义脚本可能会在升级过程中导致性能问题、错误和复杂情况。

为避免这些问题:

  • 最大程度地减少在负载时运行的脚本数。
  • 不要编写调用大量数据的脚本,也不要编写调用相同数据的多个脚本。

以下各小节介绍最佳做法。 此外,请跟随使用 Dynamics 365 Customer Engagement 进行开发的最佳实践中的表单脚本最佳实践。

最大程度地减少网络请求数和在 OnLoad 事件中请求的数据量

在表单加载期间发出的网络请求越多,从这些请求中下载的数据越多,加载表单所需的时间就越多。 仅请求所需的最小数据量。 此外,请考虑尽可能缓存数据,以避免在将来的表单加载过程中不必要地请求数据。

避免使用同步网络请求

同步网络请求可能会导致页面加载缓慢和窗体无响应。 改用异步请求。 以下博客文章提供了更多示例: 通过从同步请求过渡来增强模型驱动应用的性能。 此外,在需要对同一实体和记录进行多个网络调用的任何情况下,请考虑使用“异步并等待”。 详细了解 async 和 await

避免包含不必要的 JavaScript Web 资源库

添加到表单中的脚本越多,下载它们所需的时间就越多。 通常,脚本在首次加载后会缓存在浏览器中。 然而,第一次查看表单时的表现往往会给人留下深刻的印象。

避免在 Onload 事件中加载所有脚本

如果您的代码仅 OnChange 支持列的事件或仅支持事件, OnSave 请确保使用这些事件的事件处理程序(而不是 OnLoad 事件)设置脚本库。 这样,可以延迟加载这些库,并且在加载表单时性能会提高。

使用折叠的选项卡来延迟 Web 资源的加载

如果选项卡处于折叠状态,则不会加载包含在可折叠选项卡上的各个部分中的 Web 资源或 iFrame 组件。 仅当选项卡展开时,才会加载它们。 当选项卡状态更改时,将发生该 TabStateChange 事件。 在折叠的选项卡上支持 Web 资源或 iFrame 所需的任何代码都可以使用事件处理程序来 TabStateChange 执行事件,并减少可能必须在事件中 OnLoad 发生的代码。

避免客户端代码中出现重复的网络请求

多个或重复的网络请求会导致 Web 浏览器停顿并影响窗体加载时间。 减少请求数可以提高性能。 另一种方法是合并网络请求并缓存请求的值。 此外,如前所述,请考虑异步网络请求。

如果 XRM API 中提供了相关信息,请避免使用角色和系统用户特定的调用

使用 XRM API 可避免网络请求获取用户权限信息。 详细了解如何从同步请求过渡。 此外,如果来自 XRM API 的信息满足您的要求,请避免系统用户调用。

设置默认可见性选项

在这种情况下 OnLoad ,请避免使用隐藏表单元素的表单脚本。 相反,对于可能隐藏的表单元素,请设置默认可见性选项,以便在加载表单时默认隐藏元素。 然后,在 OnLoad 事件中使用脚本来显示您希望可见的表单元素。

在以下资源中了解更多信息:

在脚本上运行解决方案检查器

Power Apps 解决方案检查器是 Microsoft 的一个有用工具,用于检查 Power Apps 解决方案的问题并推荐最佳实践。 这些问题包括 JavaScript、HTML、插件和自定义工作流活动的问题。

在以下资源中了解更多信息:

使用异步工作流而不是同步工作流

系统定制员通常会编写同步工作流,以实时执行在 Field Service 中更改数据时运行的业务逻辑。 但是,同步运行工作流会降低性能。 为避免性能问题,请改为异步运行工作流。

激活 Field Service 和资源计划的现成可用流程

Field Service 和 Resource Scheduling 包括许多执行必要业务逻辑的流程。 停用的流程可能会导致错误。 为避免出现问题,请确保所有 Field Service 和 Resource Scheduling 进程都处于活动状态。 若要确定进程是否处于停用状态,请定期 运行 Field Service Solution Health Hub

运行 Solution Health Hub 以检测问题

Solution Health Hub 可帮助您更好地了解环境的状态,并检测 Dynamics 365 环境的问题。 随着时间的推移,环境的配置可能会通过自然系统操作而改变。 Solution Health Hub 在实例内运行规则以验证环境的配置。 某些规则特定于 Field Service,当您遇到问题时,您可以按需运行它们。 安装或更新 Field Service 时,会自动触发某些规则。

要监视 环境 的 health,请定期 运行 Solution Health Hub 规则集

移动应用性能注意事项

自定义移动应用程序可能会影响性能。 有关详细信息,请参阅 自定义移动应用时的性能注意事项。