如果在Blueprint分支和从属Live Copy分支中均创建了具有相同页面名称的新页面,则可能会发生冲突。
转出时需要处理和解决此类冲突。
当Blueprint和Live Copy分支中存在冲突的页面时,MSM允许您定义应如何(甚至是否)处理这些页面。
为了确保转出不被阻止,可能的定义可以包括:
转出期间哪个页面(Blueprint或Live Copy)优先,
哪些页面将进行重命名(以及重命名的方式),
这将如何影响任何已发布的内容。
AEM的默认行为(开箱即用)是发布的内容将不会受到影响。 因此,如果在Live Copy分支中手动创建的页面已发布,则仍将在冲突处理和转出后发布该内容。
除了标准功能外,还可以添加自定义的冲突处理程序来实施其他规则。它们还允许将操作发布为单独的过程。
在以下部分中,我们使用新页面的示例 b
,在Blueprint和Live Copy分支(手动创建)中创建,以说明解决冲突的各种方法:
Blueprint:/b
主控页面;带1个子页面,bp级别1。
live copy: /b
在Live Copy分支中手动创建的页面;带1个子页面, lc-level-1
.
/b
时与子页面一起激活.转出前
转出前的Blueprint | 转出前的Live Copy | 转出前发布 |
b (在Blueprint分支中创建,可供转出) |
b (在live copy分支中手动创建) |
b (包含在live copy分支中手动创建的页面b的内容) |
/bp-level-1 |
/lc-level-1 (在live copy分支中手动创建) |
/lc-level-1 (包含页面的内容 在live copy分支中手动创建的子级别1) |
转出管理器允许您激活或停用冲突管理。
可使用以下方式完成 OSGi配置 之 Day CQ WCM转出管理器:
处理与手动创建的页面的冲突:
( rolloutmgr.conflicthandling.enabled
)
如果转出管理器应处理Live Copy中创建的页面的名称与Blueprint中存在的名称之间的冲突,则设置为true。
AEM具有 已停用冲突管理时的预定义行为.
AEM使用冲突处理程序来解决在将内容从Blueprint转出到Live Copy时存在的任何页面冲突。 重命名页面是解决此类冲突的一种(常用)方法。 可以运行多个冲突处理程序以允许选择不同的行为。
AEM 提供:
默认冲突处理程序:
调用 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
转出到livecopy。转出后
转出后的Blueprint | 转出后的Live Copy |
转出后的Live Copy |
转出后发布 |
|
b |
b (具有已转出的Blueprint页面b的内容) |
b_msm_moved (具有在live copy分支中手动创建的页面b的内容) |
b (无更改;包含在live copy分支中手动创建的原始页面b的内容,现在称为b_msm_moved) |
|
/bp-level-1 |
/bp-level-1 |
/lc-level-1 (无更改) |
|
/lc-level-1 (无更改) |
自定义冲突处理程序允许您实施自己的规则。利用服务排名机制,您还可以定义它们如何与其他处理程序交互。
自定义冲突处理程序可以:
根据您的要求进行命名。
根据您的要求开发/配置;例如,您可以开发一个处理程序,以便为Live Copy页面指定优先权。
可设计为使用 OSGi配置;特别是:
服务排名:
定义与其他冲突处理程序相关的顺序( service.ranking
)。
默认值为 0。
如果您手动 取消激活冲突处理 则AEM不会对任何冲突页面执行任何操作(非冲突页面按预期转出)。
AEM不会提供任何指示忽略冲突,因为必须明确配置此行为,因此假定它是必需的行为。
在这种情况下,Live Copy将获得优先权。 Blueprint页面 /b
不会复制且live copy页面不会复制 /b
保持不变。
Blueprint:/b
根本不复制,而是忽略。
live copy: /b
保持不变。
转出后的Blueprint | 转出后的Live Copy |
转出后发布 |
b |
b (无更改;具有在live copy分支中手动创建的页面b的内容) |
b (无更改;包含在live copy分支中手动创建的页面b的内容) |
/bp-level-1 |
/lc-level-1 (无更改) |
/lc-level-1 (无更改) |
OSGi 服务排名可用于定义各个冲突处理程序的优先级。