自定义概念

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

您的组织的工作方式是独一无二的。 有些组织有妥善定义的业务流程,他们使用 Microsoft Dynamics 365 来应用这些业务流程。 其他组织则对其当前的业务流程不满,并使用 Dynamics 365 将新的数据和流程应用于其业务。 不管您发现自己处于哪种情况,您都会发现 Dynamics 365 中的大量自定义功能,因此它可能适合您的组织。

当然,您急切地想开始,但请花几分钟时间阅读本部分的内容。 这部分将介绍一些重要的术语,提供有关以特定方式执行的一些背景信息,并帮助您在以后避免潜在问题。

本主题内容

什么是元数据,为什么要关注元数据?

支持哪几种自定义?

不支持哪几种自定义?

您需要了解的有关解决方案的信息

发布自定义项

影响 Dynamics CRM 组织性能的更改

组合自定义功能

本指南未包括的其他功能

什么是元数据,为什么要关注元数据?

过去,通过编辑源代码来自定义业务应用程序。 这造成了复杂化情况,因为每个组织的变化都是独特的,因此非常困难,或者升级成本极其高昂。 然后,应用程序开发人员开始公开应用程序编程接口 (API),以便其他开发人员可以与应用程序交互并添加他们自己的逻辑而无需触及源代码。 这种方法比较好,因为这意味着开发人员可以在不更改应用程序的情况下对其进行扩展。 但是,仍需要一位开发人员编写代码。

今天,最新的业务应用程序使用元数据驱动的体系结构,以便人们可以在不编写代码的情况下自定义应用程序。 元数据是指“关于数据的数据”,它定义数据系统中存储的数据的结构。 通过这种元数据,应用程序可以了解对数据结构的任何更改,并且可以让应用程序随数据结构更改进行调整。 因为元数据是已知的,因此可以包括与元数据关联的其他功能。

在应用程序中使用自定义工具自定义 Microsoft Dynamics 365 时,将添加或更新由依赖于元数据的功能使用的元数据或数据。 由于我们了解用于自定义系统的数据种类,我们可以考虑该数据并向 Dynamics 365 添加新功能而无需破坏系统。 因此,您应该始终可以应用更新汇总或升级到最新版本,享受最佳的新功能。

自定义还是配置?
大多数人认为他们需要自定义应用程序,因此我们使用“自定义”这个词来描述系统,使其按您需要的方式工作。 有些人喜欢使用“配置”这个词,因为它意味着不需要代码就能进行更改。 您可以按您的喜欢称呼它,我们只是想清楚地说明您不需要成为开发人员就能自定义 Microsoft Dynamics 365。

Microsoft Dynamics 365 提供了一组 Web 服务和 API 供开发人员编写代码。 使用支持的方法编写代码时,您可能会期望在组织升级时代码继续有效。

支持哪几种自定义?

我们期望您可以利用应用程序中的工具充分利用您的自定义项。 您使用这些工具所做的一切都得到 Microsoft 支持,因为它们对元数据或依赖于元数据的数据应用更改。

但是,如果自定义工具不符合您的需要,则可以安装第三方提供的解决方案,或聘用开发人员为您编写自定义代码。 不论通过哪种方式,都对您了解支持的自定义项有好处。 如果您需要投资需要代码的解决方案,则应确保仅使用受支持的 API 编写代码。 这可以帮助您保护您在 Dynamics 365 和您获得的所有解决方案上的投资。

扩展 Microsoft Dynamics 365 的开发人员有责任遵循 SDK 中记录的规则和最佳实践:MSDN: 使用 Microsoft Dynamics CRM 开发的最佳实践。 SDK 记录了开发人员可用的 API,并提供有关如何最好地使用它们的指导。Microsoft 仅支持 SDK 中记录的 API 和实践。 您可能在 Internet 上找到一些介绍如何解决问题的东西,但如果不利用 SDK 中记录的 API,则不受 Microsoft 支持。 在让开发人员应用更改之前,应验证其是否应使用支持的方法。

如果开发人员使用 SDK 中描述的 API 和最佳实践,则我们可以确定测试我们对 Dynamics 365 所做的任何更改是否有可能中断现有的自定义项。 我们的目的是:当发布新版本或更新 Dynamics 365 时,继续使用采用支持的方法编写的自定义代码。 因为您可以升级到功能改进后的新版本,不必每次都让管理员更改其代码,因此您也将受益。

如果我们检测到新版 Dynamics 365 中的某项更改将导致某个支持的自定义项损坏,我们将记录受影响的内容以及用户如何更改代码修复该问题。

