如果在Blueprint分支和相依即時副本分支中建立具有相同頁面名稱的新頁面,則可能會發生衝突。
這些衝突需要在推出時處理並解決。
當衝突頁面確實存在時(在Blueprint和即時副本分支中),MSM可讓您定義應如何處理(甚至是如果)這些頁面。
為確保轉出未遭封鎖,可能的定義可包括:
首次推出時,哪個頁面(藍圖或即時副本)會優先,
將重新命名哪些頁面(以及如何重新命名),
這會如何影響任何發佈的內容。
AEM(現成可用)的預設行為是發佈的內容不會受到影響。 因此,如果在即時副本分支中手動建立的頁面已發佈,該內容仍會在衝突處理和轉出後發佈。
除了標準功能外,還可新增自訂的衝突處理常式,以實作不同的規則。 這些動作也可以允許以個別程式進行發佈動作。
在以下幾節中,我們使用在Blueprint和即時副本分支(手動建立)中建立的新頁面b
的示例來說明各種衝突解決方法:
藍圖:/b
首頁;1頁,bp-level-1
即時副本:/b
在即時副本分支中手動建立的頁面;包含1個子頁面,lc-level-1
。
/b
和子頁面一起啟動。推出前
展開之前的藍圖 | 在轉存之前先使用拷貝 | 發佈之前先發佈 |
b (在Blueprint分支中建立,準備推出) |
b (在即時副本分支中手動建立) |
b (包含在即時副本分支中手動建立之頁面b的內容) |
/bp-level-1 |
/lc-level-1 (在即時副本分支中手動建立) |
/lc-level-1 (包含在即時副本分支中手動建立的page child-level-1的內容) |
轉出管理員可讓您啟用或停用衝突管理。
這是使用Day CQ WCM Pollout Manager的<a0/>OSGi配置完成的:
使用手動建立的頁面處理衝突:
(rolloutmgr.conflicthandling.enabled
)
如果轉出管理員應處理來自即時副本中建立且名稱存在於藍圖的頁面的衝突,則設為true。
當衝突管理已停用時,AEM具有預先定義的行為。
AEM使用衝突處理常式來解決將內容從Blueprint轉出至即時副本時存在的任何頁面衝突。 重新命名頁面是解決此類衝突的一種(通常)方法。 可以操作多個衝突處理程式以允許選擇不同的行為。
AEM提供:
預設衝突處理程式:
稱為ResourceNameRolloutConflictHandler
使用此處理常式時,Blueprint頁面會優先。
此處理常式的服務排名設定為低(即在service.ranking
屬性的預設值之下),因為自訂處理常式需要較高的排名。 不過,排名並非確保必要時靈活性的絕對最小值。
此衝突處理常式優先於Blueprint。 即時副本頁面/b
會移動(在即時副本分支內)至/b_msm_moved
。
即時副本:/b
移至(在即時副本內)/b_msm_moved
。 這可當成備份,並確保不會遺失任何內容。
lc-level-1
未移動。藍圖:/b
已推出至即時副本頁面/b
。
bp-level-1
會推出至livecopy。推出後
推出後的藍圖 | 轉出後即可使用拷貝 |
轉出後即可使用拷貝 |
推出後發佈 |
|
b |
b (已推出藍圖頁面b的內容) |
b_msm_moved (具有在即時副本分支中手動建立的頁b的內容) |
b (無變動);包含在即時副本分支中手動建立的原始頁面b的內容,現在稱為b_msm_moved) |
|
/bp-level-1 |
/bp-level-1 |
/lc-level-1 (無變更) |
|
/lc-level-1 (無變更) |
自訂的衝突處理常式可讓您實作自己的規則。 使用服務排名機制,您也可以定義它們與其他處理常式的互動方式。
自訂的衝突處理常式可以:
請根據您的需求命名。 "
根據您的需求進行開發/設定;例如,您可以開發處理常式,讓即時副本頁面優先。
可設計為使用OSGi configuration進行配置;特別是:
服務排名:
定義與其他衝突處理程式(service.ranking
)相關的順序。
預設值為0。
如果您手動停用衝突處理,AEM不會對任何衝突頁面採取任何動作(非衝突頁面會如預期般推出)。
AEM不會指出衝突正被忽略,因為必須明確設定此行為,因此會假設這是必要行為。
在這種情況下,有效優先於即時副本。 Blueprint頁面/b
不會被複製,而即時副本頁面/b
則不受影響。
藍圖:/b
完全不複製,但會被忽略。
即時副本:/b
保持不變。
推出後的藍圖 | 轉出後即可使用拷貝 |
推出後發佈 |
b |
b (無變動);具有在即時副本分支中手動建立的頁面b的內容) |
b (無變動);包含在即時副本分支中手動建立之頁面b的內容) |
/bp-level-1 |
/lc-level-1 (無變更) |
/lc-level-1 (無變更) |
OSGi服務排名可用於定義單個衝突處理程式的優先順序。