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 von Replicator.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.

  1. Aktualisieren Sie Ihre benutzerdefinierte WorkflowProcess-Implementierung, um Experience Fragment-Verweise auszuschließen, bevor Sie Replicator.replicate() aufrufen.

  2. 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-fragments gespeichert.

  3. 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
        );
    }
    
  4. 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.

  5. Stellen Sie den aktualisierten Workflow bereit und veröffentlichen Sie eine Testseite.

  6. 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.

recommendation-more-help
experience-cloud-kcs-help-kbarticles