Microsoft Dynamics CRM - 解决方案


解决方案提供了一个用于打包、安装和卸载组件的框架,以匹配您的业务功能。解决方案允许定制商和开发人员编写、打包和维护扩展 CRM 的软件单元。在 CRM 中执行的任何自定义、扩展或配置都使用解决方案进行打包、管理和分发。解决方案可以从源组织导出为 zip 文件,然后可以导入到目标组织中。

为了理解这一点,请考虑以下示例场景 -

  • 您作为开发人员或定制人员,已在开发环境中扩展或定制了 CRM。现在您想要打包更改并将其移动到下一个环境。为此,您可以创建单独的解决方案并将其发布到更高的环境中。

  • 作为第三方 CRM 提供商,您创建了一个 CRM 模块,该模块允许使用外部 Web 服务 API 管理 Microsoft Dynamics CRM 实体中的数据。现在,您想将此模块出售给其他客户。使用解决方案,您可以打包此模块并将其分发给其他能够安装此解决方案并使用您的模块提供的功能的客户端。

解决方案类型

默认系统解决方案

该系统解决方案包含 Microsoft Dynamics CRM 中定义的开箱即用的解决方案组件,无需任何自定义。系统解决方案中的许多组件都是可定制的,并且可以在托管解决方案或非托管定制中使用。

在本教程中,我们没有创建任何解决方案,而是自定义默认的系统解决方案。如果您还记得的话,我们转到“设置”→“自定义”→“自定义系统”。该选项直接自定义默认解决方案。

托管解决方案

托管解决方案是已完成且旨在分发和安装的解决方案。托管解决方案可以安装在系统解决方案或其他托管解决方案之上。

要点-

  • 如果您从一个组织导出托管解决方案并将其导入到另一个组织,则无法在新组织中编辑该解决方案。

  • 托管解决方案不直接引用系统解决方案。

  • 卸载托管解决方案会卸载与该解决方案关联的所有自定义项。

  • 默认情况下,无法在目标组织中自定义托管解决方案。但是,使用托管属性的概念,您可以定义解决方案组件是否可自定义,如果是,则在解决方案导出为托管解决方案后,组件的哪些特定部分将可自定义。

非托管解决方案

非托管解决方案是仍在开发中且不打算分发的解决方案。非托管解决方案包含 CRM 组件的所有非托管自定义,包括任何添加、修改、删除或删除的组件。默认情况下,任何新解决方案都是非托管解决方案。但是,您可以将非托管解决方案导出为托管或非托管解决方案。

要点-

  • 如果您从一个组织导出非托管解决方案并将其导入到另一个组织,则可以在新组织中编辑该解决方案。

  • 非托管解决方案直接引用系统解决方案。因此,对一个非托管解决方案所做的更改将应用​​于引用相同组件的所有非托管解决方案,包括系统解决方案。

  • 如果从非托管解决方案中删除解决方案组件,该组件将从系统中永久删除并且不再可用。如果您只想从特定的非托管解决方案中删除组件,请使用删除而不是删除。

  • 卸载非托管解决方案不会删除关联的自定义项。它只是从系统中删除解决方案,但您所做的更改仍然存在。

解决方案组件

解决方案可用于打包以下组件,这些组件可使用默认、非托管或托管解决方案进行自定义。

元件类型 成分
模式 实体
属性
人际关系
全局选项集
用户界面 应用功能区
网站地图
形式
实体丝带
网络资源
分析 仪表板
报告
可视化
流程/代码 流程
对话框
工作流程
插件
组件
加工步骤
模板 邮件合并
电子邮件
合同
文章
安全 安全角色
现场级安全配置文件

创建解决方案

步骤 1 - 导航至设置 → 解决方案。单击新建。

MSCRM 创建解决方案步骤 1

步骤 2 - 在随后的窗口中,输入以下详细信息,然后单击“保存并关闭”。

显示名称- 示例解决方案(这可以是您想要的任何名称)。

