Programmierhandbuch: Klassifikationen

Klassifikationen werden im ERP-System verwendet, um Business Objects nach frei festlegbaren Kriterien einzuordnen. Die Einordnung einer Business-Object-Instanz in eine Klassifikation ist im Allgemeinen auf Blattebene möglich. Einige Daten wie z. B. Preise oder Frachtkosten können auch auf übergeordneten Ebenen erfasst werden. Eine Suche kann über beliebige Ebenen erfolgen.

Klassifikationen werden in Form einer Verzeichnisstruktur mit Ordnern und Blättern über mehrere Ebenen aufgebaut. Die Darstellung einer Klassifikation (Klassifikationspfad) wird aus den Identifikationen der Ebenen, getrennt durch Bindestriche von der obersten Ebene bis zum Blatt gebildet. Die Anzahl der Ebenen wird durch die Maximallänge des Klassifikationspfades auf 125 Stellen beschränkt.

Zur Veranschaulichung folgt ein Beispiel. In der nachstehenden Tabelle ist beispielhaft eine Klassifikation für Büroeinrichtungen dargestellt. Zur Büroeinrichtung zählen Möbel und Kommunikationsgeräte, die sich in Schreibtische, Bürostühle, Schränke sowie Telefone, Faxgeräte weiter unterteilen lassen. Zu Büroartikeln zählen Schreibgeräte, Papier und Ordner.

Ebene 1 Ebene 2 Ebene 3
Büroeinrichtung Möbel Schreibtische
    Bürostühle
    Schränke
  Kommunikationsgeräte Telefone
    Faxgeräte
Büroartikel Schreibgeräte  
  Papier  
  Ordner  

 

Angenommen, es sind in diesem Beispiel nur Blattknoten für Zuordnungen zu Business-Object-Instanzen erlaubt. Einem Artikel 4711 können in diesem Fall eine der Klassifikationen „Schreibtische“, „Bürostühle“, „Schränke“, „Telefone“, „Faxgeräte“, „Schreibgeräte“, „Papier“ und „Ordner“ zugeordnet werden, da dies Blattknoten sind, nicht aber „Büroeinrichtung“, „Büroartikel“, „Möbel“ und „Kommunikationsgeräte“. Bei einer Suche über die Klassifikation, bzw. nach „Büroeinrichtung-Möbel“, würde die Ergebnismenge alle Schreibtische, Bürostühle und Schränke enthalten. Ebenso könnte man dieser Klassifikation Rabatte zuordnen (Preisfindung). Wenn ein Schreibtisch verkauft wird und für die Klassifikation „Büroeinrichtung-Möbel“ 10 % Rabatt definiert sind, werden vom Verkaufspreis des Tisches 10 % als Rabatt abgezogen.

8.1 Erstellung von Klassifikationen

Zu jeder systemdefinierten Klassifikation gibt es ein eigenes Business Object, so wird z. B. in dem Business Object com.cisag.app.sales.obj.SalesItemHierarchy1 die „Vertriebsartikel-Klassifikation 1“ abgebildet. Solche Business Objects müssen das Interface com.cisag.pgm.datatype.CisHierarchy implementieren. Sie werden dadurch vom System bei der Generierung und in der Anwendung „Klassifikationen“ erkannt. Der Grundaufbau der Business Objects ist immer gleich. Die nachfolgende Tabelle listet die stets vorhandenen Attribute auf:

Attribut Erläuterung
guid (PK) Primärschlüssel
path (SK) eindeutiger Klassifikationspfad
parent (BK) GUID des übergeordneten Knotens (ZEROGUID bei den obersten Knoten)
code (BK) Identifikation
description eine aussagekräftige Bezeichnung
level die Klassifikationsebene
leaf Kennzeichen, ob es sich um einen Blattknoten handelt

 

Organisationabhängige Klassifikationen

In Multi-Site-Systemen können Klassifikationsdaten organisationsabhängig erfasst werden, d. h. unterschiedliche Organisationen haben unterschiedliche Klassifikationsstrukturen für die gleiche Klassifikation. Um eine organisationsabhängige Klassifikation anzulegen, erweitern Sie das Business Object um das Attribut organizationalUnit. Dieses Attribut ist das erste Attribut im Business Key (organisationalUnit, parent, code) und im Secondary Key (organizationalUnit, path)

8.2 Klassifikationsdaten erfassen

Zur Erfassung von Klassifikationsdaten verwenden Sie die Anwendung “Klassifikationen”. Die Daten werden in dem zur Klassifikation angelegten Business Object gespeichert. Die folgende Tabelle zeigt die Beispieldaten, die zum oben stehenden Beispiel erfasst wurden.

