Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Official

0. Definition Businessobjekt

Problem

Der Begriff Businessobjekt ( und demzufolge auch der Begriff Objekt ) wird im Wiki widersprüchlich und verwirrend benutzt.

Ist mit Businessobjekt eine betriebliche Ressource gemeint, wie zum Beispiel "ein Artikel" oder "ein Auftrag" oder "ein Kunde"? Oder ist mit Businessobjekt ein Ressourcentyp gemeint wie zum Beispiel "alle Artikel", "alle Aufträge" oder "alle Kunden"?

Dieser Wiki-Beitrag hier zeigt, wie ein Ressourcentyp definiert/geändert/entfernt wird. Mit dem Businessobjekt-Wizard erstellt man zum Beispiel die Definition und Implementierung für "alle Artikel". Dementsprechend wird im Wizard die Datenbank-Tabelle für ein Businessobjekt als Datenbank-Objekt ( Behälter für alle Ressourcen dieses Typs  ) bezeichnet.

Mit welchem Begriff wird denn "ein einzelner Artikel" bezeichnet? An einigen Stellen im Wiki findet man dafür Begriffe wie Datensatz, etc. Auch Begriffe wie "Entitäten" werden benutzt mit unbekannter Definition.

Der Objektgenerator beispielsweise erzeugt keinen Typ von Businessobjekt, sondern ein einzelnes Objekt ( Bsp ein einzelner Lieferschein ), was wohl eher ein Datensatzgenerator wäre in der Sprache von einigen Wiki-Artikeln. Der Wiki-Artikel über den Objektgenerator behilft sich zur Unterscheidung mit dem Begriff "Objekttyp". Der Objekttyp ist wohl das, was vom Businessobjekt erzeugt wird.

Vorschlag

Begriffe durchgängig präzise definieren und dabei klar ERP-Abstraktionen und Datenbank-Abstraktionen auseinanderhalten.

Die Begriffe sollten auch zwischen Usern und Entwicklern synchronisiert werden, um Widersprüche zu vermeiden. Anders gesagt, im Code, im User Interface und im Wiki werden idealerweise diesselben Begriffe für dasselbe benutzt. Vielleicht sollte auch jedem deutschen Begriff die englische Entsprechnung gegenüber gestellt werden. Kann man das irgendwie in die Wege leiten?

Vorschlag Glossar
  • Businessobjekt-Typ: Definition und Implementierung eines Objekttyps (Bsp: Kunden, Aufträge).
  • Standard-Businessobjekt: Objekt, dessen Attribute in einer Datenbank-Tabelle gespeichert sind ( Bsp: ein Kunde, ein Auftrag ).
  • Virtuelles Businessobjekt: lesbares Objekt, das auf einer Datenbank-View basiert.
  • etc ...


In einem Businessobjekt werden alle Dinge eines Unternehmens eingeordnet. Typische Beispiele sind z.B. "Kunde", "Artikel" oder "Auftrag". Businessobjekte können, müssen aber nicht, ein Statusmodell haben.

Im Folgenden wird ausführlich und Schritt für Schritt erklärt wie sich ein Businessobjekt anlegen lässt und Erklärungen zu verschiedenen Einstellungen. 

1. Businessobjekt erstellen / ändern / entfernen

 

Die erste Seite des BO-Wizard gibt einen Überblick über die existierenden Businessobjekte.

Im Bereich Spalten kann die Ansicht über das Feld "Name" gefiltert werden. Desweiten können Spalten ein- oder ausgeblendet werden, indem die Checkboxen aktiviert oder deaktiviert werden. Weitere Filtermöglichkeiten über die Werte der einzelnen Spalten ergeben sich über die Auswahl eines Wertes aus der Combobox.

Die eingeblendeten Spalten können außerdem alphabetisch sortiert werden, indem auf den jeweiligen Spaltenheader geklickt wird.

  • Neues Businessobjekt erstellen: um ein neues BO anzulegen, wird im oberen Textfeld der Name eingegeben und ein ensprechendes Nuclet gewählt werden. Ist der Name in diesem Nuclet bereits vergeben, wird eine Meldung ausgegeben. Somit ist es möglich, gleichnamige Businessobekte anzulegen sofern diese nicht dem gleichen Nuclet zugeordnet sind.

    Anhand dieses Namens wird später auch der Tabellenname der Datenbank erzeugt.

    Der Interne Name darf aus max. 25 Zeichen bestehen.

  • Bestehendes Businessobjekt ändern: um ein BO zu ändern, wird dieses in der Liste markiert und auf weiter geklickt. Die weitere Bearbeitung findet in den unten folgenden Schritten statt.

  • Bestehendes Businessobjekt löschen: markieren Sie das zu löschende BO in der Liste und klicken Sie auf Businessobjekt entfernen.

    Ein BO kann erst gelöscht werden, wenn kein anderes BO darauf referenziert.

    Ein entfernes BO kann nicht wieder hergestellt werden

2. Allgemeine Eigenschaften


 

 

Hier werden alle allgemeinen Eigenschaften für das Businessobjekt festgelegt.

  • Beschriftung und Fenstertitel: Beschriftung des Fensters (für die BO-Maske) anpassen
  • Pfad im Menü: Unter welchem Menüpunkt soll das BO aufrufbar sein. Unterordner werden durch einen " \ " getrennt.
  • Benutzerdefiniertes Icon: Anstelle der vorgegebenen Icons können auch eigene genutzt werden (müssen als Ressource angelegt werden)
  • Tastenkürzel: Es können Tastenkombinationen zum Öffnen der BO-Maske angegeben werden
  • Suchmaske erforderlich?: Falls für das BO eine Suchmaske (Suche nach Attributen) benötigt wird

  • Suchmaske direkt öffnen?: Soll beim Öffnen des BO direkt eine Suchmaske geöffnet werden, ansonsten wird initial die Listenansicht geöffnet.
  • Ist das BO änderbar?: Sollen Daten des BO änderbar sein oder schreibgeschützt. Im schreibgeschützten Modus sind alle Buttons deaktiviert.
  • geplittete Anzeige: Es wird innerhalb eines Fensters die Suchmaske und Suchergebnisse angezeigt
  • Historie: Daten eines BO können historisiert werden.
  • Statusmodell: Das BO enthält ein Statusmodell. Die Definition eines Statusmodells ist dann Pflicht.
  • Kürzel für Identifizierer: Kürzel für Datensatzidentifizierer. Dieser setzt sich zusammen aus
    <Kürzel><MM><YY>-<fortlaufende Nummer>. Beispiel: KU0716-00001. 

    Der Identifizierer kann nur im Zusammenhang mit einem Statusmodell aktiviert werden.

  • Zeige Relationen im Baum: Relationen werden im Explorerbaum angezeigt. Nur möglich bei BOs mit Statusmodell.

    Diese Funktion ist veraltet und wurde abgelöst durch die Konfiguration der Baumdarstellung (siehe unten).
  • Zeige Gruppen im Baum: Gruppen werden im Explorerbaum angezeigt. Nur möglich bei BOs mit Statusmodell.

    Diese Funktion ist veraltet und wurde abgelöst durch die Mandantenfähigkeit.

  • Mandantenabhängigkeit: Zuordnung einer Mandantenebene und somit die Aktivierung der Mandantenfähigkeit für dieses BO. Details siehe Mandantenwesen
  • Mandanten Erstbefüllung mit: Mandantenzuordnung bei Neuanlage eines Datensatzes.
  • Eindeutigkeit pro Mandant?: (ab Nuclos v4.25) Wenn eindeutige Attribute für dieses BO existieren, so wird der Mandant ebenfalls Teil des Schlüssels (Unique Keys). Damit kann z.B. ein Artikelname, obwohl als eindeutig definiert, pro Mandant einmalig verwendet werden. Gibt es keine eindeutigen Attribute wird diese Information ignoriert, bis das erste eindeutige Attribut angelegt wird. Achtung: Die Geschäftslogik sollte auf Konflikte geprüft werden! Es könnte z.B. mandantenübergreifende Import Jobs geben die, wenn über einen Artikelnamen ein Artikel gesucht, erwarten, dass nur ein Datensatz gefunden wird. Auch Datenbank Prozeduren gehören zu den zu überprüfenden Komponenten.
  • Kommentar: Kommentar für das BO
  • Virtuelles BO: Auswahl eines vorher definierten virtuellen Businessobjektes. Die entsprechenden Spalten werden im nächsten Schritt als Attribute aufgelistet. 
  • Schreib-Proxy BO: Dadurch wird das Businessobjekt als Interface angelegt, z.B. um in einer Regel verwendet zu werden mit den Methoden zur Modifikation und Erstellung von Datensätzen. Gelesen werden die Daten aus der View die im virtuellem BO hinterlegt sind. Im Ergebnis ist  das virtuelle BO  änderbar. 
  • Id Factory für VE: Auswahl einer vorher definierten Datenbankfunktion für die erzeugung einer ID, falls neue Daten eines virtuellen BOs erzeugt werden sollen.
  • Thin Businessobjekt: Von der API werden keine Referenzattribute dieses BOs mehr aufgelöst, es gibt also nur noch die reinen ...Id(...) Methoden, wie z.B. die Methode "getKundeId()". "getKunde()" wird eingespart, womit die Performance gesteigert werden kann.
  • Proxy BO: Dadurch wird das Businessobjekt als Interface angelegt, z.B. um in einer Regel verwendet zu werden
  • Proxy Interface: Muss von einer Regelklasse implementiert werden. Wichtig, die Implements-Anweisung muss voll qualifiziert mit Package angegeben werden, damit Nuclos die Implementierung erkennt. Also z.B. "class MyProxyImpl implements de.mein.nuclet.MyProxyBO ..."
  • Generisches Businessobjekt: dieses BO ist mit dem Setzen dieses Hakens als generisches BO für die Verwendung einer Generische Implementierung definiert.
  • Tabellenname: Der Tabellenname eines Businessobjekts kann verändert/angepasst werden.
  • Interner BO Name: Der interne Businessobjekt-Name kann ebenso angepasst werden. Er ist die Grundlage für die Methodenbenennungen in der BusinessRule API.
  • Objektgenerator für Klonen: Objektgenerator der ausgeführt wird, wenn der Klonen-Button betätigt wird.

 

