解决方案提供了一个框架,用于打包,安装和卸载组件以匹配您的业务功能.解决方案允许定制器和开发人员编写,打包和维护扩展CRM的软件单元.使用解决方案打包,管理和分发在CRM中执行的任何自定义,扩展或配置.解决方案可以从源组织导出为zip文件,然后可以在目标组织中导入.
为了解这一点,请考虑以下示例场景 :
作为开发人员或定制工具,您在开发环境中扩展或定制了CRM.现在,您要打包更改并将其移至下一个环境.为此,您可以创建单独的解决方案并在更高的环境中发布.
作为第三方CRM提供商,您创建了一个CRM模块,它允许使用外部Web服务API管理Microsoft Dynamics CRM实体中的数据.现在,您想将此模块出售给其他客户.使用解决方案,您可以打包此模块并将其分发给能够安装此解决方案并使用模块提供的功能的其他客户.
解决方案类型
默认系统解决方案
系统解决方案包含Microsoft Dynamics中定义的开箱即用解决方案组件没有任何自定义的CRM.系统解决方案中的许多组件都是可自定义的,可以在托管解决方案或非托管自定义中使用.
在本教程中,我们没有创建任何解决方案,而是自定义默认系统解决方案.如果你还记得,我们去了Settings → 定制 → 自定义系统.此选项直接自定义默认解决方案.
托管解决方案
托管解决方案是一个已完成并打算分发和安装的解决方案.托管解决方案可以安装在系统解决方案或其他托管解决方案的顶部.
重点 :
如果从一个组织导出托管解决方案并将其导入另一个组织,则无法在新组织中编辑该解决方案.
托管解决方案不直接引用系统解决方案.
卸载托管解决方案会卸载与该系统相关联的所有自定义项解决方案.
默认情况下,无法在目标组织中自定义托管解决方案.但是,使用托管属性的概念,您可以定义解决方案组件是否可以自定义,如果是,则在将解决方案导出为托管解决方案后,可以自定义组件的哪些特定部分.
非托管解决方案
非托管解决方案是一种仍处于开发阶段且无意分发的解决方案.非托管解决方案包含CRM组件的所有非托管自定义,包括任何添加,修改,删除或删除的组件.默认情况下,任何新解决方案都是非托管解决方案.但是,您可以将非托管解决方案导出为托管或非托管解决方案.
重要点 :
如果从一个组织导出非托管解决方案并将其导入另一个组织,则可以在新组织中编辑解决方案.
非托管解决方案直接引用系统解决方案.因此,对一个非托管解决方案所做的更改将应用于引用相同组件的所有非托管解决方案,包括系统解决方案.
如果删除了来自非托管解决方案的解决方案组件,该组件将从系统中永久删除,并且将不再可用.如果您只想从特定的非托管解决方案中删除该组件,请使用remove而不是delete.
卸载非托管解决方案不会删除关联的自定义项.它只是从系统中删除了解决方案,但您所做的更改仍然存在.
解决方案组件
可以使用解决方案打包以下组件,这些组件可以使用默认,非托管或托管解决方案进行自定义.
组件类型 | 组件 |
---|---|
架构 | 实体 |
属性 | |
关系 | |
全球期权套餐 | |
用户界面 | 应用程序功能区 |
SiteMap | |
表格 | |
实体肋骨bons | |
网络资源 | |
Analytics | Dashboards |
报告 | |
可视化 | |
流程/代码 | 进程 |
对话框 | |
工作流程 | |
插件 | |
装配 | |
处理步骤 | |
模板 | 邮件合并 |
电子邮件 | |
合约 | |
文章 | |
Secur ity | 安全角色 |
字段级安全配置文件 |
创建解决方案
第1步 : 导航到Settings → 解决方案.单击"新建".
步骤2 : 在随后的窗口中,输入以下详细信息,然后单击"保存并关闭".
显示名称 : 样本解决方案(可以是您想要的任何名称).
名称 : 将根据显示名称自动设置.但是,您可以更改此内容.
发布商 : 默认发布者.解决方案发布者提供常见的自定义前缀和选项值前缀.定义解决方案发布者可控制托管解决方案在分发后的更新方式.但是,对于此示例以及大多数一般情况,您可以将其设置为默认发布者.
版本 : 指定具有以下格式的版本:major.minor.build.revision.例如:1.0.0.0.
默认情况下,每个解决方案都作为非托管解决方案添加.添加解决方案后,您可以通过在此解决方案的上下文中创建解决方案组件或添加其他解决方案中的现有组件来添加解决方案组件.例如,您可以在此新解决方案的上下文中创建新实体,表单等.
导出解决方案
一旦拥有所有如果您希望打包为托管或非托管解决方案,您可以按如下方式导出解决方案.
步骤1 : 打开源组织并导航到Settings → 解决方案.选择要导出的解决方案,然后单击"导出"按钮.
第2步 : 在"发布自定义项"窗口中,单击"发布所有自定义项",然后单击"下一步".
第3步 : 在随后的窗口中,您可以选择选择任何系统设置,例如自动编号,日历设置等,以便与解决方案一起导出.目前,您可以避免选择任何选项,然后单击下一步.
第4步 : 在"包类型"窗口中,您可以选择是将包导出为托管或非托管解决方案.对于此示例,让我们将其导出为非托管.完成后,单击"下一步".
第5步 : 在下一个窗口中,您可以看到正在使用的CRM的源版本,并可以选择目标版本.单击"导出".
步骤6 : 单击"导出"后,解决方案将作为zip文件导出.将此zip文件保存在系统上的所需位置.
导入解决方案
现在,我们将导入上一节中导出的解决方案zip文件到新的目标组织.
第1步 : 打开目标组织并导航到Settings → 解决方案.单击"导入".
步骤2 : 浏览从导出步骤下载的zip文件,然后单击下一步.
步骤3 : 在下一个窗口中,您可以根据需要查看解决方案包详细信息.单击"导入"将启动解决方案导入过程.
第4步 : 导入过程完成后,将显示成功或失败的状态.如果该过程成功,请单击"发布所有自定义".如果解决方案导入失败,它将为您提供导入过程中哪一步失败的详细错误日志.
步骤5 : 我们完成了.该解决方案将成功导入目标组织.单击"关闭".
冲突解决方案
由于您可以让多个开发人员致力于自定义和扩展CRM,因此您将拥有多个托管和非托管解决方案.导出和导入这些解决方案有时会导致冲突情况.例如,假设"解决方案A"包含表单上的字段,而"解决方案B"已删除该字段,并且"解决方案C"已重命名该字段.在这种情况下,最终的变化是什么?在这种相互冲突的情况下,CRM使用两种方法.
合并 : 此方法用于用户界面组件,例如命令栏,功能区和站点地图.根据这种方法,解决方案组件从底部重新计算,组织的非托管自定义是最后一次应用.
Top Wins : 此方法用于除用户界面组件之外的所有其他冲突方案.根据这种方法,最后一次更改(托管或非托管)获取优先级并获得应用.
结论
在本章中,我们介绍了解决方案的概念和不同类型的解决方案及其组件.然后,我们学习了如何创建,导出和导入解决方案.最后,我们研究了两种冲突解决策略,当我们有多个托管和非托管解决方案影响相同的解决方案组件时,就会发生这种策略.