自定义最佳实践

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

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

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

为避免性能问题:

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

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

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

自定义这些组件的组织可能不会立即遇到环境中的问题。 但是,Microsoft 发布到自定义现成组件的更改不会应用于这些组件的顶层。 特定的自定义层会替代所有将来的更改,这些替代最终会导致不可预知的错误和行为。

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

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

不要编辑窗体中的现成字段或将其从窗体中删除

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

要避免错误:

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

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

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

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

要避免错误:

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

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

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

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

为避免这些问题:

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

以下小节介绍最佳做法。 此外,请按照使用 Dynamics 365 Customer Engagement 进行开发的最佳做法中的窗体脚本最佳做法操作。

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

窗体加载过程中进行的网络请求数越多,以及从这些请求下载的数据越多,加载窗体所花费的时间就越长。 应只请求所需的最少数据量。 此外,考虑在可能的情况下缓存数据,以在将来窗体加载时避免不必要的数据请求。

避免使用同步网络请求

同步网络请求可能会导致页面加载缓慢和窗体无响应。 改用异步请求。 以下博客文章提供了更多示例:通过从同步请求转移来增强模型驱动应用。 此外,在需要对同一实体和记录进行多次网络调用的任何场景中,考虑使用“async and wait”。 了解有关 async and await 的更多信息

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

向窗体中添加的脚本越多,下载脚本所需的时间就越长。 通常,脚本在首次加载后会缓存在浏览器中。 但是,第一次查看窗体的感受通常会给人留下深刻的印象。

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

如果您有仅支持列的 OnSave 事件或 OnChange 事件的代码,请确保使用事件处理程序为这些事件(而不是 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 和资源计划包含很多执行必要业务逻辑的流程。 停用的流程可能会导致错误。 为避免出现问题,请确保所有 Field Service 和资源计划流程都处于可用状态。 要确定流程是否处于停用状态,定期运行 Field Service 解决方案运行状况中心

运行解决方案运行状况中心来检测问题

解决方案运行状况中心帮助您更好地了解环境的状态并检测 Dynamics 365 环境中的问题。 环境的配置可能会通过自然系统操作随时间发生改变。 解决方案运行状况中心在实例中运行规则,验证环境的配置。 部分规则特定于 Field Service,遇到问题时可以按需运行这些规则。 有些规则会在安装或更新 Field Service 时自动触发。

要监视您的环境的运行状况,定期运行解决方案运行状况中心规则集

移动应用性能注意事项

自定义移动应用会影响性能。 通过自定义移动应用时的性能注意事项了解详细信息。