Fermer

janvier 31, 2024

Premiers pas avec AEM Groovy Console : exploration des scripts AEM avec un exemple pratique

Premiers pas avec AEM Groovy Console : exploration des scripts AEM avec un exemple pratique


Introduction

Les scripts Groovy fournissent aux développeurs AEM un ensemble d’outils puissants pour améliorer, automatiser et étendre les fonctionnalités d’Adobe Experience Manager. Grâce à sa facilité d’utilisation, son intégration Java transparente et ses fonctionnalités de développement rapide, Groovy permet aux développeurs de créer des flux de travail efficaces, des composants personnalisés et des intégrations transparentes. Dans ce blog, nous explorerons les scripts AEM Groovy à travers un exemple de cas d’utilisation simple, montrant comment ils peuvent simplifier la gestion de contenu et rationaliser les flux de travail.

Comprendre les scripts Groovy d’AEM

AEM Groovy Scripting est basé sur le langage Groovy, un langage de script dynamique et orienté objet qui s’exécute sur la machine virtuelle Java (JVM). La console AEM Groovy sert d’interface conviviale, permettant l’exécution de scripts Groovy dans Adobe Experience Manager. Ces scripts offrent des fonctionnalités étendues, telles que la manipulation de contenu dans le référentiel de contenu Java (JCR), l’appel de services OSGi et l’exécution de code personnalisé à l’aide des API AEM, Sling ou JCR.

Pourquoi utiliser GroovyScript ?

1. Développement rapide et syntaxe concise : Groovy offre une syntaxe concise et expressive qui réduit le code passe-partout, conduisant à des cycles de développement plus rapides. Cela peut améliorer considérablement la productivité, facilitant ainsi la création, la modification et la maintenance des scripts dans AEM.

2. Saisie dynamique et flexibilité : Le typage dynamique de Groovy permet aux développeurs d’écrire du code plus flexible et adaptable. Ceci est particulièrement avantageux dans les scripts AEM, où les structures de contenu et les exigences peuvent évoluer au fil du temps. La possibilité de travailler avec des types dynamiques simplifie les tâches de script et favorise la réutilisation du code.

3. Puissantes capacités de script : Groovy fournit de puissantes fonctionnalités de script, permettant aux développeurs AEM d’effectuer des opérations complexes avec un code concis et lisible. Les tâches de script telles que la manipulation de contenu dans Java Content Repository (JCR), l’appel de services OSGi et l’exécution de code personnalisé sont rationalisées, améliorant ainsi l’expérience globale de script.

4. Groovy Console pour les scripts interactifs : AEM inclut la console Groovy, fournissant un environnement interactif pour tester et exécuter des scripts Groovy. Cette console facilite le prototypage, le débogage et l’exploration rapides des API AEM, permettant ainsi aux développeurs d’expérimenter et d’affiner plus facilement leurs scripts.

5. Extensibilité et personnalisation : Les développeurs AEM peuvent étendre les fonctionnalités de leurs applications en incorporant des scripts personnalisés écrits dans Groovy. Cette extensibilité permet d’adapter les solutions aux exigences spécifiques du projet, garantissant ainsi qu’AEM peut répondre aux besoins uniques de diverses implémentations.

Prérequis

  • Une instance en cours d’exécution d’AEM
  • Maven 3.x

Configuration de l’environnement

Scripting Groovy, il est essentiel de configurer la console Groovy sur votre instance AEM. Vous trouverez ci-dessous les étapes pour configurer l’environnement pour les scripts Groovy.

1. Installez groovy-all-2.4.9.jar depuis http:///system/console/bundles.

Téléchargez le pot depuis groovy-tout-2.4.9 .

2. Installez org.apache.felix.webconsole.plugins.scriptconsole-1.0.2.jar depuis http:///system/console/bundles.

Téléchargez le pot depuis org.apache.felix.webconsole.plugins.scriptconsole.

3. Utilisateur du service de mise à jour pour le bundle de scripts

  • Accédez à http:///system/console/configMgr.
  • Recherchez «Avenant au service de mappage d’utilisateurs du service Apache Sling»
  • Ajouter au service

Mappages org.apache.felix.webconsole.plugins.scriptconsole:mysystemuser=mysystemuser

4. Accédez à la console de script à l’adresse http:// :/system/console/sc.

5. Testez l’échantillon ci-joint groovy.

Exemple de cas d’utilisation résolu par Groovy

Supposons que nous ayons une page AEM et que notre objectif soit de supprimer une propriété particulière de toutes ses pages enfants.

Dans le cadre de ce processus, nous afficherons le titre de chaque page enfant tout en fournissant un message indiquant si la propriété est en cours de suppression ou si elle n’existe pas sur cette page enfant spécifique.

import com.day.cq.wcm.api.Page
import com.day.cq.wcm.api.PageManager
import org.apache.sling.api.resource.ResourceResolver
import org.apache.sling.api.resource.ResourceResolverFactory
import org.apache.sling.api.resource.Resource
import org.apache.sling.api.resource.ModifiableValueMap

def deletePropertyFromChildPages(String currentPage) throws IllegalArgumentException {
   Map<String, Object> param = new HashMap<String, Object>();
   param.put(ResourceResolverFactory.SUBSERVICE, "mysystemuser");
   ResourceResolverFactory resourceResolverFactory = osgi.getService(ResourceResolverFactory.class)
   ResourceResolver resolver = resourceResolverFactory.getServiceResourceResolver(param)
   PageManager pageManager = resolver.adaptTo(PageManager.class)
   Page current = pageManager.getPage(currentPage)
   Iterator<Page> iter = current.listChildren()

   while (iter.hasNext()) {
       final Page childPage = iter.next()
       String pageTitle = childPage.getTitle()
       out.println("Processing Page: " + pageTitle)
       String resourcePath = childPage.getPath() + "/jcr:content" 
       Resource jcrContentResource = resolver.getResource(resourcePath)
       if (jcrContentResource != null) {
           ModifiableValueMap properties = jcrContentResource.adaptTo(ModifiableValueMap.class)
           
           if (properties.containsKey("hideSubItemsInNav")) {
               
               properties.remove("hideSubItemsInNav")
               resolver.commit()
               out.println("Property 'hideSubItemsInNav' removed from this node.")
           else {
               out.println("Property 'hideSubItemsInNav' does not exist on this node.")
           }
       else {
           out.println("jcr:content node not found for Page: " + pageTitle)
       }
   }
   resolver.close()
}

deletePropertyFromChildPages("/content/we-retail/us/en")

Conclusion

La console AEM Groovy sert d’interface conviviale, facilitant l’exécution de scripts Groovy pour la manipulation de contenu, l’appel de services OSGi et l’exécution de code personnalisé exploitant les API AEM, Sling ou JCR. Grâce à l’exploration d’un exemple pratique, nous avons démontré comment les scripts AEM Groovy peuvent simplifier des tâches complexes, telles que la suppression d’une propriété spécifique de toutes les pages enfants d’une page AEM.

La configuration de l’environnement pour les scripts AEM Groovy implique la configuration de la console Groovy, l’installation des fichiers JAR nécessaires et la mise à jour des utilisateurs du service pour les ensembles de scripts. Le cas d’utilisation fourni illustre la puissance des scripts Groovy en action, présentant un script qui supprime efficacement une propriété spécifiée des pages enfants tout en fournissant des messages informatifs en cours de route.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link