複製 replication

Adobe Experience Manager as a Cloud Service使用Sling內容發佈功能將內容移動至復寫至AEM執行階段以外的Adobe Developer上執行的管道服務。

NOTE
閱讀發佈以取得詳細資訊。

發佈內容的方法 methods-of-publishing-content

NOTE
如果您想要大量發佈內容,請使用Publish內容樹工作流程
此工作流程步驟是專為Cloud Service建置的,可有效處理大型負載。
不建議建置您自己的大量發佈自訂程式碼。
如果您因任何原因必須自訂,則可使用現有的工作流程API來觸發此工作流程/工作流程步驟。
只發佈必須發佈的內容永遠是好的做法。 如果不需要的話,也請謹慎行事,不要嘗試發佈大量內容。 不過,您可以透過Publish內容樹工作流程傳送的內容數量沒有限制。

快速取消/Publish — 計畫取消/Publish publish-unpublish

此功能可讓您立即發佈所選頁面,無需透過「管理發布」方法選擇其他選項。

如需詳細資訊,請參閱管理出版物

開啟和關閉時間 — 觸發器設定 on-and-off-times-trigger-configuration

開啟時間 ​和​ 關閉時間 ​的其他可能性可從頁面屬性🔗的基本索引標籤取得。

若要實現此功能的自動復寫,請在OSGi設定 開啟關閉觸發程式設定 ​中啟用​ 自動復寫

OSGi開啟關閉觸發器組態

管理發佈 manage-publication

管理發布提供的選項比快速Publish更多,允許包含子頁面、自訂引用,以及啟動任何適用的工作流程,並提供稍後發佈的選項。

針對「稍後發佈」選項包含資料夾的子項時,會叫用Publish內容樹工作流程,如本文所述。

您可以在出版基礎檔案中找到有關管理出版的詳細資訊。

發佈內容樹狀工作流程 publish-content-tree-workflow

您可以選擇​ 工具 — 工作流程 — 模型 ​並複製​ Publish內容樹狀結構 ​現成的工作流程模型,以觸發樹狀結構復寫,如下所示:

Publish內容樹狀工作流程卡

請勿叫用原始模型。 相反,請務必先複製模型並叫用該副本。

如同所有工作流程,您也可以透過API叫用。 如需詳細資訊,請參閱以程式設計方式與工作流程互動

或者,您可以建立使用Publish Content Tree處理步驟的工作流程模型:

  1. 從AEM as a Cloud Service首頁,移至​ 工具 — 工作流程 — 模型

  2. 在「工作流程模型」頁面中,按畫面右上角的​ 建立

  3. 新增標題和名稱至您的模型。 如需詳細資訊,請參閱建立工作流程模型

  4. 從清單中選取建立的模型,然後按​ 編輯

  5. 在下列視窗中,將「處理步驟」拖放至目前的模型流程:

    處理步驟

  6. 在流程中選取「處理」步驟,並按扳手圖示選取​ 設定

  7. 選取「處理序」標籤,並從下拉式清單中選取「Publish Content Tree」,然後核取「處理常式進階」核取方塊

    樹狀結構啟動

  8. 在​ 引數 ​欄位中設定任何其他引數。 多個以逗號分隔的引數可串連在一起。 例如:

    enableVersion=true,agentId=publish,includeChildren=true

    note note
    NOTE
    如需引數清單,請參閱下方的​ 引數 ​區段。
  9. 按下​ 完成 ​以儲存工作流程模型。

引數

  • includeChildren (布林值,預設: false)。 值false表示僅發佈路徑;true表示也發佈子項。

  • replicateAsParticipant (布林值,預設: false)。 如果設定為true,則復寫使用執行參與者步驟的主體userid

  • enableVersion (布林值,預設: false)。 此引數會決定複製時是否建立新版本。

  • agentId (字串值,預設值表示僅使用發佈代理程式)。 建議您清楚說明agentId,例如設定值: publish。 正在將代理程式設定為preview發佈到預覽服務。

  • filters (字串值,預設值代表所有路徑都已啟動)。 可用的值包括:

    • onlyActivated — 僅啟動已(已)啟動的頁面。 作為重新啟用的一種形式。
    • onlyModified — 僅啟動已啟動且修改日期晚於啟動日期的路徑。
    • 以上可以用垂直號「|」進行「或」操作。 例如,onlyActivated|onlyModified

記錄

樹狀結構啟動工作流程步驟啟動時,會在「資訊」記錄層級記錄其設定引數。 啟動路徑時,也會記錄INFO陳述式。

在工作流程步驟已複製所有路徑之後,會記錄最終的INFO陳述式。

此外,您也可以將記錄器的記錄層級增加至com.day.cq.wcm.workflow.process.impl以下,以偵錯/TRACE,取得更多記錄資訊。

如果有錯誤,工作流程步驟會以WorkflowException結束,這會包裝基礎例外狀況。

以下是在範例發佈內容樹狀工作流程期間產生的記錄範例:

21.04.2021 19:14:55.566 [cm-p123-e456-aem-author-797aaaf-wkkqt] *INFO* [JobHandler: /var/workflow/instances/server60/2021-04-20/brian-tree-replication-test-2_1:/content/wknd/us/en/adventures] com.day.cq.wcm.workflow.process.impl.treeactivation.TreeActivationWorkflowProcess TreeActivation options: replicateAsParticipant=false(userid=workflow-process-service), agentId=publish, chunkSize=100, filter=, enableVersion=false
21.04.2021 19:14:58.541 [cm-p123-e456-aem-author-797aaaf-wkkqt] *INFO* [JobHandler: /var/workflow/instances/server60/2021-04-20/brian-tree-replication-test-2_1:/content/wknd/us/en/adventures] com.day.cq.wcm.workflow.process.impl.ChunkedReplicator closing chunkedReplication-VolatileWorkItem_node1_var_workflow_instances_server60_2021-04-20_brian-tree-replication-test-2_1, 17 paths replicated in 2971 ms

繼續支援

工作流程會以區塊處理內容,每個區塊代表要發佈的完整內容子集。 如果系統停止工作流程,則會重新啟動並處理尚未處理的區塊。 記錄陳述式指出內容已從特定路徑恢復。

復寫API replication-api

您可以使用AEM as a Cloud Service提供的復寫API發佈內容。

如需詳細資訊,請參閱API檔案

API的基本用法

@Reference
Replicator replicator;
@Reference
ReplicationStatusProvider replicationStatusProvider;

....
Session session = ...
// Activate a single page to all agents, which are active by default
replicator.replicate(session,ReplicationActionType.ACTIVATE,"/content/we-retail/en");
// Activate multiple pages (but try to limit it to approx 100 at max)
replicator.replicate(session,ReplicationActionType.ACTIVATE, new String[]{"/content/we-retail/en","/content/we-retail/de"});

// ways to get the replication status
Resource enResource = resourceResolver.getResource("/content/we-retail/en");
Resource deResource = resourceResolver.getResource("/content/we-retail/de");
ReplicationStatus enStatus = enResource.adaptTo(ReplicationStatus.class);
// if you need to get the status for more more than 1 resource at once, this approach is more performant
Map<String,ReplicationStatus> allStatus = replicationStatusProvider.getBatchReplicationStatus(enResource,deResource);

使用特定代理程式復寫

如上例所示,複製資源時,只會使用預設為作用中的代理程式。 在AEM as a Cloud Service中,這僅表示稱為「發佈」的代理程式,其會將作者連線到發佈層級。

為了支援預覽功能,已新增名為「預覽」的新代理程式,預設為不啟用。 此代理程式用於將作者連線到預覽層。 如果您只想透過預覽代理程式復寫,您必須透過AgentFilter明確選取此預覽代理程式。

請參閱下列範例:

private static final String PREVIEW_AGENT = "preview";

ReplicationStatus beforeStatus = enResource.adaptTo(ReplicationStatus.class); // beforeStatus.isActivated == false

ReplicationOptions options = new ReplicationOptions();
options.setFilter(new AgentFilter() {
  @Override
  public boolean isIncluded (Agent agent) {
    return agent.getId().equals(PREVIEW_AGENT);
  }
});
// will replicate only to preview
replicator.replicate(session,ReplicationActionType.ACTIVATE,"/content/we-retail/en", options);

ReplicationStatus afterStatus = enResource.adaptTo(ReplicationStatus.class); // afterStatus.isActivated == false
ReplicationStatus previewStatus = afterStatus.getStatusForAgent(PREVIEW_AGENT); // previewStatus.isActivated == true

如果您未提供這類篩選器,且只使用「發佈」代理程式,則不會使用「預覽」代理程式,且復寫動作不會影響預覽階層。

只有當復寫動作包含至少一個預設為作用中的代理程式時,才會修改資源的整體ReplicationStatus。 在上述範例中,此流程並非真實情況。 復寫只是使用「預覽」代理程式。 因此,您必須使用新的getStatusForAgent()方法,允許查詢特定代理程式的狀態。 此方法也適用於「發佈」代理。 如果已使用提供的代理程式完成任何復寫動作,則會傳回非null值。

讓內容失效的方法 invalidating-content

您可以使用作者的Sling內容失效(SCD) (偏好方法)或使用復寫API叫用發佈Dispatcher Flush復寫代理程式,直接讓內容失效。 如需詳細資訊,請參閱快取頁面。

復寫API容量限制

一次複製少於100個路徑,以500為限制。 超過限制,擲回ReplicationException
如果您的應用程式邏輯不需要原子式復寫,您可以將ReplicationOptions.setUseAtomicCalls設定為false,這會接受任何數量的路徑,但在內部建立儲存貯體以保持在此限制以下。

每個復寫呼叫所傳輸的內容大小不得超過10 MB。 此規則包含節點和屬性,但不包含任何二進位檔(工作流程套件和內容套件會視為二進位檔)。

疑難排解 troubleshooting

若要疑難排解復寫問題,請導覽至AEM作者服務Web UI中的復寫佇列:

  1. 從AEM開始功能表,瀏覽至​ 工具 > 部署 > 發佈

  2. 選取卡片​ 發佈

    狀態

  3. 檢查應為綠色的佇列狀態

  4. 您可以測試復寫服務的連線

  5. 選取​ 記錄檔 ​標籤,顯示內容發佈的歷史記錄

個記錄檔

如果內容無法發佈,則整個發佈將從AEM Publish Service還原。

在這種情況下,可編輯的主要佇列會顯示紅色狀態,應該加以檢閱以識別哪些專案導致取消發佈。 按一下該佇列,會顯示其暫止專案,如有需要,可從中清除單一專案或所有專案。

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab