Aufzählungen
Aufzählungen definieren und verwenden
Aufzählungen dienen zur Definition von Aufzählungstypen, also Datentypen, die als Wert eine Auswahlentscheidung aus einer für den Aufzählungstyp definierten Liste von alternativen Optionen speichern.
Freiheitsgrade von Aufzählungen
Hinsichtlich der "Anpassbarkeit" sind für Aufzählungen folgende Fälle zu unterscheiden:
Die Aufzählung ist insgesamt schreibgeschützt. Weder Aufzählungswerte noch unmittelbare Eigenschaften der Aufzählung können bearbeitet werden.
Dies betrifft vom System vordefinierte Aufzählungen (Druckdokumenttyp, Mailstatus, usw.), die über das Kennzeichen "Interne Aufzählung" (systemDynamicEnum) verfügen.
Die Definition der Aufzählung kann zwar per "Bearbeiten" geöffnet werden. Die Funktion "Speichern" steht in der Detailansicht dann allerdings nicht zur Verfügung.
Benutzerdefinierte Erweiterungen sind nicht vorgesehen.
Die Aufzählung kann nicht gelöscht werden, aber Aufzählungswerte können editiert (erstellt, geändert und ggf. gelöscht) werden.
Dies betrifft vom System vordefinierte Aufzählungen (z. B. Sprache, Land, Anrede, Arbeitsstatus, Firmentyp, Nummernkreistyp usw.), deren Aufzählungswerte für den spezifischen Bedarf angepasst werden können und sollen.
Eine wichtige Fraktion innerhalb dieser Gruppe sind Aufzählungen die "Sub-Typen" für vordefinierte typisierte Attributtypen definieren (Texttyp, Nummerntyp, Referenztyp, Kennzeichentyp, Datumstyp, Kontakttyp, usw.).
Für diesen Verwendungszweck sieht die Konfiguration für Aufzählungswerte die Option "Plurales Attribut" (pluralAttribute) vor, die je Sub-Typ regelt, ob dieser demselben Besitzer einfach oder mehrfach zugeordnet werden kann.
Der "Aufzählungsname" (enumName) von vordefinierten Aufzählungen bezieht sich immer auf einen Namespace, der mit der Zeichenfolge "de.lobster." beginnt (z. B. de.lobster.scm.base.address.Salutation für die Anrede).
Viele der betreffenden Aufzählungen enthalten ab Werk vordefinierte Aufzählungswerte, die wahlweise übernommen oder durch eigene ersetzt oder ergänzt werden können.
Die Aufzählung ist insgesamt benutzerdefiniert, sodass Vollzugriff auf alle Eigenschaften und die enthaltenen Aufzählungswerte besteht.
Dies betrifft Aufzählungen, die nach der Installation durch berechtigte Benutzer neu angelegt wurden.
Benutzerdefinierte Aufzählungen können sich auf eine Eigene Aufzählungskonfiguration beziehen, über die Aufzählungswerten spezifische Eigenschaften zugeordnet werden können.
Sofern eine benutzerdefinierte Aufzählung nicht auf eine Eigene Aufzählungskonfiguration verweist, wird ihr per Standard der Konfigurationstyp "Typisiertes Attribut (Konfiguration)" (TypedAttributeConfiguration) zugeordnet.
Dieser Typ stellt die Option "Plurales Attribut" (pluralAttribute) für den Fall bereit, dass die Aufzählung verwendet werden soll, um "Sub-Typen" für ein Eigenes typisiertes Attribut zu definieren.
►WICHTIG◄ Unabhängig davon ob Aufzählungen vordefiniert oder benutzerdefiniert sind, kann das Löschen von Aufzählungswerten aus der Aufzählung (wie auch der Aufzählung selbst) problematisch sein, wenn diese bereits "operativ" verwendet wurden, sodass sich Bewegungsdaten und/oder Konfiguration auf die zu löschenden Werte beziehen.
Aufzählungsdefinition ansehen und ggf. editieren
Der Menüpunkt für Aufzählungen öffnet eine Übersicht, die alle im System definierten Aufzählungen auflistet:
Im Screenshot wurde ein Filter für die Spalte Aufzählungsname (enumName) gesetzt, der hier u. a. zwei Aufzählungen (s. Transporttyp vs. Transporttyp (ZFMT)) mit der identischen Aufzählungsbezeichnung "Transport" auflistet.
Während es sich bei der Aufzählungsbezeichnung um die gleichlautende Lokalisierung für den durch die Aufzählung begründeten Datentyp handelt, erscheint in der Spalte Aufzählungsname der eindeutige fully qualified class name.
Die folgenden Schritte beziehen sich auf den im Bild durch Auswahl hervorgehobenen zweiten Listeneintrag.
Ein Doppelklick in die Listenzeile öffnet wie ein Klick auf den Ribbon Button Bearbeiten (in Verbindung mit einer Selektion) die Detailansicht für die betreffende Aufzählung in einer neuen View.
Konkret erscheint eine "Kombinierte Ansicht", die Kopfdaten der Aufzählung (Aufzählungsname, Beschreibung - soweit anwendbar) mit einem Detailbereich zum Editieren von Aufzählungswerten verbindet, die unterhalb als Liste angezeigt werden:
►HINWEIS◄ Der Transporttyp wurde hier u. a. deshalb als Beispiel ausgewählt, weil er nur minimale Konfigurationsmöglichkeiten für Aufzählungswerte vorsieht.
Aufzählungen können mehr oder weniger komplexe Konfigurationsmöglichkeiten für Aufzählungswerte vorsehen, die dann im Detailbereich der Ansicht erscheinen.
Das Datenmodell für Aufzählungswerte beinhaltet daher ein Feld configuration, dem als Wert ein Datenobjekt des betreffenden Konfigurationstyps zugewiesen werden muss.
Für den Transporttyp betrifft lediglich das Feld Icon-URI (iconUri) den verwendeten (allgemeinen) configuration-Typ (DynamicEnumConfiguration).
Die Felder Ordinal (ordinal), Name (name), Beschreibung (description) sind Bestandteil der übergeordneten Datenstruktur (DynamicEnumValueDefinition).
Der Lokalisierte Name wird über die Sprachverwaltung bzw. Firmenspezifische Sprachanpassungen zugeordnet und nicht im Aufzählungswert gespeichert.
Aufzählungswerte in einer vordefinierten Aufzählung editieren
Beispiel: Transporttyp (vordefinierte Aufzählung, mit editierbaren Aufzählungswerten)
Der Screenshot zeigt eine Liste mit Definitionen für Werte der Aufzählung Transporttyp, mit den "ab Werk" hinterlegten Optionen.
Jede Auswahloption identifiziert ein innerhalb der Aufzählung eindeutiger Name (name), wobei die Aufzählung hier die in der Frachtlogistik gebräuchliche Terminologie und Auswahl für den "Transportmodus" (ROAD, SEA, AIR, RAIL) widerspiegelt.
Dieser Name erscheint z. B. in der XML-Struktur einer Entität, wenn diese über ein Feld verfügt, in dem eine Auswahl für den Transporttyp gespeichert werden soll (s. Aufzählungsfeld).
Typischerweise wird in der korrespondierenden Datenbanktabelle beim Speichern der betreffenden Entität aber nicht der Name als String abgelegt, sondern das - ebenfalls innerhalb der Aufzählung eindeutig zugeordnete - Ordinal.
Das Ordinal (ordinal) wird während der Definition der Aufzählung automatisch zugeordnet und steht damit im Regelfall "für immer" in einer (1:1)-Beziehung mit dem korrespondieren Namen.
Die Ordinal-Werte definieren die Rangfolge der Werte innerhalb der Aufzählung, was entscheidend sein kann, wenn sich z. B. eine Sortierung in einer Suche oder ein Rang-Vergleich in einer Objekt-Feld-Regel (s. Vergleiche mit (Vergleichstyp)) direkt auf Aufzählungswerte bezieht.
Der Lokalisierte Name wird nachträglich über die Sprachverwaltung oder Firmenspezifische Sprachanpassungen zugeordnet, um Aufzählungswerte möglichst aussagekräftig und verständlich präsentieren zu können.
Es besteht keine Verpflichtung eine Lokalisierung für jeden Aufzählungswert anzulegen. Allerdings zeigt die Sprachverwaltung automatisch Einträge für neue Aufzählungswerte an, sobald die Aufzählung gespeichert wird.
Fehlt jede Lokalisierung für eine Aufzählungswert erscheint an vielen Stellen als Standardwert der Name (ggf. in leicht "transformierter" Schreibweise z. B. "Road" statt ROAD, leider auch "Mb" statt MB).
Um die ggf. unerwünschte Transformation von Abkürzungen im Name-Feld zu umgehen, sollte man mindestens für die Sprache "Englisch" eine Lokalisierung (z. B. "MB") hinterlegen. Diese "Schreibung" gilt dann als Fallback für alle nicht anderweitig lokalisierten Sprachen.
Oft kann außerdem noch im konkreten Einsatzkontext - z. B. für die Label-Beschriftung im Dropdown eines Auswahlfeld/Combobox-Elements für ein Formular - gesteuert werden, ob der interne Name oder die Lokalisierung (oder beide) einen Aufzählungswert kennzeichnen.
Der folgende Screenshot zeigt die Detailmaske zum Bearbeiten eines im Listenbereich ausgewählten Aufzählungswerts mit Formularelementen für ale Eigenschaften, die für den Transporttyp unterstützt werden:
|
|
Aufzählungswerte hinzufügen und entfernen
Der Neu-Button (grün im Screenshot oben) fügt der Liste der Aufzählungswerte für den Transporttyp eine neue Defintion hinzu.
Der Entfernen-Button (rot im Screenshot oben) entfernt die Definition für einen ausgewählten Aufzählungswert aus der Liste.
Aufzählungen erweitern:
Sofern vordefinierte Aufzählungen nicht vom System als schreibgeschützt bereitgestellt werden, kann die enthaltene Wertliste bei Bedarf erweitert werden.
Ob in der Zukunft einmal ein zusätzlicher Transporttyp (etwa HYPERLOOP oder UAV) ergänzt werden muss, sollte einem beim Definieren der Aufzählungswerte für den Transporttyp "heute" keine Sorgen machen. Sobald der zusätzliche Typ relevant wird, kann man ihn einfach ergänzen.
Anpassungen an Konfigurationen (z. B. in Erfassungsmasken oder Zuordnungskriterien) könnten durch eine Erweiterung sporadisch erforderlich werden.
Eingriffe in das Datenmodell von Entitäten, die den Transporttyp verwenden, sollten dagegen nicht erforderlich sein, wenn eine neue Optionen hinzukommt.
Werte aus Aufzählungen entfernen:
Auch das Entfernen von Werten aus einer Aufzählung ist grundsätzlich möglich. Es gibt auch Aufzählungen in denen vom System bereitgestellte Einträge geschützt sind, während als Erweiterung ergänzte Einträge gelöscht werden.
►WICHTIG◄ Das Entfernen von löschbaren Aufzählungswerten sollte idealerweise erfolgen, bevor Benutzer (auch Konfiguratoren) die Gelegenheit erhalten, mit den konfigurierten Werten zu "arbeiten".
In vielen Fällen wird das Löschen von Aufzählungswerten automatisch blockiert, solange noch eingehende Referenzen für den zu löschenden Aufzählungswert (z. B. per Wertauflöser wie Aufzählung) bestehen.
Dabei werden aber nur aktuelle Konfigurationen und nicht ggf. vorhandene "historische" Stände berücksichtigt (Änderungsverlauf (Konfigurationen)), die u. U. wiederhergestellt werden könnten.
Um Aufzählungswerte, die bereits in Verwendung sind oder waren, für die Zukunft "aus dem Katalog zu streichen" eröffnen Aufzählungsfilter oft gangbare Wege.
Über Zuordnungskriterien kann ggf. recht detailliert gesteuert werden, in welchen Situationen, für wen und ggf. mit welchen Zeitfenstern Einschränkungen bei der Auswahl und Anzeige von Aufzählungswerten greifen sollen.
Aufzählungen lokalisieren
Die Lokalisierung der Aufzählungstypen erfolgt in der Sprachverwaltung und ggf. über Firmenspezifische Sprachanpassungen und betrifft den Namen der Aufzählung als Ganzes sowie den Klartext für jedes einzelne Element.
Für das Beispiel einer benutzerdefinierten Aufzählung für "Himmelsrichtungen" könnte die Lokalisierung der Aufzählungswerte so aussehen:
Als Resource Bundle gilt der interne Aufzählungsname, für den hier die einfache Zeichenfolge ORIENTATION gewählt wurde.
Für vordefinierte Aufzählungen erscheint hier ein meist längerer Klassenname, z. B. de.lobster.scm.base.bto.ModeOfTransport für den Transporttyp (s. o.).
Der Name der Aufzählung als Ganzes kann über den Resource name $name lokalisiert werden.
Lokalisierungen für Aufzählungswerte definieren deren Namen als Wert für den Resource name in demselben Resource Bundle.
►ANMERKUNG◄ In Auswahlelementen von Formularen erscheinen die Elemente einer Aufzählung alphabetisch aufsteigend sortiert nach der Lokalisierung. Damit die Himmelsrichtungen in der gewohnten Reihenfolge (im Uhrzeigersinn beginnend bei Nord) erscheinen, wurde hier eine Indexziffer vorangestellt. Diese stellt auch sicher, dass die Optionen unabhängig von der Sprachauswahl in derselben Reihenfolge erscheinen.
Aufzählungen mit aufwändigerer Konfiguration für Aufzählungswerte
Einige der vom System vorgegebenen Aufzählungen bieten zusätzlich noch spezifische Parameter an, die für jedes Element individuell mit Werten belegt werden können. Für Einheiten sind z. B. Parameter für Umrechnungsfunktionen vorgesehen (siehe Spalten "Alias", "Basis" usw. im Screenshot unten), jeder Arbeitsstatus kann mit einem hexadezimalen Farbwert verknüpft und je Lieferhinweis-Typ können individuelle Prüffunktionen und Meldungstexte hinterlegt werden. Am Ende dieser Seite werden Detailseiten für vordefinierte Aufzählungen aufgelistet. Dort werden soweit vorhanden auch die Parameter beschrieben.
Der folgende Screenshot bildet als Beispiel die Konfigurationsoberfläche für die Aufzählung Längeneinheit ab, die spezifische Felder für Einheiten beinhaltet (Alias, Basis, usw.):