名称- 将根据显示名称自动设置。但是,您可以更改此设置。

发布者- 默认发布者。解决方案发布者提供通用的自定义前缀和选项值前缀。定义解决方案发布者可控制托管解决方案在分发后的更新方式。但是,对于本示例以及大多数一般情况,您可以将其设置为默认发布者。

版本- 使用以下格式指定版本:major.minor.build.revision。例如:1.0.0.0。

MSCRM 创建解决方案第 2 步

默认情况下,每个解决方案都会添加为非托管解决方案。添加解决方案后,您可以通过在此解决方案的上下文中创建解决方案组件或添加其他解决方案中的现有组件来添加解决方案组件。例如,您可以在此新解决方案的上下文中创建新实体、表单等。

导出解决方案

完成所有想要打包为托管或非托管解决方案的更改后,您可以按如下方式导出解决方案。

步骤 1 - 打开源组织并导航到设置 → 解决方案。选择要导出的解决方案,然后单击“导出”按钮。

MSCRM 导出解决方案步骤 1

步骤 2 - 在“发布自定义”窗口中,单击“发布所有自定义”,然后单击“下一步”。

MSCRM 导出解决方案步骤 2

步骤 3 - 在接下来的窗口中,您可以选择要随解决方案导出的任何系统设置,例如自动编号、日历设置等。现在,您可以避免选择任何选项并单击“下一步”。

MSCRM 导出解决方案步骤 3

步骤 4 - 在“包类型”窗口中,您可以选择是否要将包导出为托管或非托管解决方案。对于此示例,让我们将其导出为非托管。完成后,单击“下一步”。

MSCRM 导出解决方案第 4 步

步骤 5 - 在下一个窗口中,您可以看到您正在使用的 CRM 源版本,并可以选择目标版本。单击导出。

MSCRM 导出解决方案步骤 5

步骤 6 - 单击“导出”后,解决方案将导出为 zip 文件。将此 zip 文件保存在系统上的所需位置。

MSCRM 导出解决方案第 6 步

导入解决方案

现在,我们将在上一节中导出的解决方案 zip 文件导入到新的目标组织。

步骤 1 - 打开目标组织并导航到设置 → 解决方案。单击“导入”。

MSCRM导入解决方案步骤1

步骤 2 - 浏览您从导出步骤下载的 zip 文件,然后单击“下一步”

MSCRM 导入解决方案步骤 2

步骤 3 - 如果需要,您可以在下一个窗口中查看解决方案包详细信息。单击“导入”将启动解决方案导入过程。

MSCRM 导入解决方案步骤 3

步骤 4 - 导入过程完成后,它将显示成功或失败的状态。如果该过程成功,请单击“发布所有自定义”。如果解决方案导入失败,它将为您提供详细的错误日志,说明导入过程的哪一步失败。

MSCRM 导入解决方案步骤 4

第 5 步- 我们完成了。解决方案将成功导入到目标组织。单击“关闭”。

解决冲突

由于您可以让多个开发人员致力于自定义和扩展 CRM,因此您将拥有多个托管和非托管解决方案。导出和导入这些解决方案有时会导致冲突情况。例如,假设“解决方案 A”包含表单上的一个字段,而“解决方案 B”已删除该字段,而“解决方案 C”已重命名该字段。在这种情况下,最终的改变会是什么?在这种相互冲突的情况下,CRM 使用两种方法。

合并- 此方法用于用户界面组件,例如命令栏、功能区和站点地图。根据这种方法,解决方案组件从底部重新计算,并且组织的非托管自定义是最后应用的。

Top Wins - 此方法适用于除用户界面组件之外的所有其他冲突场景。根据此方法,最后的更改(托管或非托管)具有优先级并得到应用。

结论

在本章中,我们介绍了解决方案的概念以及不同类型的解决方案及其组件。然后我们学习了如何创建、导出和导入解决方案。最后,我们研究了两种冲突解决策略,当我们有多个托管和非托管解决方案影响相同的解决方案组件时,就会发生这种情况。