解决方案概念

解决方案是在 Power Apps 和 Power Automate 中实现 ALM 的机制。 本文介绍以下关键解决方案概念:

  • 解决方案的两种类型
  • 解决方案组件
  • 解决方案的生命周期
  • 解决方案发布商
  • 解决方案和解决方案组件依赖关系

托管和非托管解决方案

解决方案是托管非托管的。

  • 非托管解决方案已开发。 在对应用程序进行更改时,非托管解决方案用于开发环境。 非托管解决方案可以导出为非托管解决方案或托管解决方案。 导出的非托管版本的解决方案应该签入到您的源代码管理系统中。 非托管解决方案应被视为您的 Microsoft Power Platform 资产的源。 删除非托管解决方案时,将仅删除其中包含的任何自定义项的解决方案容器。 所有非托管自定义项仍然有效,并属于默认解决方案。

  • 托管解决方案已部署。 托管解决方案被部署到不是该解决方案开发环境的任何环境中。 包括测试、UAT、SIT 和生产环境。 托管解决方案可以独立于环境中的其他托管解决方案进行维护。 作为 ALM 最佳实践,应通过将非托管解决方案导出为托管解决方案来生成托管解决方案,并将其视为生成工件。 此外:

    • 无法直接在托管解决方案中编辑组件。 若要编辑托管组件,首先将它们添加到非托管解决方案中。
      • 执行此操作时,将在非托管自定义项和托管解决方案间创建依赖关系。 存在依赖关系时,只有删除该依赖关系才能卸载托管解决方案。
    • 有些托管组件不能编辑。 若要验证组件是否可编辑,请查看托管属性
    • 您无法导出托管解决方案。
    • 删除(卸载)托管解决方案时,将删除其中包含的所有自定义项和扩展。

    重要提示

    • 无法将托管解决方案导入包含原始非托管解决方案的相同环境中。 要测试托管解决方案,需要一个单独的环境将其导入。
    • 删除托管解决方案时,以下数据将丢失:存储在托管解决方案自定义实体中的数据,以及存储其他实体上托管解决方案自定义特性中的数据(其他实体并非托管解决方案的一部分)。

开发者和开发人员使用非托管解决方案在开发环境中工作,然后将它们作为托管解决方案导入到其他下游环境—如测试。

将解决方案从开发环境分发到测试环境。

备注

当您在开发环境中进行自定义时,您正在非托管层工作。 然后,当您将非托管解决方案导出为托管解决方案以分发到另一个环境时,该托管解决方案将被导入到托管层的环境中。 详细信息:解决方案层

解决方案组件

组件代表您有可能自定义的某些事项。 可以包括在解决方案中的任何项目是组件。 要查看解决方案中包含的组件,请打开所需的解决方案。 这些组件包含在组件列表中。

解决方案中的组件。

备注

  • 解决方案的大小最大为 32 MB。
  • 无法直接在托管解决方案中编辑组件。

若要查看可添加到解决方案的组件类型的列表,请参阅 ComponentType 选项

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

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

解决方案生命周期

解决方案支持以下帮助支持应用程序生命周期流程的操作:

  • 创建创作和导出非托管解决方案。

  • 更新创建已部署到父托管解决方案的托管解决方案的更新。 您无法通过更新删除组件。

  • 升级将解决方案作为对现有托管解决方案的升级导入,这将删除未使用的组件并实现升级逻辑。 升级涉及将解决方案的所有修补程序汇总(合并)到解决方案的新版本中。 解决方案升级将删除已存在但不再包含在升级版本中的组件。 您可以选择立即升级或分阶段升级,以便可以在完成升级之前执行一些其他操作。

  • 修补程序修补程序仅包含父托管解决方案的更改,如添加或编辑组件和资产。 进行少量更新(类似于补丁)时使用修补程序。 导入修补程序后,它们将位于父解决方案之上的层。 您无法通过修补程序删除组件。

解决方案发布商

每个应用和其他解决方案组件(如您创建的实体或您创建的所有自定义)都属于解决方案。 因为每个解决方案都有发布商,所以您应该创建自己的发布商,而不要使用默认发布商。 您在创建解决方案时指定发布者。

备注

即使不使用自定义解决方案,您也是在称为 Common Data Service 默认解决方案默认解决方案的解决方案中工作。 详细信息:默认解决方案和 Common Data Service 默认解决方案

在其中创建组件的解决方案的发布者被视为该组件的负责人。 组件的负责人控制哪些因素更改解决方案的其他发布者,包括允许或限制组件进行创建。 可以在同一个发布商内将组件的所有权从一个解决方案转移给另一个解决方案,但是不能跨发布商转移。 为托管解决方案中的组件引入发布者后,将无法更改组件的发布者。 因此,最好定义单个发布者,以便您以后可以跨解决方案更改分层模型。

解决方案发布商指定应用程序是谁开发的。 因此,您应该创建一个有意义的解决方案发布商名称。

解决方案发布商前缀

解决方案发布商包括前缀。 发布商前缀是一个有助于避免命名冲突的机制。 这样,来自不同发布商的解决方案可以安装在几乎没有冲突的环境中。 例如,此处显示的 Contoso 解决方案包括解决方案发布商前缀 contoso

解决方案发布商前缀示例。

备注

更改解决方案发布商前缀时,您应该在创建任何新应用或元数据项之前执行此操作,因为在创建元数据项的名称后,就无法再进行更改。

详细信息:

解决方案依赖项

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

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

解决方案组件依赖项

解决方案组件代表您有可能自定义的某些事项。 解决方案中可以包含的任何内容都是解决方案组件,某些组件依赖于其他组件。 例如,网站字段和客户摘要报表都依赖于客户实体。 详细信息:解决方案组件的依赖关系跟踪

另请参阅

解决方案层
在 Power Platform 管理中心创建和管理环境