使用托管属性
可以使用托管属性来控制哪些托管解决方案组件可自定义。 默认情况下,所有自定义解决方案组件都可自定义。 每个解决方案组件都有可以自定义 (IsCustomizable
) 属性。 只要此属性值设置为 true,就可以指定特定于解决方案组件类型的其他属性。 如果将 IsCustomizable.Value
属性设置为 false,则在将解决方案安装为托管解决方案后,解决方案组件将不可自定义。
托管属性确保只有来自同一发布者的解决方案可以更改组件。 托管属性只会影响托管组件,不会在组件仍处于非托管状态的开发环境中强制这一点。 IsCustomized
托管属性的使用是要确保没有来自任何其他发布者的其他解决方案层,以及不能在组件安装为托管解决方案后在组件上进行进行活动自定义。
下表列出了可用解决方案组件子集的一些托管属性。
组件 | 显示名称 | 属性 |
---|---|---|
实体 | 可以自定义 | IsCustomizable.Value |
Entity | 可以修改显示名称 | IsRenameable.Value |
Entity | 可以是关系中的相关实体 | CanBeRelatedEntityInRelationship。Value (只读) |
Entity | 可以是关系中的主要实体 | CanBePrimaryEntityInRelationship。Value (只读) |
Entity | 可以具有多对多关系 | CanBeInManyToMany。Value (只读) |
Entity | 可以创建新窗体 | CanCreateForms.Value |
Entity | 可以创建新图表 | CanCreateCharts.Value |
Entity | 可以创建新视图 | CanCreateViews.Value |
Entity | 可以更改并非由托管属性表示的任何其他实体属性 | CanModifyAdditionalSettings.Value |
实体 | 可以创建属性 | CanCreateAttributes.Value |
字段(属性) | 可以自定义 | IsCustomizable.Value |
字段(属性) | 可以修改显示名称 | IsRenameable.Value |
字段(属性) | 可以更改需求级别 | RequiredLevel.CanBeChanged 注释: RequiredLevel 是唯一使用该 CanBeChanged 属性的托管属性。 |
字段(属性) | 可以更改并非由托管属性 (Property) 表示的任何其他特性 (Attribute) 属性 (Property) | CanModifyAdditionalSettings.Value |
实体关系 | 可以自定义 | IsCustomizable.Value |
窗体 | 可以自定义 | SystemForm.IsCustomizable.Value |
图表 | 可以自定义 | SavedQueryVisualization.IsCustomizable.Value |
查看 | 可以自定义 | SavedQuery.IsCustomizable.Value |
选项集 | 可以自定义 | IsCustomizable.Value |
Web 资源 | 可以自定义 | WebResource.IsCustomizable.Value |
Workflow | 可以自定义 | Workflow.IsCustomizable.Value |
Workflow | 是否允许其他发布者执行自定义处理步骤 | Workflow.IsCustomProcessingStepAllowedForOtherPublishers.Value |
程序集 | 可以自定义 | SdkMessageProcessingStep.IsCustomizable.Value |
程序集注册 | 可以自定义 | ServiceEndpoint.IsCustomizable.Value |
电子邮件模板 | 可以自定义 | Template.IsCustomizable.Value |
知识库文章模板 | 可以自定义 | KbArticleTemplate.IsCustomizable.Value |
合同模板 | 可以自定义 | ContractTemplate.IsCustomizable.Value |
邮件合并模板 | 可以自定义 | MailMergeTemplate.IsCustomizable.Value |
仪表板 | 可以自定义 | SystemForm.IsCustomizable.Value |
安全角色 | 可以自定义 | Role.IsCustomizable.Value |
系统窗体 | 可以删除 | CanBeDeleted 的Value |
系统查询 | 可以删除 | CanBeDeleted 的Value |
工作流是允许其他发布者执行的自定义处理步骤
此托管属性控制是否将运行由第三方为自定义流程操作创建的消息注册的插件步骤。 默认值为 false
,这意味着不使用相同解决方案发布者的注册插件步骤将无法运行。 当此设置为 true
时,自定义流程操作发布者允许运行注册的插件注册步骤。
更新托管属性
在发布托管解决方案后,您可能决定需要更改托管属性。 您只能更改托管属性以使其限制条件更为宽松。 例如,在初始发布后,可以决定允许自定义实体。
通过发布具有更改的托管属性的解决方案更新,可以更新解决方案的托管属性。 托管解决方案只能由其他托管解决方案更新,该托管解决方案和原始托管解决方案与同一发布者记录相关联。 如果更新中包括托管属性更改(这些更改可使托管属性的限制条件更为严格),则会忽略这些托管属性更改,但会应用更新中的其他更改。
因为原始发布者是更新托管解决方案的托管属性的一项要求,所以任何非托管解决方案都不能与用于安装托管解决方案的发布者相关联。
备注
这意味着,您将无法使用安装了托管解决方案的组织为解决方案开发更新。
检查托管属性
使用 IsComponentCustomizableRequest 可以检查解决方案组件是否可自定义。 或者,您可以检查解决方案组件属性,但必须考虑含义的最终确定取决于多个属性的值。 每个解决方案组件均具有 IsCustomizable
属性。 在作为托管解决方案的一部分安装解决方案组件时,IsManaged
属性将为 true。 仅为托管解决方案强制实施托管属性。 在检查托管属性以确定单个解决方案组件是否可自定义时,必须同时检查 IsCustomizable
和 IsManaged
属性。 IsCustomizable
为 false 且 IsManaged
为 false 的解决方案组件可自定义。
除了 IsCustomizable
之外,实体和属性还具有其他托管属性。 如果 IsCustomizable
设置为 false,则不会更新这些托管属性。 这意味着,除了检查单个托管属性外,还必须检查 IsCustomizable
属性以确认是否强制实施了托管属性。