Mostrando las entradas con la etiqueta aem. Mostrar todas las entradas
Mostrando las entradas con la etiqueta aem. Mostrar todas las entradas

jueves, 19 de diciembre de 2019

¿C贸mo Sling resuelve las peticiones Http?

Para entender c贸mo Sling resuelve las peticiones Http vamos a seguir un ejemplo b谩sico que consta de la creaci贸n de un componente que va a ser renderizado en nuestro navegador.
Photo by Hello I'm Nik 馃嚞馃嚙 on Unsplash

Antes de esto vale la pena destacar que al ser Sling un web framework orientado a recursos, toda petici贸n Http debe apuntar a un recurso (ya sea un nodo JCR, un archivo o una base de datos), por lo tanto, si al momento de resolver la petici贸n http Sling  no encuentra un recurso para esa petici贸n, devolver谩 un error 404 indicando que el recurso no se encuentra disponible.

Una vez explicado esto  procedamos con la creacion de nuestro ejmplo, para esto vamos a usar CRXDE-Lite, el cual es un entorno de desarrollo o un visualizar de nodos JCR que AEM trae integrado.
Podemos acceder a este desde la pagina de inicio de AEM, ingresando a localhost  (http://localhost:4502/aem/start.html), luego hacemos clic en el icono de herramientas, luego clic en General y finalmente clic en la tarjeta CRXDE-Lite, como se muestra en la siguiente imagen:




o simplemente digitamos en nuestro navegador: http://localhost:4502/crx/de/index.jsp#, esto nos llevara a una pagina como la que se muestra a continuaci贸n:




















Una vez aqu铆, procedemos a crear una carpeta la cual contendr谩 nuestro ejemplo, para esto expandimos el nodo apps, hacemos clic derecho y luego en crear nuevo folder,  y le ponemos el nombre miejemplo:





































Realizando este mismo proceso, vamos a crear varias  carpetas mas dentro de la carpeta miejemplo, primero creamos la template, luego  creamos carpeta components, dentro de esta creamos la carpeta structure, y la carpeta con el nombre content, nos quedar铆a algo as铆, (RECUERDA DALER CLIC EN SAVE ALL UNA VEZ HAGAS TUS CAMBIOS):
->miejemplo
       -> componentes
            -> structure
             -> content
      -> template



Una vez creamos la estructura de nuestras carpetas, procedemos a crear nuestro componente, para esto hacemos clic derecho sobre la carpeta structure, luego clic en crear, crear component:


Procedemos a llenar la information que nos solicita:
En Label: ponemos mipagina, la cual sera el nombre del node JCR
En Title: para simplicidad ponemos mipagina
En Descipction: ponemos una breve descripci贸n de nuestro component y
Finalmente en Super Type ponemos el component que se va a renderizar en nuestra pagina web que en este caso es un componete page del core wcm/foundation de AEM 


Finalmente nos quedar谩 algo como se muestra en la siguiente imagen:


Como podemos observar CRXDE nos crea por defecto un scritp jsp con el mismo nombre de nuestro componente. Adobe a partir de las nuevas versiones de AEM introdujo HTL como  nuevo lenguaje de programaci贸n para la creaci贸n de los componentes, es bueno seguir esta recomendaci贸n por lo tanto procedemos a renombrar este archivo mipagina.jsp a mipagina.html, y  reemplazamos su contenido por el siguiente:

<html>
<head>
    </head>
    <body>
    <h1>Hola desde el componete mipagina en AEM</h1>
    </body>
</html>



Para poder renderizar nuestro componente necesitamos crear un nodo que apunte a nuestro componente, para esto vamos a la carpeta content en la raiz de CRXDE-Lite, y creamos un nuevo nodo como lo indica la siguiente imagen:


Hay que recordar que toda petici贸n http debe estar mapeada a un recurso en AEM, por esto es necesario indicarle al nodo que acabamos de crear que el componente que va a renderizar es el componente mipagina, esto lo hacemos asignandole a la propiedad sling:resourceType la ruta de nuestro componente  mipagina (/apps/miejemplo/components/structure/mipagina):



Una vez hecho esto, podemos ver nuestro componente renderizado en el navegador,  para esto, vamos a  nuestro navegador y en nuestra instancia local de AEM le agregamos la ruta del nodo que creamos previamente, agregandole la extension que queremos renderizar /content/muestramipagina.html que en este caso es .html, nuestra ruta final quedar铆a de la siguiente manera:  http://localhost:4502/content/muestramipagina.html

Y es de as铆 como finalmente podemos ver nuestro componente renderizado:
























Una vez tenemos listo nuestro componentes, vamos a explicar como sling resuelve estas peticiones a trav茅s de una series de pasos:
  1. Primero Sling descompone la URL(http://localhost:4502/content/muestramipagina.html)
    • primero determina el protocolo http
    • luego el  host y el puerto localhost:4502
    • luego la ruta del nodo en la carpeta content content/muestramipagina
    • Si hay selectores extrae los selectores, en este caso no tenemos selectores pero si los hubiera seria todo lo que hay antes de la extension .html y despu茅s de content/muestramipagina, ser铆a algo como: content/muestramipagina.selector1.selector2.html
    • y por ultimo la extension, cabe destacar que aparte de la extension pueden haber sufijos y parametros de la forma content/muestramipagina.selector1.selector2.html/sf1?id=123
  2. Seguido de esto Sling  buscar铆a una URL o Servlet que redireccionar铆a nuestra petici贸n pero como este no es el caso pasamos al siguiente paso
  3. El cual seria buscar el nodo indicado en la URL el cual ser铆a content/muestramipagina
  4. Si el nodo existe Sling procede a resolver el recurso solicitado usando la propiedad sling:resourceType
  5. Finalmente Sling procede a resolver el script de renderizado e imprimirlo en nuestro navegador, para este caso ser铆a el script por defecto mipagina.html
En resumen, estos son los pasos b谩sicos que lleva a cabo Sling  para resolver las peticiones Http, falta mencionar el caso cuando hay selectores, este caso lo veremos en futuros pots.

Muchas gracias por su atenci贸n, sientanse libres de corregirme cualquier error o solicitarme alguna mejora.

Lecturas recomendadas

  1. ¿Que es AEM?
  2. ¿Que es un Componente en AEM?
  3. ¿Que es un Template en AEM?
  4. Arquitectura de AEM



mi茅rcoles, 18 de diciembre de 2019

¿Que es un Template en AEM?

Template en AEM son los modelos predise帽ados que creamos de nuestras paginas web, estan compuesto por componentes y son usados esencialmente para crear paginas web y para construir el contenido inicial en un proyecto AEM.

Photo by Tim Arterbury on Unsplash

















Algunos atributos y propiedades que podemos encontrar al momento de crear un componente son las siguientes:

  • label: esta propiedad representa el nombre del template 
  • sling:resourceType : define el componente que se va a renderizar y obligatorio asignar esta propiedad en cada nuevo template que crear
  • jcr:title : esta propiedad representa el titulo que el analista encargado de authoring ve al momento de crear una nueva pagina
  • jcr: description : es usado normalmente como documentaci贸n del template o para de describir la funcionalidad del componente
  • ranking: Define el orden en el que un template se ver谩 en AEM
  • allowedPaths:  en esta propiedad podemos agregar la rutas jcr en las cuales el template podr谩 ser utilizado
Lecturas recomendadas

martes, 17 de diciembre de 2019

¿Que es un Componente en AEM?

Components en AEM son unidades  modulares y reusables  que implementan funcionalidades o l贸gica especifica para renderizar un sitio web,  los componentes en AEM no son mas que nodos JCR que estan compuestos por una series de scripts (.java, .jsp, .js, .html) los cuales  realizan una tarea especifica con base en ciertas propiedades que podemos parametrizar cuando creamos cada componente.
Photo by Robin Glauser on Unsplash



















Una de las propiedades mas importantes al crear un component en AEM es la propiedad sling:resourceType la cual nos indica el componente que se va a renderizar en nuestra pagina web, por lo general en esta propiedad indicamos componentes core por defecto que AEM trae predise帽ados tales como: breadcrumb, text, tabs, carousel etc. 
Cabe destacar que cada desarrollador puede crear sus componentes personalizados con base en estas propiedades, modificando el script por defecto de cada componente.

Para tener una idea de como se ve un componente en AEM podemos echar un vistazo a los componentes core que AEM trae por defecto en la siguiente ruta: core/wcm/components

































Como podemos observar, cada componente pose ciertos scripts que pueden ser modificados para proveer la funcionalidad que se requiera, por lo general estos scripts son tel tipo html, javascript y archivos java servlet, adicionalmente cada componente pose una series de nodos anidados como podemos ver en la imagen los cuales son los cq:dialog y los ca:design_dialog, los cuales nos sirven para definir ciertas propiedades que el usuario de Authoring puede definir en nuestro componente.

As铆, estos serian los componentes que ver铆amos renderizados en nuestra paginas web, o que el analista encargado de realizar el Authoring tendr铆a disponible para crear los templates que luego se utilizan en la creaci贸n de las paginas web.


jueves, 12 de diciembre de 2019

¿Que es AEM?


AEM o Adobe Experience Manager es un administrador de contenidos empresarial que nos permite desarrollar aplicaciones web y servicios de manera 谩gil y r谩pida, AEM inicialmente fue desarrollado por la empresa Day y adquirido por Adobe en el a帽o 2010, desde entonces AEM ha ido evolucionando, agregando nuevas funcionalidades que hacen de AEM una herramienta imprescindible a la hora de administrar contenidos en entornos empresariales.

Photo by Florian Klauer on Unsplash

Una de las preguntas mas curiosas que han surgido desde la compra de la compa帽铆a Day por parte de Adobe   ha sido la siguiente: si AEM es un administrador de contenidos, ¿no deber铆a de llamarse ACM?, para responder a esta pregunta  hay que decir que AEM no solo es un administrador de contenidos, AEM se encarga de administrar toda la experiencia de un usuario desde que inicia sesi贸n en un sitio web AEM hasta que deja  el sitio web.

AEM logra esto ofreciendo un conjunto de herramientas que permite llegar a conocer a los usuarios que visitan un sitio web, para de este modo poder personalizar el contenido que este usuario experimenta, un ejemplo de esto lo podemos ver en muchos sitios web de Retail, donde cada usuario experimenta un contenido diferente con base en sus gusto y preferencias.





Como se mencion贸 anteriormente previo al 2010 AEM que para ese entonces se llamaba CQ (Comuniqu茅) fue adquirido por Adobe, desde entonces han habido varios cambios, tales como cambio de nombre, inclusion de nuevas funcionales, cambio de imagen entre otras cosas, esta es la raz贸n por la que previo a AEM 5.5 no se encuentra mucha informaci贸n en la web ya que esta version y las version previas tenian el nombre de CQ, inclusive muchos de los paquetes core base de AEM tiene el nombre de com.day.cq.*.

La siguiente imagen nos muestra una breve linea de tiempo de los cambios en AEM:
(Imagen tomada del curso aem-developer-fundamentals (Stephanie Adams):https://app.pluralsight.com/library/courses/aem-developer-fundamentals/table-of-contents )

AEM provee ciertas capacidades con las cuales se pueden llevar a cabo las tareas  que demandan la personalizaci贸n y la administraci贸n de contenidos a nivel empresarial, como podemos ver en la siguiente imagen, estas capacidades se  pueden resumir en las siguientes:
  • Sites (Sitios web)
  • Assets
  • Forms 
  • Screens
  • LiveFyre
  • Foundations
  • Communities


Pagina de inicio de AEM localhost

En sintesis, AEM no solo es un content manager, con AEM podemos gestionar toda la experiencia de usuario en un sitio web, AEM nos permite crear y gestionar todo el contenido de un sitio web  haciendo uso de las  capacidades anteriormente mencionadas, con las cuales podemos llegar a construir sitios web robustos, escalables, personalizables y  f谩ciles de administrar.



Lecturas recomendadas:
  1. Arquitectura de AEM
  2. ¿Que es un Componente en AEM?
  3. ¿Que es un Template en AEM?
  4. ¿C贸mo Sling resuelve las peticiones Http?