Skip to content
This repository was archived by the owner on Dec 11, 2025. It is now read-only.

Entitäten

seed-master edited this page Mar 1, 2023 · 33 revisions

Einleitung

Entitäten repräsentieren Datenobjekte, die in Datenbank-Tabellen gespeichert werden. Sie stehen zusätzlich als generierte Java-Klasse zur Verfügung, um sie in Formularen darzustellen und in Funktionen, Callback-Funktionen und Jobs über die API anzusprechen. Der Zugriff auf Entitäten kann über eine Rollen-basierte Rechteverwaltung eingeschränkt werden.

Entitäten bestehen aus Feldern verschiedener Datentypen, denen Feldgruppen zugeordnet werden können. Für jedes Feld können beliebige Einschränkungen bezüglich Sicht- und Bearbeitbarkeit definiert werden.

Entitäten können Unterobjekte haben, deren Entität ein Referenzfeld auf die übergeordnete Entität besitzt. Sie stehen als Liste in der Java-Klasse zur Verfügung.

Entitäten können Beziehungen zu anderen Entitäten haben. Diese werden über intern verwaltete n : m - Relationen abgebildet. Die in Beziehung stehenden Objekte stehen als Liste in der Java-Klasse zur Verfügung.

Entitäten können über ein Statutsmodell verfügen. Statusmodelle bestehen aus einer Menge von Status und Statusübergängen zwischen diesen. Statusübergänge können benutzerdefinierte Aktionen auslösen.

Es können benutzerdefinierte Funktionen oder Callback-Funktionen definiert werden, die bei bestimmten Ereignissen aufgerufen werden.

Entitäten können einem Modul zugeordnet werden.

Entitäten können versioniert werden. Dadurch wird beim Speichern eines Datenobjekts dessen vorheriger Zustand archiviert. Die verschiedenen Versionen eines Datenobjekts können in einer Historie eingesehen werden.

Entität erstellen

Unter dem Menüpunkt Administration / Entitäten wird über die Schaltfläche Neue Entität eine neue Entität erstellt.

Im anschließenden Dialog muß ein Name für die Entität gewählt werden.

Eine generische Entität ist eine Muster-Entität, auf der andere Entitäten basieren können. Generische Entitäten repräsentieren keine Datenbank-Tabellen, so das keine konkreten Objekte der Entität erzeugt werden können.

⚠️ Diese Einstellung kann später nicht mehr verändert werden

Ein Unterobjekt ist eine Entität, die beim Speichern zusätzlich als Unterobjekt einer anderen Entität registriert wird. Dazu wird automatisch ein Referenzfeld zu dieser erstellt. Die Hauptentität muß beim Erstellen angegeben werden.

Datenobjekte von Stammdaten-Entitäten sind Bestandteil eines Moduls und werden mit diesem im- und exportiert.

⚠️ Diese Einstellung kann später nicht mehr verändert werden

Datenobjekte von Entitäten können versioniert werden. Dadurch wird beim Speichern der vorherige Zustand des Objekts archiviert.

Durch die Option automatisches Formular wird ein automatisches Formular zur Anzeige erzeugt. Automatische Formulare werden bei jeder Änderung der Entität angepasst.

Entität bearbeiten

Der Name bezeichnet den eindeutigen Namen der Entitität. Für die Tabelle und Java-Klasse wird ggf. ein abgewandelter Name verwendet, da dort nicht alle Zeichen erlaubt sind. Dieser interne Name wird als Tooltip über dem Namen angezeigt.

Der Identifizierer bezeichnet ein Muster, das zur Darstellung der Entität z.B. in Referenzfeldern dient. Feldnamen müssen dabei in geschweifte Klammern gesetzt werden. Wenn kein Identifizierer angegeben wird, verwendet das System einen aus dem Entitätsnamen und dem ersten Autonum- oder Textfeld-Namen hergeleiteten Identifizierer.

Basiert auf bezeichnet den Namen der generischen Entität, wenn diese vorhanden ist. Eine generische Entität ist eine Musterentität, auf der diese Entität basiert.