不支持哪几种自定义?

由于某些 API 和编程实践不受 Microsoft 支持并不意味着它们不起作用。 “Microsoft 不支持”只是表示:无法从 Microsoft 那儿获得有关这些 API 或编程实践的支持。 我们不测试它们,我们不知道我们更改的某些事件是否会破坏它们。 我们无法预测如果用户更改我们应用程序的代码会发生什么。

使用不支持的 API 和编程实践的开发人员承担为其代码提供支持的责任。 他们需要测试其代码以确保其有效。

如果您选择在 Dynamics 365 部署中使用不支持的自定义项,则应确保记录所做的事情,并制定在与 Microsoft Dynamics 365 技术支持联系之前删除这些自定义项的策略。 如果需要有关不支持的自定义项的帮助,请联系准备自定义项的开发人员或组织。

常见的不支持自定义实践

下面列出了不受支持的常见自定义实践。 这不是一个完整列表。详细信息:MSDN:支持 Microsoft Dynamics CRM 的扩展:不支持的自定义

  • 使用 JavaScript 与 Web 应用程序文档对象模型 (DOM) 元素交互
    在应用程序中的任意位置使用的任何 JavaScript 库都必须仅与记录的 API 交互。JavaScript 开发人员在处理应用程序时,要频繁地访问使用特定名称的 DOM 元素。 由于 Microsoft Dynamics 365 是一种 Web 应用程序,因此这些技术有效,但他们可能会在更新过程中受损,因为它们引用的元素的名称会随时发生变化。 我们保留在应用程序中进行任何必要更改的权利,这通常是指更改页面的构建方式。 添加依赖于当前页面结构的任何更改都意味着将更新应用到应用程序时,需要测试并可能要更改这些脚本中的自定义代码。
jQuery 是 JavaScript 开发人员很常用的一个库。 使用 jQuery 的最大好处是它简化了开发人员访问和创建 DOM 元素的过程,这正是我们在 Dynamics 365 应用程序页面中不支持的功能。 当开发人员正在使用 HTML web 资源创建自定义用户界面时,建议使用 jQuery,但在 Dynamics 365 应用程序页面中,受支持的 API 不需要使用 jQuery。
  • 使用任何采用 JavaScript 的未记录内部对象或方法
    Microsoft Dynamics 365 使用页面中的许多 JavaScript 对象。JavaScript 开发人员可以通过调试页面来发现这些对象,然后访问并重复使用这些对象。 我们保留对这些对象进行任何必要的更改的权利,包括删除它们或者更改方法的名称。 如果某个脚本引用了这些对象,那么,如果未找到这些对象,该脚本将中断。

  • 在应用程序中直接更改文件
    如果您有 Microsoft Dynamics 365 内部部署,则可以访问在您的服务器上安装的 Web 应用程序。 该 Web 应用程序包含许多开发人员可以编辑或替换以更改应用程序的行为或外观的文本文件。 不支持更改这些文件,因为安装的任何更新可能会删除所做的更改,当更新到下一个版本时会覆盖文件。

  • 直接从数据库表检索数据
    如果您有 Microsoft Dynamics 365 内部部署,则可以访问数据库,从而可以直接从表检索数据。 但是,这样做将绕过安全基础结构。 建议的做法是使用特定筛选视图来检索数据。 这将应用发出呼叫的用户的安全设置,因此他们只能看到他们应该看到的数据。

  • 直接在数据库表中更新数据
    如果您有 Microsoft Dynamics 365 内部部署,则直接在数据库表中执行对 Dynamics 365 数据的更新。 此方法的风险在于您可能会设置可能破坏应用程序的无效数据。 开发人员应始终使用随应用程序平台 Web 服务提供的 API 来更新数据。

  • 更改数据库表、存储过程或视图
    如果您有 Microsoft Dynamics 365 内部部署,就可以使用数据库工具来更改数据库。 支持的唯一直接数据库更改是添加或更新索引。 应使用自定义工具添加任何新实体或实体属性。 这是唯一支持的将更改应用于这部分数据库的方式。 所做的任何直接更改都会有中断应用程序或破坏应用更新汇总能力的风险。 在应用更新时或者在升级过程中,可能会破坏您应用的任何更改,并且将丢失您可能包括在自定义数据库表中的任何数据。

如何检查组织是否有不受支持的自定义