3. Definition von Attributen

 

 

 

Es gibt 3 Arten um Attribute für ein BO zu erfassen: manuell, aus einem anderen BO oder einer Datenbanktabelle übernehmen.

Vorgehensweise wenn man Attribute aus anderer Quelle übernehmen will:

  1. Auswahl eines BO/Tabelle aus einer Dropdownliste
  2. Liste aller darin enthaltenen Attribute
  3. Auswahl welche dieser Attribute man übernehmen will

4. Attribute bearbeiten



 

Hier werden die Attribute des BOs gepflegt.

Die weiß hinterlegten Spalten, können direkt in dieser Liste verändert werden, ansonsten über "Attribut bearbeiten".

Mit den Pfeilbuttons wird die Reihenfolge der Attribute festgelegt. Diese wird in der Listenansicht als Default herangezogen.

Attribute können ebenfalls via Drag&Drop an die gewünscht Stelle gezogen werden.

 

Mit dieser Schaltfläche werden die nuclosinternen Felder eingeblendet, so dass man auch für diese bestimmte Eigenschaften anpassen kann, z.B. Anzeigename, Attributgruppe, Versteckt usw. Interne Bezeichnungen oder Feldbreiten sind hier nicht änderbar !

 

Neues Attribut hinzufügen, markiertes Attribut löschen oder markiertes Attribut bearbeiten (auch Doppelklick möglich).

 

Dunkelblaue Attribute repräsentieren Referenzen auf Integrationspunkte, angelehnt an den Regelmanager, welcher ebenfalls Integrationspunkte dunkelblau darstellt.

Eigenschaften der Attribute

                       

 

Folgende Felder können ausgefüllt werden:

  • Anzeigename: wird als Label im Layout und bei sonstigen Beschriftungen angezeigt
  • Beschreibung: wird als Tooltip auf dem Feld angezeigt
  • Datentyp: Datentyp für das Feld. Erläuterungen s.u.). Die restlichen (ausgegrauten) Felder werden durch Auswahl des Datentyps ausgefüllt.
  • Mindestwert: nur bei Zahlen- und Datumstypen. Validierung bei der Dateneingabe
  • Maximalwert: nur bei Zahlen- und Datumstypen. Validierung bei der Dateneingabe
  • Mehrsprachigkeit: Aktivierung der Mehrsprachigkeitsfunktion für dieses Attribut. Im Datensatz erscheint dann ein Icon für die Eingabe der Übersetzungen.
  • Kommentar: interner Kommentar

 

 

