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 utilizzandoReplicator.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.
-
Aggiorna l’implementazione personalizzata di
WorkflowProcessper escludere i riferimenti ai frammenti esperienza prima di richiamareReplicator.replicate(). -
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. -
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 ); } -
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.
-
Distribuisci il flusso di lavoro aggiornato e pubblica una pagina di prova.
-
Verifica che la pagina sia pubblicata correttamente e che i frammenti esperienza di riferimento non vengano replicati a meno che non vengano pubblicati separatamente.