如果您不确定您的组织是否有不受支持的自定义,则可以在运行自定义代码验证工具。 此工具是扫描组织的解决方案,可检测可能存在的特定类型的不受支持的自定义,例如弃用的 API,然后返回有关自定义的信息。 请注意,自定义代码验证工具可能无法检测 常见的不支持自定义实践 中之前介绍的其他不受支持的自定义,或在某些情况下可能将受支持的自定义检测为不受支持的自定义。 有关详细信息,请参阅工具附带的文档。

下载并运行自定义代码验证工具

  1. 首先,验证组织具有导入的一个或多个解决方案。 过期的解决方案是导致不受支持自定义的最常见原因。转到“设置”>“解决方案”。。 安装的解决方案将显示在”所有解决方案“视图中。

  2. 下载自定义代码验证工具

  3. 导入自定义代码验证工具。详细信息:导入解决方案

  4. 运行自定义代码验证工具。 有关详细信息,请参阅下载附带的自述文件。

您需要了解的有关解决方案的信息

因为存在解决方案,因此可以购买、共享或者通过其他方式在组织之间传输一组自定义项。 您可以从 Microsoft Dynamics 市场 中或者从独立软件供应商 (ISV) 处获取解决方案。Dynamics 365 解决方案是一个可以导入以应用一组自定义项的文件。

详细信息:白皮书:CRM Online 解决方案生成器的模式和原理

备注

如果您是创建要分发的自定义项的 ISV,则需要使用解决方案。 有关使用解决方案的详细信息,请参阅 MSDN:打包和分发扩展

如果您只对贵组织的自定义感兴趣,则以下是您需要了解的有关解决方案的信息:

  • 创建解决方案是可选的。 您可以直接自定义您的 Dynamics 365 系统,无需创建解决方案。

  • 当您直接自定义 Dynamics 365 系统时,会遇到使用一个名为默认解决方案的特殊解决方案。 此解决方案包含您系统中的所有组件。

  • 您可以导出您的默认解决方案来创建您在组织中定义的自定义项的备份。 这有益于防备出现最坏的情况。

解决方案组件

解决方案组件代表您有可能自定义的某些事项。 可以包括在解决方案中的任何东西就是一个解决方案组件。 以下是您可以在解决方案中查看的解决方案组件的列表:

  • 应用程序功能区

  • 文章模板

  • 业务规则

  • 图表

  • 连接角色

  • 合同模板

  • 仪表板

  • 电子邮件模板

  • 实体

  • 实体关系

  • 字段

  • 字段安全配置文件

  • 表单

  • 邮件合并模板

  • 消息

  • 选项集

  • 插件程序集

  • 进程

  • SDK 消息处理步骤

  • 安全角色

  • 服务端点

  • 站点地图

  • Web 资源

大多数解决方案组件嵌套在其他解决方案组件中。 例如,实体包含窗体、视图、图表、字段、实体关系、消息和业务规则。 其中的每个解决方案组件都需要存在一个实体。 字段不能存在于实体之外。 我们称之为字段依赖于实体。 实际的解决方案组件类型的数量是之前列表中所示的两倍,但其中大多数不在应用程序中显示。

拥有解决方案组件的目的是跟踪对我们可以使用 托管属性 以及所有 解决方案依赖项 自定义的内容的所有限制,从而可以将其导出、导入和(在托管解决方案中)删除,而不会有任何遗漏。

托管和非托管解决方案

在将托管解决方案导入后,可以将其卸载。 可以通过卸载解决方案来删除该解决方案的所有组件。

在导入非托管解决方案时,可以将该解决方案的所有组件添加到您的默认解决方案中。 无法通过卸载解决方案删除组件。

在导入包含您已经自定义的解决方案组件的非托管解决方案时,您的自定义项将被非托管解决方案中的自定义项覆盖。 此操作无法撤消。

重要

请仅在需要将所有组件添加到您的默认解决方案并覆盖所有现有的自定义项时,安装非托管解决方案。

即使您不打算分发您的解决方案,也可能需要创建并使用非托管解决方案,以便拥有一个仅包含您已经自定义的那部分应用程序的单独视图。 只要进行了自定义,就要将其添加到所创建的非托管解决方案。

您只能将默认解决方案导出为非托管解决方案。

在创建托管解决方案时,要在导出解决时选择托管解决方案选项。 如果您创建托管解决方案,则无法将其重新导入到用于创建该解决方案的同一个组织。 您只能将其导入到其他组织中。

如何应用解决方案

