Ausschließen von Experience Fragments aus der Seitenveröffentlichung in benutzerdefinierten AEM-Workflows
In diesem Artikel wird erläutert, wie Sie einen benutzerdefinierten Adobe Experience Manager (AEM)-Workflow aktualisieren können, damit Experience Fragments nicht Seite an Seite veröffentlicht werden. So können Experience Fragments nach einem separaten Zeitplan verwaltet und veröffentlicht werden.
Beschreibung description
Umgebung
- AEM Sites-Instanz mit einem benutzerdefinierten Seitenveröffentlichungs-Workflow
- Benutzerdefinierter Workflow erfasst Verweise und sendet Seiten- und Referenzpfade für die Replikation
Problem/Symptome
- Der benutzerdefinierte Workflow verwendet
ReferenceProvider.findReferences(), um alle referenzierten Inhalte zu sammeln und dann die Seite und ihre Verweise mithilfe vonReplicator.replicate().zu veröffentlichen - Referenzierte Experience Fragments werden mit der Seite veröffentlicht, auch wenn Autoren diese Fragmente in einem separaten Zeitplan verwalten und veröffentlichen.
- Mit dem standardmäßigen Fluss Veröffentlichung verwalten können Autoren die Auswahl von Verweisen aufheben. Der benutzerdefinierte Workflow stellt diese Option nicht bereit, es sei denn, der Workflow implementiert sie.
- Der benutzerdefinierte Workflow benötigt eine deterministische Regel, um Experience Fragment-Verweise auszuschließen, bevor er Pfade zur Replikation übermittelt.
Ursache
Der benutzerdefinierte Workflow enthält Experience Fragment-Pfade in der Liste, die er zur Replikation übermittelt. Da der Workflow diese Pfade nicht filtert, werden die referenzierten Experience Fragments mit der Seite veröffentlicht. Der standardmäßige Fluss Veröffentlichung verwalten verfügt über eine Referenzauswahl-Steuerung, aber ein benutzerdefinierter Workflow muss eine eigene Filter- oder Auswahllogik implementieren.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben.
-
Aktualisieren Sie Ihre benutzerdefinierte
WorkflowProcess-Implementierung, um Experience Fragment-Verweise auszuschließen, bevor SieReplicator.replicate()aufrufen. -
Nachdem Sie Verweise über
ReferenceProvider.findReferences()abgerufen haben, identifizieren Sie alle Verweise, die auf Experience Fragments verweisen. Experience Fragments werden normalerweise unter dem/content/experience-fragmentsgespeichert. -
Filtern Sie Experience Fragment-Pfade heraus, bevor Sie die erfassten Verweise replizieren. Das folgende Beispiel zeigt einen Ansatz:
code language-none // Collect references List<Reference> references = referenceProvider.findReferences(resourceResolver, pagePath, ...); // Filter out Experience Fragments List<String> pathsToReplicate = references.stream() .map(Reference::getTargetPath) .filter(path -> !path.startsWith("/content/experience-fragments")) .collect(Collectors.toList()); // Add the page path itself pathsToReplicate.add(pagePath); // Replicate only the filtered paths for (String path : pathsToReplicate) { replicator.replicate( session, ReplicationActionType.ACTIVATE, path ); } -
Wenn eine zusätzliche Validierung erforderlich ist, lösen Sie jedes Verweisziel auf und stellen Sie sicher, dass es ein Experience Fragment ist, indem Sie seinen Ressourcentyp überprüfen oder die in Ihrer AEM-Version verfügbare Experience Fragment-API verwenden.
-
Stellen Sie den aktualisierten Workflow bereit und veröffentlichen Sie eine Testseite.
-
Vergewissern Sie sich, dass die Seite erfolgreich veröffentlicht wurde und dass referenzierte Experience Fragments nicht repliziert werden, es sei denn, sie werden separat veröffentlicht.