Escludere frammenti di esperienza dalla pubblicazione della pagina in flussi di lavoro AEM personalizzati

Questo articolo spiega come aggiornare un flusso di lavoro Adobe Experience Manager (AEM) personalizzato in modo che i frammenti di esperienza non vengano pubblicati insieme alle pagine, consentendo così di gestirli e pubblicarli in una pianificazione separata.

Descrizione description

Ambiente

  • Istanza di AEM Sites con un flusso di lavoro di pubblicazione di pagine personalizzato
  • Il flusso di lavoro personalizzato raccoglie riferimenti e invia percorsi di pagina e di riferimento per la replica

Problema/Sintomi

  • Il flusso di lavoro personalizzato utilizza ReferenceProvider.findReferences() per raccogliere tutto il contenuto a cui si fa riferimento e quindi pubblicare sia la pagina che i relativi riferimenti utilizzando Replicator.replicate().
  • I Frammenti esperienza di riferimento vengono pubblicati con la pagina, anche quando gli autori li gestiscono e li pubblicano in una pianificazione separata.
  • Il flusso standard Gestisci pubblicazione consente agli autori di deselezionare i riferimenti. Il flusso di lavoro personalizzato non fornisce tale opzione a meno che il flusso di lavoro non la implementi.
  • Il flusso di lavoro personalizzato richiede una regola deterministica per escludere i riferimenti a frammenti di esperienza prima di inviare i percorsi per la replica.

Causa

Il flusso di lavoro personalizzato include i percorsi dei frammenti esperienza nell’elenco che invia per la replica. Poiché il flusso di lavoro non filtra tali percorsi, i Frammenti esperienza di riferimento vengono pubblicati con la pagina. Il flusso standard Gestisci pubblicazione dispone di un controllo per la selezione dei riferimenti, ma un flusso di lavoro personalizzato deve implementare la propria logica di filtro o selezione.

Risoluzione resolution

Per risolvere il problema, segui la procedura riportata di seguito.

  1. Aggiorna l’implementazione personalizzata di WorkflowProcess per escludere i riferimenti ai frammenti esperienza prima di richiamare Replicator.replicate().

  2. Dopo aver recuperato i riferimenti tramite ReferenceProvider.findReferences(), identifica eventuali riferimenti che puntano a Frammenti esperienza. I frammenti di esperienza sono in genere archiviati nel percorso /content/experience-fragments.

  3. Escludi i percorsi dei frammenti esperienza prima di replicare i riferimenti raccolti. L’esempio seguente mostra un approccio:

    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. Se è necessaria una convalida aggiuntiva, risolvi ogni destinazione di riferimento e verifica che si tratti di un frammento di esperienza controllandone il tipo di risorsa o utilizzando l’API Frammento di esperienza disponibile nella versione di AEM in uso.

  5. Distribuisci il flusso di lavoro aggiornato e pubblica una pagina di prova.

  6. Verifica che la pagina sia pubblicata correttamente e che i frammenti esperienza di riferimento non vengano replicati a meno che non vengano pubblicati separatamente.

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