ORDA : Des nouvelles fracassantes pour les méthodes de sélection d’entités

Traduit automatiquement de Deepl

En ce qui concerne ORDA, 4D v18 R3 est plein de bonnes nouvelles ! De nouvelles méthodes de membres sont à votre disposition pour améliorer encore votre expérience de codage.

Pour commencer, l’extraction de données à partir d’une sélection d’entités a été considérablement enrichie, ce qui vous permet de construire une collection entièrement personnalisée avec les données de votre sélection d’entités .

En outre, nous vous offrons un moyen d’indiquer à une sélection d’entités que ses données doivent être rafraîchies immédiatement à partir du serveur, en invalidant les données mises en cache.

Vous voulez en savoir plus ? Continuez à lire, tout ce que vous devez savoir se trouve ci-dessous.

extraire des données d’une sélection d’entités

La méthode new extract() est disponible sur une sélection d’entités.

Vous pouvez maintenant construire une collection personnalisée à partir d’une sélection d’entités !

Exemple 1

Dans la méthode extract() vous pouvez spécifier les attributs de classe de données que vous voulez extraire et leurs noms dans la collection résultante.

Avec cette base de données simple :

Nous construisons une collection $mailing d’objets avec des noms de propriétés spécifiques : « destinataire », « ville », « code postal ».

C_COLLECTION($mailing)
$mailing :=ds.Interns.all().extract("lastname" ; "recipient";\
"employer.city" ; "city";\
"employer.zipCode" ; "zipCode")

et voici le résultat

$mailing résultante :

[
{recipient:Hodge,city:Blakeslee,zipCode:18610},
{recipient:Metzler,city:Medfield,zipCode:02052},
{recipient:Broyles,city:Madison,zipCode:13402}
]

Exemple 2

Notez que les attributs de classe de données qui sont une entité liée peuvent être extraits comme une collection d’entités.

Un cas d’utilisation possible est de gérer une collection d’entités provenant de différentes classes de données.

Dans l’exemple ci-dessous, nous construisons la collection Form.partners qui contient des entités des classes de données Société et Ecole.

blank

C_COLLECTION($companies;$schools)

// $companies is a collection of entities of Company dataclass
$companies :=ds.Interns.all().extract("employeur")

// $schools is a collection of entities of School dataclass
$schools :=ds.Interns.all().extract("école")

Form .partners:=$companies.concat($schools) // Form.partners is a collection

Ainsi, la collection Form.partners est prête à être affichée dans une boîte de liste !blank

Consultez la documentation relative aux méthodes refresh() et extract() pour en savoir plus !

Rafraîchir une sélection d’entités

La nouvelle méthode membre refresh() est disponible sur une sélection d’entité. Elle invalide les données de la sélection d’entités dans le cache ORDA de sorte que la prochaine fois que vous utilisez les données, cela déclenche une mise à jour du serveur.

Par défaut, le cache ORDA expire au bout de 30 secondes. refresh() juste au cas où vous auriez besoin de données à jour immédiatement.

Exemple

Vous avez certains attributs de la sélection d’entités Form.invoices affichés dans une boîte de liste et à un moment donné, vous voulez afficher les mises à jour effectuées par d’autres clients sur ces attributs de sélection d’entités. C’est facile ! Il suffit d’utiliser la méthode refresh() membre.

Form.invoices.refresh() // The Form.invoices entity selection displayed data will be refreshed from the server

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert a rejoint l'équipe de 4D Product en tant que Product Owner en 2017. En tant que Product Owner, elle est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Marie-Sophie est diplômée de l'école d'ingénieur ESIGELEC et a commencé sa carrière en tant qu'ingénieur chez IBM en 1995. Elle a participé à divers projets (projets de maintenance ou de construction) et a travaillé en tant que développeur Cobol. Elle a ensuite travaillé en tant que concepteur UML et développeur Java. Dernièrement, ses principaux rôles étaient d'analyser et de rédiger des exigences fonctionnelles, de coordonner les équipes commerciales et de développement.