Exclure les fragments d’expérience de la publication de pages dans les workflows AEM personnalisés
Cet article explique comment mettre à jour un workflow Adobe Experience Manager personnalisé (AEM) afin que les fragments d’expérience ne soient pas publiés avec les pages, ce qui permet de les gérer et de les publier selon un planning distinct.
Description description
Environnement
- Instance AEM Sites avec un workflow de publication de page personnalisé
- Le workflow personnalisé collecte les références et envoie les chemins de page et de référence pour la réplication
Problème/Symptômes
- Le workflow personnalisé utilise
ReferenceProvider.findReferences()pour collecter tout le contenu référencé, puis publie la page et ses références à l’aide deReplicator.replicate(). - Les fragments d’expérience référencés sont publiés avec la page, même lorsque les auteurs gèrent et publient ces fragments selon un planning distinct.
- Le flux Gérer la publication standard permet aux auteurs de désélectionner les références. Le workflow personnalisé ne fournit pas cette option, sauf si le workflow l’implémente.
- Le workflow personnalisé a besoin d’une règle déterministe pour exclure les références aux fragments d’expérience avant d’envoyer des chemins pour réplication.
Cause
Le workflow personnalisé inclut les chemins d’accès aux fragments d’expérience dans la liste qu’il envoie pour réplication. Comme le workflow ne filtre pas ces chemins, les fragments d’expérience référencés sont publiés avec la page. Le flux Gérer la publication standard possède un contrôle de sélection des références, mais un workflow personnalisé doit implémenter sa propre logique de filtrage ou de sélection.
Résolution resolution
Suivez les étapes ci-dessous pour résoudre le problème.
-
Mettez à jour votre implémentation
WorkflowProcesspersonnalisée pour exclure les références aux fragments d’expérience avant d’appelerReplicator.replicate(). -
Après avoir récupéré des références via
ReferenceProvider.findReferences(), identifiez toutes les références qui pointent vers des fragments d’expérience. Les fragments d’expérience sont généralement stockés sous le chemin d’accès/content/experience-fragments. -
Filtrez les chemins d’accès aux fragments d’expérience avant de répliquer les références collectées. L’exemple suivant illustre une approche :
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 ); } -
Si une validation supplémentaire est requise, résolvez chaque cible de référence et vérifiez qu’elle est un fragment d’expérience en vérifiant son type de ressource ou en utilisant l’API de fragment d’expérience disponible dans votre version d’AEM.
-
Déployez le workflow mis à jour et publiez une page de test.
-
Vérifiez que la page est publiée avec succès et que les fragments d’expérience référencés ne sont pas répliqués, sauf s’ils sont publiés séparément.