Der Tabellenname bezeichnet den Namen der Datenbank-Tabelle. Wenn kein Tabellenname angegeben wird, verwendet das System einen aus dem Namen hergeleiteten Tabellennamen.

Die Versionierung aktiviert die Archivierung historischer Versionen der Datenobjekte.

Felder

Felder entsprechen Spalten in einer Datenbank-Tabelle und Objektvariablen in der generierten Java-Klasse.

Der Feldname bezeichnet den eindeutigen Namen des Feldes. Intern wird ggf. ein abgewandelter Name verwendet, der als Tooltip über dem Feldnamen angezeigt wird.

Der Spaltenname bezeichnet den Namen der Datenbank-Tabellenspalte. Wenn kein Spaltenname angegeben wird, verwendet das System einen aus dem Feldnamen hergeleiteten Spaltennamen.

Ein Feld kann einer Feldgruppe angehören. Feldgruppen werden z.B. zum Gruppieren von Feldern in automatischen Layouts verwendet.

Der Datentyp definiert den Datentyp der Datenbank-Tabellenspalte und der Objektvariablen in der generierten Java-Klasse.

Die Länge definiert die Größe der Datenbank-Tabellenspalte. Wenn kein Wert angegeben wird, verwendet das System einen Standardwert.

Automatische Nummern bestehen im einfachsten Fall nur aus einer fortlaufenden Nummer beginnt bei 1. Es kann auch ein anderer Startwert angegeben werden sowie ein Muster, welches der Zahl vorangestellt wird.

Das Muster kann Bestandteile des aktuellen Datums enthalten, z.B. {yyyy} für das aktuelle Jahr und {MM} für den aktuellen Monat. Muster, die Datumsbestandteile enthalten, setzen bei deren Überlauf, also z.B. im neuen Jahr, den Zähler auf den Startwert zurück.

Optionen

Ein Pflichtfeld bezeichnet ein Feld, das ausgefüllt werden muss. Die entsprechende Datenbank-Tabellenspalte ist als NOT NULL definiert.

In einem eindeutigen Feld müssen die Werte einer Spalte über alle Objekte einer Entität eindeutig sein. Die Datenbank-Tabellenspalte hat ein UNIQUE KEY constraint.

Für indexierte Felder wird ein Datenbank-Index für die Tabellenspalte erzeugt. Ein Index ermöglicht eine beschleunigte Suche.

Feldinhalte, für deren Felder die Volltextsuche aktiviert ist, werden über die Volltextsuche gefunden.
(Diese Option steht nur zur Verfügung ein Volltextsuche-Server konfiguriert ist)

Berechnete Felder stellen selbst keine Tabellenspalte dar, sondern werden über eine Berechnungsformel erzeugt. Eine Berechnungsformel ist ein SQL-Fragment, in dem Felder der Entität verwendet werden können.

Datentypen

Datentyp Java-Typ Liquibase-Typ DB-Typ (postgres)
Automatische Nummer String VARCHAR varchar
Bild byte[] BLOB bytea
Ja / Nein boolean BOOLEAN boolean NOT NULL
Datum Date DATE date
Datum & Zeit Date DATETIME timestamp
Dezimalzahl BigDecimal DECIMAL numeric
Gleitkommazahl Double DOUBLE double precision
Datei FileObject BIGINT bigint
Ganzzahl Integer INT integer
Ganzzahl (lang) Long BIGINT bigint
Referenz Object BIGINT bigint
Text String VARCHAR varchar
Text (lang) String CLOB text

Feldgruppen

Durch Feldgruppen können Felder zu logischen Einheiten zusammengefasst werden. Feldgruppen werden in Feldeinschränkungen verwendet und bei der automatischen Layout-Erzeugung berücksichtigt.

Der Name bezeichnet den eindeutigen Namen der Feldgruppe.

Feldeinschränkungen

ℹ️ : Feldeinschränkungen stehen nur zur Verfügung, wenn mind. ein Feld und mind. eine Rolle oder ein Statusmodell definiert wurde.