guid path parent code description level leaf
0x1 BE 0x0 BE Büroeinrichtung 1 false
0x2 BE-M 0x1 M Möbel 2 false
0x3 BE-M-ST 0x2 ST Schreibtische 3 true
0x4 BE-M-BS 0x2 BS Bürostühle 3 true
0x5 BE-M-S 0x2 S Schränke 3 true
0x6 BE-KG 0x1 KG Kommunikationsgeräte 2 false
0x7 BE-KG-T 0x6 T Telefone 3 true
0x8 BE-KG-FG 0x6 FG Faxgeräte 3 true
           

 

Organisationsabhängige Klassifikationen speichern zusätzlich die Organisation in dem Attribut “organizationalUnit”.

8.3 Replikationsmechanismus

Organisationsabhängige Klassifikationen können den Replikationsmechanismus unterstützen, das bedeutet Organisationen müssen ihre Klassifikationsdaten nicht selbst bearbeiten, sondern sie können eine andere Organisation zur Bearbeitung bestimmen. Wenn diese bearbeitende Organisation Datensätze anlegt, ändert oder löscht, werden die Änderungen für jede Organisation durchgeführt, die diese Organisation zur bearbeitenden Organisation bestimmt haben.

Um den Replikationsmechanismus zu unterstützen, registrieren Sie die Klassifikation in der Registrierungs-Klasse com.cisag.app.multiorg.log.OrganizationHierarchyRegistry.

8.4 Einordnung von Business-Object-Instanzen

Um Instanzen eines Business Objects in eine Klassifikation einzuordnen, muss das Business Object ein Attribut haben, welches die GUID des referenzierten Klassifikationsknotens speichert.

8.5 GUI-Feld „HierarchyField“

Zum Erfassen und Anzeigen von Klassifikationen dient das GUI-Feld com.cisag.app.general.gui.HierarchyField. Bei Erzeugung des Feldes wird die Klasse des Business Objects übergeben und damit festgelegt, welche Klassifikation angezeigt werden soll. Organisations–abhängige Klassifikationen benötigen außerdem eine Instanz der Schnittstelle com.cisag.app.multiorg.log.InternalOrganizationRetriever, um entscheiden zu können, welche Organisation für das Anzeigen der Daten relevant ist.

8.6 Zusätzliche Klassifikationsdaten

Zusätzlich zu den Standard-Klassifikationsdaten (Identifikation, Bezeichnung) können jedem Knoten ergänzende Daten zugeordnet werden. Beispielsweise kann in der Vertriebs-Artikelpreis-Klassifikation jedem Knoten eine Einheit zugeordnet werden.

Das ERP-System stellt dafür ein API bereit. Das API bietet eine Trennung zwischen Logik und Darstellung. Es ist zudem unabhängig davon wo die Daten gespeichert werden. Sie können sowohl das Klassifikations-Business Object um zusätzliche Attribute erweitern als auch andere Business Objects nutzen. Folgende Schritte führen Sie durch, um zusätzliche Klassifikationsdaten erfassen zu können:

  • Implementieren Sie eine Instanz der Schnittstelle com.cisag.app.general.ui.HierarchyExtensionEditor als Darstellungs-Klasse. Diese Implementierung stellt der Benutzeroberfläche zusätzliche Klassifikationsdaten bereit.
  • Implementieren Sie eine Instanz der Schnittstelle com.cisag.app.general.log.HierarchyExtension als Logik-Klasse. Diese Implementierung übernimmt das Speichern, das Prüfen und das Löschen der zusätzlichen Klassifikationsdaten.
    Für den Fall, dass Sie das Business Object der Klassifikation direkt um Attribute erweitern und keine anderen Business Objects betroffen sind, stellt das ERP-System eine vereinfachte Implementierung der Logik-Klasse zur Verfügung (com.cisag.app.general.log.DefaultHierarchyExtension). Sie brauchen lediglich notwendige Prüfungen durch überschreiben der Methode public boolean validate() zu implementieren.
  • Wollen Sie BIS-Funktionalitäten für diese Klassifikation unterstützen, implementieren Sie zusätzlich die Schnittstelle com.cisag.app.general.log.HierarchyExtensionController in der Logik-Klasse.
  • Registrieren Sie die Darstellungs- und die Logik-Klasse in der Registrierungs-Klasse com.cisag.app.general.log.HierarchyRegistry.

 

Czy ten artykuł był pomocny?