MSM 转出冲突 msm-rollout-conflicts
如果在Blueprint分支和从属Live Copy分支中都创建了具有相同页面名称的新页面,则可能会发生冲突。
转出时必须处理和解决此类冲突。
冲突处理 conflict-handling
当Blueprint和Live Copy分支中的页面存在冲突时,MSM允许您定义应如何(甚至是否)处理冲突。
为了确保转出不被阻止,可能的定义可以包括:
-
转出期间哪个页面(Blueprint或Live Copy)优先,
-
哪些页面被重命名(以及重命名的方式),
-
这会如何影响任何已发布的内容。
Adobe Experience Manager (AEM)(现成)的默认行为是发布的内容不受影响。 因此,如果在Live Copy分支中手动创建的页面已发布,则该内容在冲突处理和转出后仍会发布。
除了标准功能外,还可以添加自定义的冲突处理程序来实施其他规则。它们还允许将操作发布为单独的过程。
示例场景 example-scenario
在以下部分中,您必须使用在Blueprint和Live Copy分支(手动创建)中创建的新页面b
的示例来说明解决冲突的各种方法:
-
Blueprint:
/b
母版页;带有一个子页面bp-level-1。
-
Live Copy:
/b
在Live Copy分支中手动创建的页面;具有一个子页面
lc-level-1
。- 在发布时作为
/b
与子页面一起激活。
- 在发布时作为
转出前
转出管理器和冲突处理 rollout-manager-and-conflict-handling
转出管理器让您激活或停用冲突管理。
可使用 Day CQ WCM转出管理器 的OSGi配置完成此操作:
-
处理与手动创建的页面冲突:
(
rolloutmgr.conflicthandling.enabled
)如果转出管理器应处理Live Copy中创建的页面的名称与Blueprint中已存在的名称发生的冲突,则设置为true。
当冲突管理被停用时,AEM具有预定义的行为。
冲突处理程序 conflict-handlers
AEM使用冲突处理程序来解决在将内容从Blueprint转出到Live Copy时存在的任何页面冲突。 重命名页面是解决此类冲突的一种(常用)方法。 可以运行多个冲突处理程序以允许选择不同的行为。
AEM 提供:
默认冲突处理程序 default-conflict-handler
默认冲突处理程序:
-
名为
ResourceNameRolloutConflictHandler
-
对于此处理程序,Blueprint 页面将获得优先权。
-
此处理程序的服务排名设置得很低(即低于
service.ranking
属性的默认值),因为假设自定义处理程序需要更高的排名。 然而,排名并不是在必要时确保灵活性的绝对最低标准。
此处理程序为 Blueprint 页面提供优先权。Live Copy页面/b
已移动(在Live Copy分支中)到/b_msm_moved
。
-
Live Copy:
/b
已将(在Live Copy中)移动到
/b_msm_moved
。 这将充当备份,并确保不丢失任何内容。- 不会移动
lc-level-1
。
- 不会移动
-
Blueprint:
/b
转出到Live Copy页面
/b
。bp-level-1
转出到Live Copy。
转出后
自定义处理程序 customized-handlers
自定义冲突处理程序允许您实施自己的规则。 利用服务排名机制,您还可以定义它们如何与其他处理程序交互。
自定义的冲突处理程序可以具有以下内容:
-
根据您的要求命名。
-
根据您的要求开发/配置;例如,您可以开发一个处理程序,以便为Live Copy页面提供优先权。
-
设计为使用OSGi配置进行配置;特别是:
-
服务排名:
定义与其他冲突处理程序(
service.ranking
)相关的顺序。默认值为 0。
-
冲突处理停用时的行为 behavior-when-conflict-handling-deactivated
如果您手动停用冲突处理,则AEM不会对任何冲突页面执行任何操作(非冲突页面按预期转出)。
在这种情况下,Live Copy将获得优先权。 不会复制Blueprint页面/b
,并且Live Copy页面/b
保持不变。
-
Blueprint:
/b
根本不复制,而是忽略。
-
Live Copy:
/b
同样的。
服务排名 service-rankings
OSGi 服务排名可用于定义各个冲突处理程序的优先级。