Cuando se trata de ORDA, 4D v18 R3 está lleno de buenas noticias. Nuevos métodos de miembros están a su disposición para mejorar aún más su experiencia de codificación.
Para empezar, la extracción de datos de una selección de entidades se ha enriquecido enormemente permitiéndole construir una colección totalmente personalizada con los datos de su selección de entidades.
Además, le proporcionamos una forma de indicar a una selección de entidades que sus datos deben ser actualizados desde el servidor inmediatamente, invalidando los datos almacenados en caché.
¿Está interesado en algunos detalles? Siga leyendo, todo lo que necesita saber está abajo.
extraer datos de una selección de entidades
El método new extract() está disponible en una selección de entidades.
Ahora puede construir una colección personalizada a partir de una selección de entidades.
Ejemplo 1
En el método extract() puede especificar los atributos de la clase de datos que desea extraer y sus nombres en la colección resultante.
Dada esta simple base de datos:
Construimos una colección $mailing de objetos con nombres de propiedades específicas: «destinatario», «ciudad», «código postal».
C_COLLECTION($mailing)
$mailing :=ds.Interns.all().extract("apellidos"; "destinatario";\️
"empleador.ciudad"; "ciudad";\️
"empleador.código postal"; "código postal")
y aquí está el resultado de la
$mailing resultante:
[ {recipient:Hodge,city:Blakeslee,zipCode:18610}, {recipient:Metzler,city:Medfield,zipCode:02052}, {recipient:Broyles,city:Madison,zipCode:13402} ]
Ejemplo 2
Tenga en cuenta que los atributos de las clases de datos que son una entidad relacionada pueden extraerse como una colección de entidades.
Un posible caso de uso es manejar una colección de entidades de diferentes clases de datos.
En el siguiente ejemplo, construimos la colección Form.partners que contiene entidades de las clases de datos Empresa y Escuela.
C_COLLECTION($companies;$schools)
// $companies is a collection of entities of Company dataclass
$companies :=ds.Interns.all().extract("empleador")
// $schools is a collection of entities of School dataclass
$schools :=ds.Interns.all().extract("escuela")
Form .
partners:=$companies.concat($schools)
// Form.partners is a collection
A continuación, la colección Form.partners está lista para ser mostrada en un cuadro de lista.
Consulte la documentación de los métodos refresh() y extract() para obtener más información.
Actualizar una selección de entidades
El nuevo método refresh() está disponible en una selección de entidades. Invalida los datos de la selección de entidades en la caché de ORDA para que la próxima vez que se usen los datos, se desencadene una actualización desde el servidor.
Por defecto, la caché de ORDA expira después de 30 segundos, así que use el método refresh() en caso de que necesites datos actualizados inmediatamente.
Ejemplo
Tienes algunos atributos de la selección de entidades de Form.invoices mostrados en un cuadro de lista y en un momento dado, quieres mostrar las actualizaciones hechas por otros clientes en esos atributos de selección de entidades. Es muy fácil. Sólo tienes que utilizar el método refresh() método miembro.
Form.invoices.refresh()
// The Form.invoices entity selection displayed data will be refreshed from the server