Über Feldeinschränkungen können Einschränkungen der Sicht- und Bearbeitbarkeit von Feldern in Abhängigkeit eines Status und / oder der Rollen-Zugehörigkeit des Benutzers definiert werden. Statt einzelner Felder können auch Feldgruppen angegeben werden. In diesem Fall gilt die Einschränkung für alle Felder, die der entsprechenden Gruppe angehören.

Es muss ein Feld oder eine Feldgruppe angegeben werden. Die Auswahl eine Feldgruppe steht nur zur Verfügung, wenn mind. eine Feldgruppe angelegt werde.

Der Status gibt an, bei welchem Status der Entität die Einschränkung wirksam sein soll. Diese Auswahl steht nur zur Verfügung, wenn ein Statutsmodell für diese Entität definiert wurde.

Die Rolle gibt an, für welche Benutzer-Rolle die Einschränkung gelten soll. Diese Auswahl steht nur zur Verfügung, wenn mind. eine Rolle angelegt wurde. Auch die Kombination von Rolle und Status ist möglich.

Der Zugriff definiert die Art der Einschränkung. Mögliche Optionen sind: nicht sichtbar, Lesen, Schreiben

Durch die Option Pflichtfeld kann festgelegt werden, dass ein Feld oder alle Felder einer Feldgruppe in einem bestimmten Zustand als Pflichtfeld interpretiert werden soll.

In diesem Beispiel haben Benutzer der Rolle "Testrole" nur lesenden Zugriff auf die Felder der Feldgruppe "Allgemein" im Status "20 Inaktiv".

Unterobjekte

Als Unterobjekte können andere Entitäten definiert werden, die ein Referenzfeld auf die übergeordnete Entität besitzen. Unterobjekte stehen als Listen zur Verfügung und werden z.B. in Unterformularen verwendet.

Der Name bezeichnet den eindeutigen Namen des Unterobjekts.

Das Unterobjekt bezeichnet die Unterobjekt-Entität.

Das Referenz-Feld bezeichnet das Feld der Unterobjekt-Entität, das auf die Haupt-Entität referenziert.

Beziehungen

Beziehungen stellen n : m - Relationen zu anderen Entitäten dar. Im Gegensatz zu Unterobjekten muss die zugeordnete Entität kein Referenzfeld zur aktuellen Entität besitzen. Die Daten der n : m - Relation werden automatisch in einer internen Tabelle verwaltet. Die Beziehungs-Datenobjekte stehen als Liste in der Java-Klasse zur Verfügung.

Der Name bezeichnet den eindeutigen Namen der Beziehung.

Die zugeordnete Entität ist die Entität, zu der eine n : m - Relation erstellt wird.

Funktionen

Funktionen sind zusätzliche, benutzerdefinierte Methoden in der generierten Java-Klasse der Entität. Sie können in anderen Funktionen, Callback-Funktionen und Jobs verwendet werden.

Durch Anklicken von Quelltext bearbeiten... öffnet sich ein Dialog zur Eingabe des Quelltexts der Methode. Der Rückgabetyp und der Inhalt der Methode können beliebig verändert werden. Package imports sind oberhalb der Methode möglich.

Durch Kompilieren kann der Quellcode testweise kompiliert werden. Treten dabei Fehler auf, werden diese im unteren Teil des Fensters angezeigt.

Durch Änderungen verwerfen werden alle Änderung am Quelltext seit dem Öffnen des Dialogs rückgängig gemacht.

Durch Übernehmen werden die Änderungen übernommen und der Dialog geschlossen. Vorher wird der Quelltext testweise kompiliert. Treten dabei Fehler auf, wird der Dialog nicht geschlossen.

Callback-Funktionen

Callback-Funktionen stellen im Gegensatz zu Funktionen eigenständige Java-Klassen dar, die das Interface CallbackFunction implementieren und deren call Methode bei bestimmten Ereignissen, wie z.B. dem Erstellen, Speichern oder Löschen von Objekten, aufgerufen wird.

Callback-Funktionen können aktiv oder inaktiv sein. Inaktive Calllback-Funktionen werden nicht ausgeführt.

Durch Anklicken von Quelltext bearbeiten... öffnet sich ein Dialog zur Eingabe des Quelltexts der Klasse. Bis auf die Struktur, kann die Klasse beliebig ergänzt werden.

