ORDA – Erste Schritte mit dem Entitätskonstruktor

Automatisch übersetzt von Deepl

Die 4D Sprache unterstützt das Konzept der Klassen und damit das Konzept der constructor.

Andererseits bietet die ORDA-Abstraktionsschicht durch Datenmodellklassen einen großen geschäftlichen Nutzen. Sie ermöglicht es Ihnen, geschäftsorientierten Code zu schreiben und ihn wie eine API zu veröffentlichen“. Datenspeicher, Datenklassen, Entitätsselektionen und Entitäten sind alle als Klassenobjekte verfügbar, die sowohl Funktionen als auch berechnete Attribute und Aliase enthalten können.

Dies führt dazu, dass Ihre Anwendungen leicht den MVC-Prinzipien folgen, mit leistungsstarkem und optimiertem Code.

Um mit einem vollständig objektorientierten Ansatz zu arbeiten, können Entity-Klassen ab 4D 20 R10 nun eine constructor() haben. Müssen Sie Anfangswerte festlegen, wenn eine neue Entity instanziiert wird? Das ist jetzt möglich! Lesen Sie weiter, um mehr zu erfahren …

HDI_ORDA_Konstruktor

Mit ORDA-Datenmodellklassen werden Daten über Entitäten gehandhabt, die Instanzen der Entitätsklassen sind, die Sie in Ihrer Struktur haben.

Mit 4D 20 R10 haben Sie die Möglichkeit, eine constructor() für Entitäten zu implementieren.

Der Entity-Konstruktor

Um mit einem vollständig objektorientierten Ansatz zu arbeiten, können Entity-Klassen ab 4D 20 R10 nun einen constructor() haben, der bei ihrer Instanziierung ausgeführt wird.

Dies ist der perfekte Weg, um einige Standardwerte zu initialisieren, wie z.B. einen Stempel oder ein createdBy-Attribut.

Vorher mussten Sie dazu wahrscheinlich eine createNew() Funktion in der entsprechenden Datenklasse implementieren. Bei einer Datenklasse Products müssen Ihre Entwickler wissen, dass es eine Funktion createNew() in dieser Klasse gibt und dass sie diese verwenden müssen, anstatt natürlich eine Products-Entität mit ds zu instanziieren.Products.new().

Um ein neues Produkt zu erstellen, müssen sie das tun:

Form.product:=ds.Products.createNew()

wie man den Konstruktor implementiert

Implementieren Sie einfach die constructor() in der Entitätsklasse.

Hier ist die ProductsEntity Klasse:

Class extends Entity

Class constructor()

This.stamp:=Timestamp()
This.createdBy:=Current user()

Und der aufrufende Code ist so logisch. Wenn Sie zum Beispiel auf die Schaltfläche „Produkt erstellen“ in einem Formular klicken, machen Sie einfach:

Form.product:=ds.Products.new()

und die Entität Form.product wird mit den Attributen stamp und createdBy korrekt ausgefüllt!

Die constructor() wird nicht nur durch den Aufruf der new() Funktion ausgelöst. Unabhängig davon, mit welchen Mitteln die Entität instanziiert wird, wird der Konstruktor ausgelöst.

Er kann auch sein:

– der Datenexplorer (beim Erstellen einer neuen Entität)

– die Funktion fromCollection()

– ein REST-API-Aufruf zur Erstellung einer neuen Entität auf dem Server(z. B. $method=update)

– Code, der auf dem REST-Server läuft und eine Entität verarbeitet, die auf einem Client wie einem Qodly-App-Frontend oder einem 4D-Client unter Verwendung eines entfernten Datenspeichers instanziiert wurde.

Andere Beispiele

Angesichts dieser REST-Anfrage:

127.0.0.1/rest/Products?method=update

Ausführen mit einem POST mit dem Body:

[
{"name": "Red pack", "price": 50}
]

Hier ist das Ergebnis im Datenexplorer. Beachten Sie die Werte für die Attribute stamp und createdBy.

blank

Beim Importieren von Produkten mit der Funktion fromCollection():

var $products : cs.ProductsSelection

var $data:=New collection({name: "Red pack"; price: 50}; {name: "Green pack"; price: 10})

$products:=ds.Products.fromCollection($data)

Hier ist das Ergebnis. Beachten Sie die Werte für die Attribute stamp und createdBy.

blank

In diesem Blogpost wird erklärt, wie man die Funktion constructor() implementiert.

Wenn Sie nach der Lektüre mehr darüber erfahren möchten, wie sich constructor() in C/S oder mit 4D Qodly pro verhält oder wenn Sie mit einem entfernten Datenspeicher arbeiten, lesen Sie diesen Blogpost.

Lesen Sie die Dokumentation, um mehr zu erfahren und mit dem HDI zu spielen!

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.