所有解决方案都作为层进行评估,以确定您的 Dynamics 365 应用程序实际要执行的内容。 下图展示了托管和非托管解决方案的评估方式,以及其中的更改在组织中的显示方式。

解决方案层

从底部开始向上

  • 系统解决方案
    系统解决方案就像每个组织都有的托管解决方案。 系统解决方案是系统中所有现成的组件的定义。

  • 托管解决方案
    托管解决方案可以修改系统解决方案组件,并可添加新组件。 如果安装了多个托管解决方案,则安装的第一个托管解决方案在后安装的托管解决方案下面。 也就是说,安装的第二个解决方案可以自定义之前安装的那个解决方案。 当两托管解决方案的定义有冲突时,一般规则是“后来者赢”。 如果卸载托管解决方案,则其下方的托管解决方案后生效。 如果卸载所有托管解决方案,则应用系统解决方案中定义的默认行为。

  • 非托管自定义项
    非托管自定义项是通过非托管解决方案对组织所做的任何更改。 系统解决方案定义您能或不能使用 托管属性 自定义的内容。 托管解决方案的发布商具有相同的能力,可以限制您对他们在其解决方案中添加的解决方案组件的自定义能力。 您可以自定义没有阻止您自定义它们的托管属性的任何解决方案组件。

  • 应用程序行为
    这是您可在组织中实际看到的内容。 默认系统解决方案以及托管解决方案,加上已经应用的任何非托管自定义项。

托管属性

无法自定义 Microsoft Dynamics 365 的某些部分。 系统解决方案中的这些项目具有阻止您自定义它们的元数据。 这此元数据称为托管属性。 托管解决方案的发布商还可以设置托管属性,从而阻止您通过他们不希望您采用的方式来自定义其解决方案。

解决方案依赖项

由于托管解决方案分层方式的原因,有些托管解决方案可能会依赖其他托管解决方案中的解决方案组件。 有些解决方案发布商会利用这一点来构建模块化的解决方案。 您可能需要先安装“基本”托管解决方案,然后再安装一具托管解决方案以进一步自定义基本托管解决方案中的组件。 第二个托管解决方案依赖于第一解决方案中的解决方案组件。

Dynamics 365 会跟踪解决方案之间的这些依赖关系。 如果您尝试安装的解决方案需要未安装的某个基本解决方案,则将无法安装该解决方案。 您将收到一条消息,指示该解决方案需要先安装另一个解决方案。 同样,由于依赖关系,当仍然安装了依赖于基本解决方案的解决方案时,将无法卸载基本解决方案。 您必须先卸载依赖的解决方案,然后才能卸载基本解决方案。

解决方案发布商

每个解决方案都有有一个发布商。 默认解决方案的发布商名称为“<贵组织的名称> 的默认发布商”。

发布商记录包含一个“前缀”值。 此前缀的默认值为“new”。 在创建新解决方案组件时,此前缀将附加到名称上。 这是让用户快速了解组件所属解决方案的一种方式。

在开始自定义系统之前,我们建议您将默认发布商的前缀值更改为可以标识您的公司的内容。

更改默认发布商的解决方案发布商前缀

  1. 转到“设置”>“自定义”。

  2. 选择“发布商”。

  3. 如果有多个发布商,请打开“显示名称”以“<贵组织的名称>”的“默认发布商”开头的发布商。

  4. 在窗体底部,将“前缀”字段,将默认值“New”更改为可标识您的公司的内容。

  5. 在更改该值时,确保用 Tab 键跳转到下一个字段。“选项值前缀”将根据自定义前缀自动生成一个编号。 在将选项添加到选项集时将使用此编号,并提供一个指示符,指示使用了那个解决方案来添加选项。

发布自定义项

有些对用户界面进行更改自定义项需要先发布,然后用户才能在应用程序中使用它们。 发布为您提供了一种在完成前保存工作的方式,可以以后回来完成工作。 仅当更改了解决方案组件时,才需要发布。 在创建或删除解决方案组件时,将自动发布。 在导出解决方案之前,系统会提示您发布自定义项。 这是因为任何未发布的自定义项不会包括在解决方案中。

在执行将出现在 适用于平板电脑的 Microsoft Dynamics CRM 中的自定义项时,应始终显式发布自定义项,以确保每个项目与 适用于平板电脑的 CRM 应用程序同步。

备注

发布自定义项会干扰常规系统运行。 在生产环境中,建议您安排在对用户干扰最小时发布自定义项。