Durch Kompilieren kann der Quellcode testweise kompiliert werden. Treten dabei Fehler auf, werden diese im unteren Teil des Fensters angezeigt.

Durch Änderungen verwerfen werden alle Änderung am Quelltext seit dem Öffnen des Dialogs rückgängig gemacht.

Durch Übernehmen werden die Änderungen übernommen und der Dialog geschlossen. Vorher wird der Quelltext testweise kompiliert. Treten dabei Fehler auf, wird der Dialog nicht geschlossen.

Ereignisse

Ereignis Beschreibung
bei Erstellung Aufruf direkt nach Erzeugung der Entität. Die ID ist zu diesem Zeitpunkt null. Dient zum Initialisieren von Feldern.
bei Veränderung Aufruf bei Veränderung eines Formularfelds. Dient zum sofortigen Berechnen z.B einer Summe aus mehreren Feld-Werten.
bei Statuswechsel Aufruf vor und / oder nach einem Statusübergang.
vor Einfügen Aufruf vor 'INSERT' der Entität. Die ID ist zu diesem Zeitpunkt null. Wenn die Entität eine automatische Nummer besitzt, ist diese nun bereits gesetzt.
nach Einfügen Aufruf nach 'INSERT' der Entität. Die ID ist nun vorhanden.
vor Speichern Aufruf vor 'UPDATE' der Entität.
nach Speichern Aufruf nach 'UPDATE' der Entität.
vor Löschen Aufruf vor 'DELETE' der Entität. Die Entität existiert zu diesem Zeitpunkt noch in der DB.
nach Löschen Aufruf nach 'DELETE' der Entität. Die Entität existiert nun nicht mehr in der DB.
bei Benutzeraktion Aufruf durch eine Formular-Aktion oder durch REST-Service.

Alle Ereignisse, die vor und nach einer Aktion ausgeführt werden, verwenden zusammen mit der eigentlichen Aktion die gleiche Transaktion. Das bedeutet, dass die Aktion durch eine Exception in der vor dem Ereignis aufgerufenen Callback-Funktion oder in der nach dem Ereignis aufgerufenen Callback-Funktion abgebrochen, d.h. rückgängig gemacht wird.

Statusmodell

Entitäten, die einen Prozess darstellen oder in einem Prozess verwendet werden, können über ein Statusmodell verfügen. Ein Statusmodell besteht aus einer Menge von Status und Übergängen zwischen diesen.

Ein Status besitzt einen einen eindeutigen Statusnamen und eine Statusnummer.

Der initiale Status ist der Status, der direkt nach der Erstellung der Entität gesetzt wird. Es kann nur ein Status als initialer Status markiert werden.

Statusübergang

Ein Statusübergang besteht aus einem Quell-Status und einem Ziel-Status.

Durch einen Statusübergang können Callback-Funktionen ausgelöst werden. Zur Auswahl stehen Callback-Funktionen, bei denen das Ereignis "bei Statuswechsel" konfiguriert ist.

Es kann konfiguriert werden, ob die Callback-Funktion vor oder nach dem Statuswechsel aufgerufen wird. Es sind auch beide Optionen möglich.

Die Möglichkeit einen Statusübergang durchzuführen, kann auf bestimmte Rollen eingeschränkt werden.

Solange noch keine Berechtigung vergeben wurde, sind alle Rollen berechtigt, den Statusübergang durchzuführen.

Berechtigungen

Der Zugriff auf Entitäten kann auf bestimmte Rollen eingeschränkt werden.

Solange noch keine Berechtigungen vergeben wurden, sind alle Rollen berechtigt.

Die Art des Zugriffs kann für jede Rolle konfiguriert werden.

Zugriff Beschreibung
Lesen Die Entität darf nur gelesen werden.
Schreiben Die Entität darf gelesen und verändert werden.
Erstellen Die Entität darf gelesen und verändert werden. Zusätzlich dürfen auch neue Entitäten erzeugt werden.
Löschen Die Entität darf gelesen und verändert und gelöscht werden. Zusätzlich dürfen auch neue Entitäten erzeugt werden.

Clone this wiki locally