📅  最后修改于: 2020-11-20 06:05:56             🧑  作者: Mango
解决方案提供了一个打包,安装和卸载组件的框架,以匹配您的业务功能。解决方案允许定制者和开发者编写,打包和维护扩展CRM的软件单元。 CRM中执行的所有自定义,扩展或配置都使用解决方案进行打包,管理和分发。可以从源组织将解决方案作为zip文件导出,然后可以将其导入目标组织。
为了理解这一点,请考虑以下示例方案-
您作为开发人员或定制程序,已经在开发环境中扩展或定制了CRM。现在,您要打包所做的更改并将其移至下一个环境。为此,您可以创建单独的解决方案并将其发布在更高的环境中。
作为第三方CRM提供者,您已经创建了一个CRM模块,该模块允许使用外部Web服务API在Microsoft Dynamics CRM实体中管理数据。现在,您想将此模块出售给其他客户。使用解决方案,您可以打包此模块并将其分发给其他客户端,这些客户端将能够安装此解决方案并使用模块提供的功能。
该系统解决方案包含Microsoft Dynamics CRM中定义的即用型解决方案组件,无需任何自定义。系统解决方案中的许多组件都是可定制的,可以在托管解决方案或非托管定制中使用。
在本教程中,我们没有创建任何解决方案,而是在定制默认系统解决方案。如果您还记得的话,我们去了“设置”→“自定义”→“自定义系统”。此选项直接自定义默认解决方案。
托管解决方案是一种完整的解决方案,可以分发和安装。托管解决方案可以安装在系统解决方案或其他托管解决方案的顶部。
要点–
如果您从一个组织中导出托管解决方案并将其导入到另一个组织中,则无法在新组织中编辑该解决方案。
托管解决方案不直接引用系统解决方案。
卸载托管解决方案将卸载与该解决方案关联的所有自定义项。
默认情况下,无法在目标组织中自定义托管解决方案。但是,使用托管属性的概念,您可以定义解决方案组件是否可自定义,如果是,则一旦解决方案导出为托管解决方案,即可定义该组件的哪些特定部分。
非托管解决方案是仍在开发中且不打算分发的解决方案。非托管解决方案包含CRM组件的所有非托管定制,包括任何添加,修改,删除或删除的组件。默认情况下,任何新解决方案都是非托管解决方案。但是,您可以将非托管解决方案导出为托管或非托管解决方案。
要点–
如果从一个组织中导出非托管解决方案并将其导入到另一个组织中,则可以在新组织中编辑该解决方案。
非托管解决方案直接引用系统解决方案。因此,对一个非托管解决方案所做的更改将应用于引用相同组件的所有非托管解决方案,包括系统解决方案。
如果您从非托管解决方案中删除解决方案组件,则该组件将从系统中永久删除,并且将不再可用。如果您只想从特定的非托管解决方案中删除组件,请使用remove而不是delete。
卸载非托管解决方案不会删除关联的自定义项。它只是从系统中删除解决方案,但是您所做的更改仍然存在。
解决方案可用于打包以下组件,这些组件可使用默认,非托管或托管解决方案进行自定义。
Component Type | Component |
---|---|
Schema | Entities |
Attributes | |
Relationships | |
Global Option Sets | |
User Interface | Application Ribbon |
SiteMap | |
Forms | |
Entity Ribbons | |
Web Resources | |
Analytics | Dashboards |
Reports | |
Visualizations | |
Process/Code | Processes |
Dialogs | |
Workflows | |
Plugins | |
Assemblies | |
Processing Steps | |
Templates | Mail-merge |
Contract | |
Article | |
Security | Security Roles |
Field Level Security Profiles |
步骤1-导航到设置→解决方案。单击新建。
步骤2-在随后的窗口中,输入以下详细信息,然后单击“保存并关闭”。
显示名称-示例解决方案(可以是您想要的任何名称)。
名称-将根据显示名称自动设置。但是,您可以更改此设置。
发布者-默认发布者。解决方案发布者提供了通用的自定义前缀和选项值前缀。定义解决方案发布者控制分发后如何更新托管解决方案。但是,对于此示例和大多数常规情况,可以将其设置为“默认发布者”。
版本-使用以下格式指定版本:major.minor.build.revision。例如:1.0.0.0。
默认情况下,每个解决方案均作为非托管解决方案添加。添加解决方案后,您可以通过在此解决方案的上下文中创建解决方案组件或通过添加其他解决方案中的现有组件来添加解决方案组件。例如,您可以在此新解决方案的上下文中创建新的实体,表单等。
一旦将所有更改打包为托管或非托管解决方案,就可以按以下方式导出解决方案。
步骤1-打开源组织,然后导航到设置→解决方案。选择您要导出的解决方案,然后单击“导出”按钮。
步骤2-在“发布自定义”窗口中,单击“发布所有自定义”,然后单击“下一步”。
步骤3-在随后的窗口中,您可以选择与解决方案一起导出的任何系统设置,例如自动编号,日历设置等。现在,您可以避免选择任何选项,然后单击“下一步”。
步骤4-在“包类型”窗口中,您可以选择要将包导出为托管解决方案还是非托管解决方案。对于此示例,让我们将其导出为不受管。完成后,单击“下一步”。
步骤5-在下一个窗口中,您可以看到您正在使用的CRM的源版本,并且可以选择目标版本。单击导出。
步骤6-单击导出后,解决方案将被导出为一个zip文件。将此zip文件保存在系统上的所需位置。
现在,我们将在上一节中导出的解决方案zip文件导入一个新的目标组织。
步骤1-打开目标组织,然后导航到设置→解决方案。单击导入。
步骤2-浏览您从导出步骤下载的zip文件,然后单击Next 。
步骤3-在下一个窗口中,您可以根据需要查看解决方案包的详细信息。单击导入将启动解决方案导入过程。
步骤4-一旦导入过程完成,它将显示成功或失败的状态。如果该过程成功,请单击“发布所有自定义”。如果解决方案导入失败,它将为您提供详细的错误日志,说明导入过程的哪一步失败。
步骤5-我们完成了。该解决方案将成功导入目标组织。单击关闭。
由于您可以有多个开发人员来定制和扩展CRM,因此您将拥有多个托管和非托管解决方案。导出和导入这些解决方案有时可能会导致冲突情况。例如,假设“解决方案A”在表单上包含一个字段,而“解决方案B”已删除该字段,而“解决方案C”已重命名了该字段。在这种情况下,最终的变化是什么?在这种冲突的情况下,CRM使用两种方法。
合并-此方法用于用户界面组件,例如命令栏,功能区和站点地图。按照这种方法,解决方案组件将从底部重新计算,并且组织的非托管自定义项是最后一次应用的。
最高奖项-此方法用于用户界面组件以外的所有其他冲突情况。按照这种方法,最后的更改(托管或非托管)都具有优先级并得到应用。
在本章中,我们介绍了解决方案的概念以及不同类型的解决方案及其组件。然后,我们学习了如何创建,导出和导入解决方案。最后,我们研究了两种冲突解决策略,这是在我们有多个托管和非托管解决方案影响相同解决方案组件时发生的。