Escribir código genérico con ORDA

Traducido automáticamente de Deepl

ORDA fue uno de los principales anuncios de 4D Summit 2018, abriendo un mundo de nuevas posibilidades en 4D. Para saber más sobre ORDA y sus beneficios, consulte este post para ver cómo ORDA cambiará su forma de trabajar.

INTRODUCCIÓN

Con ORDA, se accede a los datos a través de una capa de abstracción: el datastore. Un datastore es un objeto que proporciona una interfaz a la base de datos y sus datos a través de objetos. Por ejemplo, una tabla es mapeada a un objeto dataclass, un campo es un atributo de un dataclass. El comando new ds devuelve una referencia en el almacén de datos de la aplicación. Si quieres saber más, echa un vistazo al artículo de resumen en la documentación.

Para guiarle en la exploración de las características de ORDA , hemos preparado un glosario de los diferentes términos y conceptos, junto con su definición.

ORDA también proporciona alguna información útil sobre la estructura de la base de datos.

Esto puede ser muy útil cuando se escribe código genérico…. sin conocer la estructura de una base de datos.

Descargar la herramienta de ordenación dinámica TIP

Aquí hay un ejemplo:

Como el dataStore devuelto por el comando ds es un objeto, se puede iterar a través de él utilizando un bucle for each para obtener sus atributos (también conocidos como dataClasses).

Esto permite escribir código genérico aplicable a todas las tablas expuestas en el dataStore.

En el siguiente ejemplo, construimos una colección de objetos que contienen las dataClasses.

C_OBJECT Form($dataClassObj)
C_TEXT ($dataClassName)
For each ($dataClassName;ds)
$dataClassObj :=New object
$dataClassObj .name:=$dataClassName
$dataClassObj .value:=ds[$dataClassName]
.dataClassList.push($dataClassObj)
End for each

Esta colección puede mostrarse en un cuadro de lista para que los usuarios puedan seleccionar una dataClass. Luego, podemos continuar con el código genérico en la dataClass seleccionada.

Un objeto dataClass también se puede recorrer con un bucle for each para obtener sus atributos que contienen propiedades útiles:

    • name: nombre del dataClassAttribute en el modelo de datos
    • tipo: la categoría del atributo:
      • «storage»: equivalente a un campo en la base de datos 4D
      • «relatedEntity»: un atributo de relación N -> 1
      • «relatedEntities»: un atributo de relación 1 -> N
    • relatedDataClass: el nombre de la clase de datos relacionada con el atributo (si el tipo es «relatedEntity» o «relatedEntities»)

Con toda esta información, puedes escribir código genérico sin conocer la estructura de tu base de datos.

En el ejemplo de base de datos TIP proporcionado, aprenderás a

  • seleccionar una dataClass del dataStore,
  • construir un cuadro de lista con todas las propiedades de la dataClass, incluyendo la entidad relacionada de primer nivel, y
  • construir una herramienta de ordenación.

A continuación, un resumen de este TIP:

Avatar
• Propietario de producto - Marie-Sophie Landrieu-Yvert ingresó al equipo de 4D Product como Propietario de producto en 2017. Como tal, está a cargo de escribir las historias de los usuarios y luego traducirlas en especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Marie-Sophie se graduó en la Escuela de Ingeniería de ESIGELEC y comenzó su carrera como ingeniera en IBM en 1995. Participó en varios proyectos (de mantenimiento y creación) y trabajó como desarrolladora de Cobol. Luego trabajó como diseñadora de UML y desarrolladora de Java. Sus principales funciones fueron analizar y redactar requisitos funcionales, coordinar los equipos de negocio y de desarrollo.