Datentypen

Es gibt verschiedene vordefinierte Datentypen (Tabelle) die standardmäßig zur Verfügung stehen, es können allerdings auch neue definiert werden.

DatentypJavatypDatenbanktypLängeBemerkung
Textjava.lang.Stringvarchar255Textfeld mit 255 Zeichen
Datumjava.util.Datedate 

Datumsfeld (ohne Uhrzeit).

Definition eines Ausgabeformates über Pattern möglich.

dd.MM.yyyy

erzeugt z.B. 15.07.2015

Dokumentenanhang blob255Näheres unter Spezielle Datentypen 
Ganzzahljava.lang.Integernumber9Ganzahl mit 9 Stellen
Kommazahl (9,4)java.lang.Doublenumber9

Kommazahl mit 9 Stellen insgesamt, davon 2 Nachkommastellen.

Definition eines Ausgabeformates über Pattern möglich.

#,##0.00

erzeugt z.B. 1.248,40

Ja/Neinjava.langBooleannumber1Null-Werte nicht möglich. Attribut muss ein Pflichtfeld sein.
Verschlüsselter Text varchar255Näheres unter Spezielle Datentypen
Bild blob255Näheres unter Spezielle Datentypen 
Autonummerjava.lang.Integernumber9Näheres unter Spezielle Datentypen
Referenzfeldjava.lang.Stringvarchar255Referenz zu anderen Businessobjekten
Nachschlagefeldjava.lang.Stringvarchar255Nachschlagefeld zu anderen Businessobjekten. Unterschied zu Referenzfeld: ein Nachschlagefeld bietet eine Auswahlkomponente auf ein Referenz-BO, gespeichert wird aber nur der Text. Verwendungszweck: erleichterte Eingabe für den Anwender bei z.B. Titel, Anrede usw. Anwender soll Auswahlmöglichkeiten erhalten statt eigenen Text einzugeben.
Emailjava.lang.Stringvarchar255Näheres unter Datenkomponenten
PhoneNumberjava.lang.Stringvarchar255Näheres unter Datenkomponenten
Hyperlinkjava.lang.Stringvarchar1000Näheres unter Datenkomponenten
Memojava.lang.Stringvarchar4000 
Text (Large Object)java.lang.Stringclob 2147483647 
Binär (Large Object) blob  


                         

Verknüpfung zu anderen BOs (Referenzfeld)  / Nachschlagefeld

  • Verweis: Angabe des BOs, das referenziert werden soll
  • Kaskadiert löschen: wird der Datensatz gelöscht, so wird auch der Datensatz der Referenz gelöscht
  • Suchfeld: im Layout wird per Default eine LOV Komponente eingebunden. Kann aber nachträglich geändert werden. Für den Webclient ist diese Einstellung nicht relevant 

Für die Anzeige der Daten im Referenzfeld können Attribute des referenzierten BOs ausgewählt und mittels statischen Zeichen verkettet werden.

        Beispiel: ${kundennummer} - ${name}

                   

                       

Übersetzung von Attributen

Je nachdem mit welcher Sprache sich ein Anwender im Logindialog anmeldet, wird die entsprechende Übersetzung in den Labels angezeigt.

                       

