ORDA-Methoden zum Abrufen der Strukturinformationen

Automatisch übersetzt von Deepl

Wie kann ich die dataClass einer Entität kennen? Ich brauche sie, um generische Methoden zu schreiben„. „Ich brauche Informationen über ein Feld in einer dataClass: Was ist sein Typ? Ist es indiziert? Ist es eindeutig?„. Dies sind die Fragen, die wir im Forum von Ihnen gehört haben. 4D v17 R5 liefert die Antworten: Es werden neue ORDA-Member-Methoden eingeführt, die nützliche Informationen über Ihre Datenbank liefern. Lesen Sie weiter, denn Sie werden die Vorteile zu schätzen wissen, die sich daraus ergeben, dass Ihr Code kleiner, wiederverwendbar und einfach zu pflegen ist!

HDI: Beispiel für die Abfrage von Datenbankstrukturinformationen mit ORDA

Jetzt können Sie strukturbezogene Informationen wie Tabellen- oder Feldnummern abrufen. Dies kann hilfreich sein, wenn Sie ORDA Schritt für Schritt in Ihren klassischen 4D-Code integrieren. Der Hauptzweck dieser Methoden ist jedoch, Ihnen eine Möglichkeit zu geben, generischen Code zu schreiben, der unabhängig von der Struktur der Datenbank anwendbar ist.

Ermitteln der dataClass einer Entität oder einer Entitätsauswahl

Entität dataclass

Was für eine Freude, eine clevere Entität zu haben, die ihre eigene dataClass kennt!

Die Methode getDataClass() Member-Methode gibt das dataClass-Objekt zurück, das der Entität entspricht. Anschließend können Sie jede für die dataClass verfügbare Member-Methode aufrufen.

In dem folgenden Beispiel rufen wir die new() Member-Methode auf. Sie erstellt eine neue Entität aus der bereitgestellten Entität und kopiert die Adressdaten. Außerdem wird ein Objekt empfangen, das den Eigenschaftsnamen und seinen Wert für die neu erstellte Entität enthält.

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

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

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

$entityContent :=$entity.toObject("address.*")
//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()

Datenklasse für die Auswahl von Entitäten

Die Methode getDataClass() member-Methode gibt das dataClass-Objekt zurück, das der Entitätsauswahl entspricht. Die folgende Methode empfängt eine Entitätsauswahl und erstellt neue Entitäten mit denselben Adressdaten.

C_OBJECT($1;$inputSelection;$newEntitySelection)
C_COLLECTION ($esContent)
$inputSelection :=$1
alert (String($inputSelection.length) + " Entitäten werden dupliziert")
$esContent :=$inputSelection.toCollection("Adresse")
$newEntitySelection :=$inputSelection.getDataClass().fromCollection($esContent)
alert (String($newEntitySelection.length) + " Entitäten wurden erstellt")

Informationen über eine Datenklasse abrufen

Die Methode getInfo() member-Methode, die für die dataClass verfügbar ist, gibt ebenfalls nützliche Informationen zurück. Im folgenden Beispiel erhalten wir IDs, die mit dem Primärschlüssel der Persons dataClass übereinstimmen, und rufen dann die entsprechenden Entitäten ab.

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)

dataclass-Attribut

Mit 4D V17.0 haben Sie gelernt, dass jedes dataClass Attribut ein Objekt ist. Sie wurden nun um konzeptionelle und strukturelle Informationen erweitert.

Hier ist ein kurzes Beispiel.

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}

Laden Sie den obigen HDI herunter, um mehr zu erfahren! Und besuchen Sie unbedingt das Doc Center.

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.