Elementos básicos de las funciones de ⇐ | Personalización del cliente |
---|---|
Manillares de SCF Ayudantes |
La ubicación del paquete de las API de Communities está sujeta a cambios al actualizar de una versión principal a otra.
SocialComponents son POJO que representan un recurso para una función de AEM Communities. Lo ideal es que cada componente de Social represente un resourceType específico con GETters expuestos que proporcionen datos al cliente para que el recurso se represente con precisión. Toda la lógica empresarial y la lógica de vista se encapsulan en SocialComponent, incluida la información de la sesión del visitante del sitio, si es necesario.
La interfaz define un conjunto básico de GETters que son necesarios para representar un recurso. Es importante destacar que la interfaz estipula los métodos Map<String, Object> getAsMap() y String toJSONString() que son necesarios para procesar las plantillas Handlebars y exponer los extremos de GET JSON para los recursos.
Todas las clases de SocialComponent deben implementar la interfaz com.adobe.cq.social.scf.SocialComponent
La interfaz SocialCollectionComponent amplía la interfaz de SocialComponent para representar mejor los recursos que son colecciones de otros recursos.
Todas las clases de SocialCollectionComponent deben implementar la interfaz com.adobe.cq.social.scf.SocialCollectionComponent
SocialComponentFactory (fábrica) registra un componente de Social con el marco. La fábrica proporciona un medio para permitir que la estructura sepa qué componentes de Social están disponibles para un recursoType determinado y su prioridad de clasificación* cuando se identifican varios componentes de Social.
SocialComponentFactory es responsable de crear una instancia del componente SocialComponent seleccionado, lo que permite inyectar todas las dependencias necesarias para el componente Social desde la fábrica mediante prácticas de ID.
SocialComponentFactory es un servicio OSGi y tiene acceso a otros servicios OSGi que se pueden pasar a SocialComponent a través de un constructor.
Todas las clases de SocialComponentFactory deben implementar la interfaz com.adobe.cq.social.scf.SocialComponentFactory
Una implementación del método SocialComponentFactory.getPriority() debe devolver el valor más alto para que la fábrica se utilice para el resourceType dado como lo devuelve getResourceType().
SocialComponentFactoryManager (administrador) administra todos los componentes de Social registrados en la estructura y es responsable de seleccionar SocialComponentFactory para usar en un recurso determinado (resourceType). Si no hay fábricas registradas para un resourceType específico, el administrador devolverá una fábrica con el supertipo más cercano para el recurso determinado.
SocialComponentFactoryManager es un servicio OSGi y tiene acceso a otros servicios OSGi que se pueden pasar a SocialComponent a través de un constructor.
Se obtiene un identificador del servicio OSGi invocando com.adobe.cq.social.scf.SocialComponentFactoryManager
Los extremos del POST de API HTTP son clases PostOperation definidas mediante la implementación de la interfaz SlingPostOperation
(paquete org.apache.sling.servlets.post
).
La implementación de PostOperation
extremo establece sling.post.operation
en un valor al que responderá la operación. Todas las solicitudes de POST con un parámetro:operation establecido en ese valor se delegarán en esta clase de implementación.
El PostOperation
invoca el SocialOperation
que realiza las acciones necesarias para la operación.
El PostOperation
recibe el resultado de SocialOperation
y devuelve la respuesta adecuada al cliente.
Cada extremo SocialOperation
extiende la clase AbstractSocialOperation y anula el método performOperation().
Este método realiza todas las acciones necesarias para completar la operación y devolver un SocialOperationResult
o bien, envía un OperationException
, en cuyo caso se devuelve un estado de error HTTP con un mensaje, si está disponible, en lugar de la respuesta JSON normal o el código de estado HTTP de éxito.
La extensión AbstractSocialOperation
permite reutilizar SocialComponents
para enviar respuestas JSON.
La clase SocialOperationResult
se devuelve como resultado de SocialOperation
y está compuesta por un SocialComponent
, código de estado HTTP y mensaje de estado HTTP.
El SocialComponent
representa el recurso afectado por la operación.
Para una operación de creación, el SocialComponent
incluido en el SocialOperationResult
representa el recurso que se acaba de crear y, para una operación de actualización, representa el recurso modificado por la operación. No se devuelve SocialComponent
para una operación de eliminación.
Los códigos de estado HTTP de éxito utilizados son
Se puede generar un OperationExcepton
al realizar una operación si la solicitud no es válida o se produce algún otro error, como errores internos, valores de parámetro incorrectos, permisos incorrectos, etc. Un OperationException
está compuesto por un código de estado HTTP y un mensaje de error, que se devuelven al cliente como respuesta al PostOperatoin
.
El marco de componentes sociales recomienda que la lógica empresarial responsable de realizar la operación no se implemente dentro de la clase SocialOperation
sino que se delegue a un servicio OSGi. El uso de un servicio OSGi para la lógica de negocios permite que un SocialComponent
, actuado por un SocialOperation
extremo, se integre con otro código y se aplique una lógica de negocios diferente.
Todas las clases OperationService
se extienden AbstractOperationService
, permitiendo extensiones adicionales que pueden enganchar en la operación que se está realizando. Cada operación del servicio está representada por una clase SocialOperation
. La clase OperationExtensions
se puede invocar durante la ejecución de la operación llamando a los métodos
performBeforeActions()
performAfterActions()
OperationExtension
son piezas de código personalizadas que se pueden insertar en una operación que permite personalizar las operaciones para satisfacer las necesidades comerciales. Los consumidores del componente pueden añadir funcionalidad de forma dinámica e incremental al componente. El patrón de extensión/gancho permite a los desarrolladores centrarse exclusivamente en las propias extensiones y elimina la necesidad de copiar y anular operaciones y componentes completos.
El código de muestra está disponible en el repositorio Adobe Marketing Cloud GitHub. Busque proyectos con el prefijo aem-communities
o aem-scf
.
Vista la sección Pautas de codificación para conocer las distintas pautas de codificación y prácticas recomendadas para desarrolladores de AEM Communities.
Consulte también Proveedor de recursos de Almacenamiento (SRP) para UGC para obtener más información sobre el acceso al contenido generado por el usuario.
Elementos básicos de las funciones de ⇐ | Personalización del cliente |
---|---|
Manillares de SCF Ayudantes |