Allgemeine Eigenschaften von Attributen

  • Feldname: Identifizierung des Attributs innerhalb von Regeln und im Layouteditor. Der Feldname kann nachträglich gändert werden.
  • Standardwert: wird in einem neuen Datensatz per Default eingetragen
  • Eindeutig: Wert ist über alle Datensätze eindeutig. Sind mehrere Attribute eines BOs als Eindeutig markiert sind diese Felder immer in Kombination eindeutig. Soll die Eindeutigkeit nachträglich hinzugefügt werden, ist das aktuell nur möglich solange keine Daten existieren, ansonsten ist der Haken ausgegraut

    Wenn es nicht möglich ist die Daten zu löschen, kann auch folgendermaßen vorgegangen werden. Voraussetzung: Die Eindeutigkeit der vorhandenen Daten ist sichergestellt !

    Nuclet in Verzeichnisstruktur exportieren
    Entsprechende .eoml Datei im Tag <unique> verändern
    Nuclet importieren.

  • Historie: dieses Attribut wird historisiert)
  • Pflichtfeld: Validierung bei der Dateneingabe. Soll das Pflichtfeld nachträglich hinzugefügt werden, so muss ein Wert angegeben werden. Dieser wird bei allen bestehenden Daten eingetragen.
  • Hintergrundfarbe: Groovy-Skriptcode für Hintergrundfarbe des Feldes
  • Attributgruppe: Zuweisung einer Attributgruppe. Wird für statusabhängige Berechtigungen verwendet
  • Berechnungsvorschrift: Datenquelle oder Datenbankobjekt die immer beim Lesen des Datensatzes aus der Datenbank einen berechneten Wert liefern. Keine Aktualisierung während der Erfassung.
  • Bererechnungsausdruck: Groovy-Skriptcode für Dateninhalt. Dieser Ausdruck wird unmittelbar bei Änderungen in der Maske ausgeführt. So erhalten die Anwender das Berechnungsergebnis sofort nach Eingabe eines Werts. Siehe dazu Clientseitige Regeln (Groovy)
  • DB-Spaltenname: kann nachträglich geändert werden
  • Indiziert: falls erwünscht, kann ein datenbankseitiger Index generiert werden
  • Versteckt: wenn aktiv, ist dieses Attribut für den Anwender nicht in der Spaltenauswahl sichtbar. Wird verwendet, wenn es sich um interne Attribute handelt, die für den Anwender nicht relevant sind

5. Aktionen definieren

 

 

In diesem Bereich können Aktionen für das BO definiert werden. Mit dem Aktionsmechanismus hat man die Möglichkeit, für ein BO verschiedene Layouts zu gestalten oder verschiedene Prozesse (Statusmodelle) zu durchlaufen.

Anwendungsfall: die Eingabemaske für Kunde der Aktion "Unternehmen" hat Eingabefelder wie Standort, Abteilung oder USt-Identifikationsnummer, die ein Privatkunde nicht hat.

Für weitere Informationen siehe Aktionen

6. Menü konfigurieren

 

 

Dieser Bereich der Menükonfiguration stellt eine Verfeinerung des Menüpfades unter Schritt 2 dar und ist optional.

Man kann Menüpfade aktionsabhängig konfigurieren oder auch die Neuanlage eines Datensatzes in einem anderen Menübereich platzieren.

Ist der Haken "Neu?" aktiviert, so wird sofort die Eingabemaske für einen neuen Datensatz geöffnet, ohne in der Suchliste bzw. Suchmaske zu starten.

 

7. Beschriftung und Baumdarstellung definieren

 

 

  • Titel: der Inhalt der definierten Attribute inkl. statischem Text werden im Fenstertitel, Historie, Baumdarstellung etc. angezeigt. Beispiel:
    ${kundenname}(${kundennummer}) - ${nuclosState}  -> Kunde AG(1001) - Aktiv
  • Info: der Inhalt der definierten Attribute inkl. statischem Text wird im Tooltip angzeigt
  • Verzeichnispfad: ausgehend des Pfades für die Dokumentenablage in server.properties, kann an dieser Stelle eine Pfaderweiterung konfiguriert werden, in dem die Dokumente abgelegt werden. Im Beispiel sollen Dateien des Kunden in einem speziellen Unterordner "Kundendokumente" abgelegt werden.
    Ergebnis:

  • Felder für Verlgeich in der Sammelbearbeitung: nur relevant, wenn das BO als Unterformular eingebunden ist. Die hier angegebenen Attribute, werden in ihrer Kombination als Eindeutigkeit für die Sammelbearbeitung des Hauptdatensatzes herangezogen. Sind die Daten der hier angegebenen Felder gleich, so wird die Zeile in der Sammelbearbeitung entsprechend markiert bzw. zur Bearbeitung angeboten.
    Wenn hier nichts angegeben ist, wird die Eindeutigkeit über alle Felder bestimmt, was häufig nicht sinnvoll ist.

    

Baumdarstellung

In der Baumdarstellung können alle BOs eingebunden werden, die einen Fremdschlüssel auf das Haupt-Businessobjekt haben. Knoten können über das Kontextmenü hinzugefügt, gelöscht oder bearbeitet werden. Per Drag&Drop kann die Position der Unterknoten verändert werden. Die Unterelemente werden dann in dieser Reihenfolge angezeigt.

 

 

                         