以下解决方案组件要求在更新时发布:

  • 应用程序功能区

  • 实体

  • 实体关系

  • 字段

  • 窗体​​

  • 消息

  • 选项集

  • 站点地图

  • Web 资源​​

备注

当使用 Dynamics CRM App for Outlook 时,自定义更改至少需要一小时才能生效。 您可通过清除缓存让更改立即在 Internet Explorer 中显示。 为此,请转到“工具” > “Internet 选项”,然后在“浏览历史记录”下选择“删除”按钮。 取消选中除 “Internet 临时文件和网站文件”和 “Cookie 和网站数据”之外的所有浏览历史记录项,然后选择“删除”。

影响 Dynamics CRM 组织性能的更改

导入解决方案并应用更改元数据的自定义可能影响 Microsoft Dynamics 365 组织的性能。 可能干扰常规系统运行的操作包括:

如果您对生产系统应用这些更改,我们建议以对用户造成的干扰最少为宗旨,合理安排这些操作。

组合自定义功能

“自定义您的 CRM 系统”部分中的每个主题将较深入地介绍各个自定义功能。 但是,必须记住的是,满足您的业务要求的解决方案将经常要将某个功能怀一个或多个其他功能配合使用。

为作业选择适当的自定义功能

仪器法测规定“如果您手里有一把锤子,所有东西看上去都像钉子。” 使用 Microsoft Dynamics 365 中提供的所有不同自定义功能,可以很容易地熟悉其中一个功能,并寻求用它来解决所有问题。 在您您评估要解决业务问题时,应考虑您希望获得的最终结果,然后倒推如何实现。

本指南未包括的其他功能

除了“自定义您的 CRM 系统”部分中介绍的功能以外,您还应熟悉未在本指南中详细介绍的其他功能。 本部分会介绍其中的一功能,并提供可以找到更多信息的其他资源的链接。

文档管理

文档管理允许在 SharePoint 和 Microsoft Dynamics 365 之间进行集成。 有关如何启用和配置文档管理的信息,请参阅 用 SharePoint 管理您的文档帮助和培训:从 Microsoft Dynamics CRM 内部管理 SharePoint 文档。 开发人员应查看 Microsoft Dynamics 365 SDK 主题: MSDN:SharePoint 与 Microsoft Dynamics CRM 集成。 有关 Dynamics CRM 内部部署的安装要求的信息,请参阅Microsoft Dynamics CRM 的 SharePoint 文档管理软件要求

字段安全配置文件

您可以通过使用字段安全配置文件为添加到窗体中的自定义字段设置额外的一级别。 若要启用字段级安全性,必须设置自定义字段的“字段安全性”属性,然后将允许此字段拥有的权限指定给您创建的任何字段安全性配置文件。。详细信息:帮助和培训:创建字段安全性配置文件将团队或用户添加到字段安全性配置文件

本地化

如果您的组织中有人使用的语言不是您在部署 Dynamics CRM 时选择的基本语言,则可添加更多语言。

对于 CRM Online,您将发现所有语言都已安装,只需要启用它们。

对于 Microsoft Dynamics CRM 2015,可以安装其他语言包来添加更多语言。 在安装了语言包之后,必须启用语言使其可供用户在其个首选项中选择。详细信息:安装或升级 Microsoft Dynamics CRM 语言包

备注

启用语言可能需要几分钟的时间。 维护期间人们将不能使用 Microsoft Dynamics 365。

启用其他语言

  1. 转到“设置”>“管理”。

  2. 选择“语言”。

  3. 在“语言设置”对话框中,选择任何可用语言,然后选择“应用”启用该语言。

虽然您可以启用其他语言,但本地化文本仅可用于在自定义语言之前 Dynamics 365 中包括的文本。 只能使用基本语言来自定义 Dynamics 365。 除非您导出翻译,并为已经添加或更改的所有用户界面项目添加本地化文本,否则其他语言的用户将会看采用基本语言的文本。详细信息:帮助和培训:导出要翻译的自定义实体和字段文本

备注

因为只支持使用基本语言进行自定义,作为系统定制员,您可以使用设置为您的语言首选项的基本语言。 若要验证已翻译的文本是否已显示,必须更改 Microsoft Dynamics 365 用户界面的语言首选项。 若要执行其他自定义工作,必须将语言首选项重新更改为基本语言。

安全角色

有关为组织实施安全性的讨论超出了本指南的范围。详细信息:安全角色和特权

另请参阅

自定义入门
自定义所需的权限
将解决方案用于您的自定义项

© 2016 Microsoft Corporation。 保留所有权利。 版权