ORDA: Arbeit mit Objekten und Sammlungen

Automatisch übersetzt von Deepl

In dieser neuesten Folge der ORDA-Serie werden wir uns ansehen, wie die neuen ORDA-Konzepte mit bestehenden Objekten und Sammlungen interagieren können. Es ist nämlich möglich, Entitäten und Entitätsselektionen in Objekte und Sammlungen zu verwandeln sowie Entitäten und Entitätsselektionen aus Objekten und Sammlungen zu erstellen. Auf diese Weise können Sie ORDA-Code problemlos in Ihren bestehenden Code integrieren. Sie können alle Vorteile von ORDA nutzen, ohne Ihren Code neu schreiben zu müssen!

Heute verwenden Sie SELECTION TO ARRAY und ARRAY TO SELECTION um losgelöst vom Server zu arbeiten, aber Sie müssen so viele Arrays wie Felder verwalten. Und für einen aktuellen Datensatz gibt es keine Möglichkeit, ihn in irgendeiner Form zu extrahieren. Mit ORDA können Sie Entitäten und Entitätsselektionen einfach aus der Datenbank exportieren, um sie separat zu bearbeiten. Und das ist noch nicht alles: Sie können zuvor erstellte Objekte und Sammlungen in die Datenbank importieren. Und das alles mit einer einzigen und einfach zu bedienenden Methode!

Dies ist sehr nützlich, um effizient im Client-Server-Modus zu arbeiten, mit anderen Anwendungen zu kommunizieren oder Daten über Batch-Prozesse zu importieren.

ORDA: Arbeiten mit Objekten und Sammlungen

EXPORT VON ENTITÄTEN UND ENTITÄTSAUSWAHLEN IN OBJEKTE UND SAMMELUNGEN

Die folgenden Beispiele basieren auf dieser Struktur. Machen wir uns die Hände schmutzig!

EXPORT NACH OBJEKTEN

Eine Entität kann als Objekt extrahiert werden, indem man die toObject() Methode extrahiert werden. Hier extrahieren wir die Entität $pupil als Objekt. Wir können auswählen, welche Eigenschaften extrahiert werden sollen.

Dann können wir den JSON Stringify anwenden, um den Wert dieses Objekts in einen JSON-String zu konvertieren und ihn über das Netzwerk zu senden, z. B. 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

Das $pupilObject Objekt wird sein:

{
 "vorname": "Cecil",
 "Nachname": "Dunaway",
 "email": "Cecil.Dunaway@echo"
}

EXPORT TO COLLECTIONs

Eine Entitätsauswahl kann in eine Sammlung exportiert werden, indem die toCollection() Methode exportiert werden. Hier exportieren wir die Entitätsauswahl $pupils (die 2 Entitäten enthält) als Sammlung. Wir entscheiden uns, nur die Eigenschaften des Studenten zu extrahieren lastName and firstName Eigenschaften zu extrahieren, zusammen mit allen Eigenschaften der Entität school .

Dann können wir mit dem JSON Stringify anwenden, um die Werte dieser Sammlung in einen JSON-String zu konvertieren und ihn über das Netzwerk zu senden, z. B.

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)

Die Sammlung $pupilsCollection wird sein:

[
  {
   "firstName": "Lauren",
   "nachname": "Bouchard",
   "Schule": {
   "ID": 45,
   "name": "Kunstschulen",
   "state": "New Jersey" }
  },
  {
   "firstName": "Laurie",
   "Nachname": "Valenti",
   "Schule": {
   "ID": 46,
   "name": "Mathematikschule",
   "Staat": "New Jersey"}
  }
]

Weitere Optionen für toObject() und toCollection()-Methoden sind verfügbar, weitere Details finden Sie in der Dokumentation!

IMPORTIEREN VON OBJEKTEN UND SAMMELUNGEN VON ENTITÄTEN UND ENTITÄTEN-Auswahlen

importieren von Objekten

Eine Entität kann aus einem Objekt mit der fromObject() Methode erstellt werden. Hier erstellen wir eine neue Entität $pupil aus einem gegebenen Objekt:

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)

importieren von Sammlungen

Eine Entitätsauswahl kann aus einer Sammlung mit der fromCollection() Methode erstellt werden. Hier erstellen wir eine $pupils Entitätsauswahl aus einer gegebenen Sammlung.

Beachten Sie, dass dieser Mechanismus für die Erstellung neuer Entitäten oder die Aktualisierung bestehender Entitäten verwendet werden kann. Es hängt einfach davon ab, ob der Primärschlüssel in den Objekten vorhanden ist.

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)

und hier ist die $pupilsCollection collection:

[
 { // Der Primärschlüssel der Entität ist nicht gegeben. Es wird eine neue Entität erstellt
 "Vorname": "Mark",
 "Nachname": "Mac Arthur",
 "email": "Mark.MacArthur@yankee",
 "Schule": {
 "__KEY": "45"
 }
},
 { // Der Primärschlüssel der Entität wird angegeben. Diese Entität wird aktualisiert (falls sie existiert)
 "__KEY": 3436, 
 "firstName": "Victor",
 "Nachname": "Valenti",
 "email": "Victor.Valenti@NEWSCHOOL",
 "Schule": {
 "__KEY": "45"
 }
}
 ]

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.