Métodos de los miembros de ORDA para obtener la información de la estructura

Traducido automáticamente de Deepl

«¿Cómo puedo saber la dataClass de una entidad? Lo necesito para escribir métodos genéricos«. «Necesito información sobre un campo de una dataClass: ¿cuál es su tipo? ¿Está indexado? ¿Es único?«. Estos son los tipos de preguntas que hemos escuchado en el foro. 4D v17 R5 proporciona las respuestas: introduciendo nuevos métodos miembros de ORDA para proporcionar información útil sobre su base de datos. Siga leyendo, porque apreciará los beneficios de reducir el tamaño de su código y hacerlo reutilizable y fácil de mantener.

HDI: Ejemplo de obtención de información de la estructura de la base de datos con ORDA

Ahora, puedes obtener información relacionada con la estructura, como el número de tabla o de campo. Esto puede ser útil al integrar ORDA paso a paso en su código clásico de 4D. Sin embargo, el propósito principal de estos métodos miembros es darte una manera de escribir código genérico que sea aplicable sin importar la estructura de la base de datos.

Obtener el dataClass de una entidad o de una selección de entidades

entity dataclass

¡Qué alegría tener una entidad inteligente que conozca su propia dataClass!

El método getDataClass() devuelve el objeto dataClass correspondiente a la entidad. Luego, puedes llamar a cualquier método miembro disponible en la dataClass.

En el siguiente ejemplo, llamamos al método new() método miembro. Éste crea una nueva entidad a partir de la proporcionada y copia los datos de la dirección. También se recibe un objeto que contiene el nombre de la propiedad y su valor para la entidad recién creada.

C_OBJECT($1;$entity;$entityContent;$newEntity;$status)
C_OBJECT ($2;$attribute)

$entity :=$1
$attribute :=$2

$newEntity :=$entity.getDataClass().new()

$entityContent :=$entity.toObject("dirección.*")
//We copy address from the received entity
$newEntity.fromObject($entityContent)

//We fill the created entity with received property name and value
$newEntity [$attribute.name]:=$attribute.value
$status :=$newEntity.save()

clase de datos de selección de entidades

El método miembro getDataClass() devuelve el objeto dataClass correspondiente a la selección de la entidad. El método siguiente recibe una selección de entidades y crea nuevas entidades con los mismos datos de dirección.

C_OBJECT($1;$inputSelection;$newEntitySelection)
C_COLLECTION ($esContent)
$inputSelection :=$1
alert (String($inputSelection.length) + " se van a duplicar entidades")
$esContent :=$inputSelection.toCollection("dirección")
$newEntitySelection :=$inputSelection.getDataClass().fromCollection($esContent)
alert (String($newEntitySelection.length) + " se han creado entidades")

obtener información sobre una clase de datos

El método getInfo() disponible en la dataClass, también devuelve información útil. En el ejemplo siguiente, obtenemos los ID que coinciden con la clave primaria de la Persons dataClass, luego recuperamos las entidades correspondientes.

C_OBJECT($es;$settings)
$settings :=New object
$settings .parameters:=New object("receivedIds";getIds ())
// The getIds() method returns a collection of IDs
$settings .attributes:=New object("pk";ds.Persons.getInfo().primaryKey)
$es :=ds.Persons.query(":pk in :receivedIds";$settings
)

atributo dataclass

Con 4D V17.0, usted aprendió que cada atributo dataClass es un objeto. Ahora se han mejorado con información conceptual y estructural.

He aquí un ejemplo rápido.

C_TEXT($text)
$text :=JSON Stringify(ds.Cats.ID)
//$text =
//{"name":"ID","kind":"storage","type":"number","indexed":true,
//"keywordIndexed":false,
"autoFilled":true,"mandatory":true,"unique":true,
//"fieldNumber":1,"fieldType":9}

Descargue el IDH anterior para obtener más información. Y no deje de visitar el centro de documentación.

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.