Unterknoten bearbeiten

  • Entität: Auswahl des BOs, dessen Datensätze als Unterknoten angezeigt werden sollen. Ausgewählt werden können Businessobjekt welche auf das gerade bearbeitete Businessobjekt referenzieren sowie Dynamische Businessobjekte und die generischen Dokumentenanhangsobjekte von Nuclos.
  • Aktiv: Unterknoten aktivieren / deaktivieren. Deaktivierte Knoten werden hier grau dargestellt und sind für den Anwender nicht sichtbar.
  • Knotenkonfiguration erben: (optional) Für die Knotenkonfiguration der Unterknoten wird die Knotenkonfiguration der in "Businessobjekt" ausgewählten Businessobjekt verwendet. Dies funktioniert nicht mit Dynamischen Businessobjekten.
  • Knoten: (optional) Attribute und statischer Text, der im Unterknoten angezeigt wird. Wird hier nichts eingetragen wird der Wert aus dem in "Businessobjekt" ausgewählten Businessobjekt verwendet. Ist auch hier nichts eingetragen wird der lokalisierte Businessobjektname verwendet.
  • Knoten Tooltip: (optional) Attribute und statischer Text, der als Tooltip auf dem Unterknoten angezeigt wird. Wird hier nichts eingetragen wird der Wert aus dem in "Businessobjekt" ausgewählten Businessobjekt verwendet. Ist auch hier nichts eingetragen wird der lokalisierte Businessobjektname verwendet.
  • Referenzfeld: (optional) Attribut mit der Referenz zum Hauptknoten. Wird dieses Feld leer gelassen, werden alle Businessobjekte angezeigt.
  • Referenz zu Wurzelknoten:(optional) Referenz aus dem in "Businessobjekt" ausgewählten Businessobjekt auf das aktuell bearbeitete Businessobjekt. Wird dieses Feld leer gelassen, wird keine Einschränkung vorgenommen.
  • Gruppierung durch Felder: (optional) Angabe von einem oder mehreren Attributen mit Leerzeichen getrennt. In der angegebenen Reihenfolge werden je nach Gleichheit der Feldinhalte Unterordner gebildet. Beispiele:
      
  • Entität in Ordner: ist dieser Haken aktiviert, so wird das BO als übergeorneter Ordner angezeigt.
    Beispiel:
        


8. Rechte und Sperrfunktion verwalten

 

 

In diesem Bereich werden alle existierenden Benutzergruppen aufgelistet. Die entsprechenden Berechtigungen für dieses BO können an dieser Stelle gepflegt werden.

Desweiteren kann dieses BO für die Sperrfunktion aktiviert und entsprechend konfiguriert werden. Details siehe Sperrlogik

9. Übersetzen

 

 

 

Für das Businessobjekt und den Menüpfad können Übersetzungen gepflegt werden,
ebenso die Knotendarstellung und das Tooltip können angepasst werden.

10. Darstellung konfigurieren

 

 

 

Für jedes Businessobjekt kann man automatisch ein Layout generieren lassen bzw. auch ein vorhandenes Layout aktualisieren.

Das bereits bestehende Layout wird dabei überschrieben !

 

Hintergrundfarbe: Groovy-Skript für die Farbe der Zeilendarstellung. Gilt für Suchergebnislisten und für Unterformulare. Siehe dazu Clientseitige Regeln (Groovy)

Maske aktualisieren ?: ist dieser Haken aktiviert, so wird das Layout neu erzeugt bzw. das Vorhandene überschrieben

Gruppierung: die einzelnen Attribute jeder Attributgruppe werden in einem Panel zusammengefasst

Unterformulare: jedes BO mit einem Fremdschlüssel auf dieses BO wird im Layout als Unterformular eingefügt.

Editierungsfelder: CreatedAt, CreatedBy, ChangedAt und ChangedBy werden im Layout eingefügt

Reihenfolge: hier wird die Reihenfolge der Attribute im Layout definiert. Die Attribute werden alle untereinander in einem Panel angeordnet.

 

Featureentwicklung

Verfügbar ab VersionNeues Feature
4.13Filter- und sortierfunktion der Businessobjekte (erste Seite im BO-Wizard)