Incorporación de aspectos comunes de reutilización

Objective

After completing this lesson, you will be able to ampliar las definiciones de entidad mediante nuevos elementos con la ayuda de los aspectos de CDS

Aspectos

Analicemos ahora cómo se puede mejorar la definición de entidades con nuevos elementos utilizando los denominados aspectos.

Vea el vídeo para obtener información sobre los aspectos CDS.

En esta lección, aprenderemos sobre la directiva extend . Hablaremos de la directiva annotate más adelante en otra lección.

La Directivaextend

Con la directiva extend puede añadir campos de ampliación a definiciones existentes como se muestra en la siguiente figura:

En el ejemplo, el elemento someAdditionalField se añade a la entidad de dominio Authors. Esto también añade este campo a la tabla de base de datos generada.

Nota

Los consumidores siempre ven los modelos eficaces fusionados, con la separación en aspectos totalmente transparentes para ellos.

Con la directiva extend , los metadatos como las anotaciones también se pueden añadir a las definiciones existentes o los metadatos existentes se pueden sobrescribir.

Las propiedades de tipo también se pueden fijar a través de extend. Por ejemplo, se puede aumentar la longitud de un elemento existente del tipo Cadena.

Aspectos nombrados

Puede utilizar extend con aspectos predefinidos para aplicar las mismas extensiones a varios destinos, como se muestra en la siguiente figura:

El ejemplo muestra un aspecto denominado ManagedObject que define los dos elementos createdAt y createdBy. Tanto la entidad Libros como la entidad Autores se amplían con estos campos a través de este aspecto nombrado.

Nota

La sintaxis aspect ManagedObject tiene el mismo efecto que la sintaxis define aspect ManagedObject, es decir, la palabra clave define es opcional.

Una extensión con nombre puede contener cualquier cosa, como campos, tipos o entidades.

Incluye como sintaxis de acceso directo

También puede utilizar aspectos con nombre como includes en una sintaxis similar a la herencia. Esta sintaxis le permite ampliar una definición con varios aspectos nombrados al mismo tiempo. En la siguiente figura, la entidad Authors se amplía con los dos aspectos nombrados ManagedObject y AnotherAspect.

Los includes son azúcar sintáctico. El ejemplo mostrado equivale a usar una secuencia de extends de la siguiente manera:

Code Snippet
1234567
entity Authors {} extend Authors with ManagedObject; extend Authors with AnotherAspect; extend Authors with { key ID : UUID; ... }

Aspectos comunes de reutilización

CDS se envía con un modelo preconfigurado @sap/cds/common que proporciona tipos y aspectos comunes para la reutilización.

Se recomienda que todas las aplicaciones utilicen los tipos y aspectos comunes proporcionados a través de @sap/cds/common. Esto le permite beneficiarse de las mejores prácticas aprendidas de aplicaciones empresariales reales.

En la siguiente sección, analizaremos más de cerca los dos aspectos cuid y managed de @sap/cds/common. Más adelante también analizaremos el aspecto CodeList y los tipos Country y Currency de este modelo.

Aspecto cuid

El aspecto cuid es un acceso directo conveniente que le permite añadir claves primarias canónicas y universalmente únicas a sus definiciones de entidad.

Nota

Como recordatorio, los tiempos de ejecución del proveedor de servicios rellenan automáticamente los campos clave de tipo UUID con UUID generados automáticamente.

Aspecto managed

El aspecto managed se puede utilizar para añadir los cuatro campos createdAt, createdBy, modifiedAt y modifiedBy a una entidad. Estos campos se utilizan para realizar un seguimiento de quién ha creado y actualizado registros de datos y cuándo.

Al utilizar este aspecto, puede almacenar la información de gestión relevante relacionada con los registros y seguir manteniendo su modelo de dominio central limpio y comprensible.

Los campos createdBy y modifiedBy tienen el tipo de datos User, que es un tipo de reutilización común de @sap/cds/common.

Las anotaciones @cds.on.insert y @cds.on.update utilizadas en el aspecto indican elementos que los programas de control genéricos rellenan automáticamente al insertar y actualizar.

Las pseudovariables utilizadas en estas anotaciones se resuelven de la siguiente manera:

  • $now se sustituye por la hora actual del servidor (en UTC)
  • $user es el ID del usuario actual tal como se ha recibido del middleware de autenticación

Nota

Los campos modifiedAt y modifiedBy se fijan siempre que se haya modificado la fila correspondiente, es decir, también durante las operaciones CREATE.

Uso de aspectos de @sap/cds/common

Para poder utilizar aspectos del modelo @sap/cds/common, debe importarlos a través de la directiva using . En la siguiente figura, por ejemplo, esto se realiza para los aspectos de reutilización comunes cuid y managed mediante la variante de deconstructor similar a ES6 de using.

Los dos aspectos importados se utilizan como includes en el ejemplo para ampliar la entidad Autores con los campos correspondientes. Sin los dos aspectos predefinidos, se requeriría la siguiente definición de la entidad Autores para lograr el mismo resultado que en el ejemplo mostrado utilizando medios nativos:

Code Snippet
123456789101112
entity Authors { key ID: UUID; createdAt : Timestamp @cds.on.insert: $now; createdBy : User @cds.on.insert: $user; modifiedAt : Timestamp @cds.on.insert: $now @cds.on.update: $now; modifiedBy : User @cds.on.insert: $user @cds.on.update: $user; name : String(100); dateOfBirth : Date; dateOfDeath : Date; books : Association to many Books on books.author = $self; }

Demostración y ejercicio: Utilizar aspectos predefinidos

Nota

Como ejercicio, lleve a cabo las instrucciones paso a paso en la siguiente demostración en SAP Business Application Studio.

Como punto de partida para el ejercicio, utilice el resultado del ejercicio anterior Añadir asociaciones al Domain Model si lo ha completado correctamente. Como alternativa, también puede utilizar la ramificación 5_asociaciones del siguiente repositorio GitHub como punto de partida:

https://github.com/SAP-samples/cap-development-learning-journey

La implementación completa de la simulación se puede encontrar en la rama 6_common_reuse_points del repositorio GitHub.

Puede encontrar información detallada sobre el contenido del repositorio y cómo utilizarlo aquí.

Vea el vídeo para ver cómo utilizar los aspectos predefinidos.