Dans ce dernier volet de la sérieORDA, nous allons voir comment les nouveaux concepts ORDA peuvent interagir avec les objets et collections existants. En fait, il est possible de transformer les entités et les sélections d’entités en objets et collections, ainsi que de construire des entités et des sélections d’entités à partir d’objets et de collections. En procédant ainsi, vous pouvez facilement intégrer le code ORDA dans votre code existant. Vous pouvez profiter pleinement d’ORDA sans avoir à réécrire votre code !
Aujourd’hui, vous utilisez SELECTION TO ARRAY et ARRAY TO SELECTION pour travailler de manière déconnectée du serveur, mais vous devez gérer autant de tableaux que de champs. Et pour un enregistrement courant, il n’y a aucun moyen de l’extraire sous une forme quelconque. Avec ORDA, vous pouvez facilement exporter les entités et les sélections d’entités de la base de données pour travailler sur elles séparément. Et ce n’est pas tout, vous pouvez importer des objets et des collections précédemment créés dans la base de données. Tout cela avec une méthode unique et facile à utiliser !
Ceci est très utile pour travailler efficacement en mode client-serveur, pour communiquer avec d’autres applications, ou pour importer des données en utilisant des processus batch.
ORDA : travailler avec des objets et des collections
EXPORTER DES SÉLECTIONS D’ENTITÉ ET D’ENTITÉ VERS DES OBJETS ET DES COLLECTES
Les exemples suivants sont basés sur cette structure. Mettons la main à la pâte !
EXPORTATION VERS DES OBJETS
Une entité peut être extraite sous forme d’objet à l’aide de la méthode toObject(). Ici, nous extrayons l’entité $pupil sous forme d’objet. Nous pouvons choisir les propriétés à extraire.
Ensuite, nous pouvons appliquer la commande JSON Stringify pour convertir la valeur de cet objet en une chaîne JSON et l’envoyer sur le réseau, par exemple. C_OBJECT($pupil;$pupilObject)
C_TEXT ($pupilString)
//Get the first pupil whose last name is "Dunaway"
$pupil :=ds.Pupil.query("lastName=:1" ; "Dunaway").first()
If ($pupil#Null)
// Turn the entity to an object
$pupilObject :=$pupil.toObject("firstName, lastName, email")
$pupilString :=JSON Stringify($pupilObject) // Stringify the object
End if
L’objet $pupilObject sera :
{ "firstName" : "Cecil", "lastName" : "Dunaway", "email" : "Cecil.Dunaway@echo" }
EXPORTATION VERS DES COLLECTIONS
Une sélection d’entités peut être exportée vers une collection à l’aide de la méthode toCollection(). Ici, nous exportons la sélection d’entités $pupils (qui contient 2 entités) sous forme de collection. Nous décidons d’extraire uniquement les propriétés de l’étudiant lastName and firstName de l’étudiant, ainsi que toutes les propriétés de l’entité liée school .
Ensuite, nous pouvons appliquer la commande JSON Stringify pour convertir les valeurs de cette collection en une chaîne JSON et l’envoyer via le réseau, par exemple.
C_OBJECT($pupils)
C_COLLECTION ($pupilsCollection)
C_TEXT ($pupilsString)
// Get the pupils whose first name starts with "L"
$pupils :=ds.Pupil.query("firstName=:1" ; "L@")
//Turn the entity selection to a collection of objects
$pupilsCollection :=$pupils.toCollection("lastName,firstName,school.*")
$pupilsString :=JSON Stringify($pupilsCollection)
La collection $pupilsCollection sera :
[ { "firstName" : "Lauren", "lastName" : "Bouchard", "école" : { "ID" : 45, "nom" : "Écoles d'arts", "état" : "New Jersey" } }, { "FirstName" : "Laurie", "lastName" : "Valenti", "école" : { "ID" : 46, "nom" : "École de mathématiques", "Etat : "New Jersey"} } ]
Plus d’options pour toObject() et toCollection() sont disponibles, consultez la documentation pour plus de détails !
IMPORTER DES SÉLECTIONS D’ENTITÉS ET D’ENTITÉ D’OBJETS ET DE COLLECTES
Importation d’objets
Une entité peut être construite à partir d’un objet avec la méthode fromObject() méthode. Ici, nous créons une nouvelle entité $pupil à partir d’un objet donné :
C_OBJECT($pupil;$pupilObject)
$pupilObject :=New object("firstName" ; "Mary" ; "lastName" ; "Smith" ; "email" ; "Mary.Smith@whisky")
//Create a new empty entity
$pupil:=ds.Pupil.new(
)
//Fill entity
$pupil.fromObject($pupilObject)
import de collections
Une sélection d’entités peut être construite à partir d’une collection avec la méthode fromCollection(). Ici, nous construisons une sélection d’entités $pupils à partir d’une collection donnée.
Notez que ce mécanisme peut être utilisé pour créer de nouvelles entités ou mettre à jour des entités existantes. Il dépend simplement de la présence de la clé primaire dans les objets.
C_OBJECT($pupils)
C_TEXT($txtPupils)
C_COLLECTION ($pupilsCollection)
$txtPupils :=Document to text(Get 4D folder(Current resources folder)+"pupils_data.json")
//Get a collection of objects
$pupilsCollection:=JSON Parse($txtPupils)
$pupils :=ds.Pupil.fromCollection($pupilsCollection)
et voici la méthode $pupilsCollection collection:
[ { // La clé primaire de l'entité n'est pas donnée. Une nouvelle entité sera créée "firstName" : "Mark", "lastName" : "Mac Arthur", "email" : "Mark.MacArthur@yankee", "école" : { "__KEY" : "45" } }, { // La clé primaire de l'entité est donnée. Cette entité sera mise à jour (si elle existe). "__KEY" : 3436, "firstName" : "Victor", "lastName" : "Valenti", "email" : "Victor.Valenti@NEWSCHOOL", "école" : { "__KEY" : "45" } } ]