# Enums (Wertelisten)
Der DLS kann für mehrere Sprachen konfiguriert werden. Damit in Verzeichnungseinheiten Werte auch übersetzt dargestellt werden, müssen die Daten mehrsprachig gespeichert werden.
Damit die Übersetzungen nicht pro Verzeichnungseinheit und Feld mehrsprachig
gespeichert und indexiert werden müssen, können Wertelisten vordefiniert
werden, welche dann im Datensatz der Verzeichnungseinheit mittels eines
identifiers
referenziert werden.
Dieses Konzept funktioniert grundsätzlich sowohl für Standardfelder des Produktes wie auch für benutzerdefinierte Felder ("custom fields").
Mit Wertelisten können grundsätzlich Werte übersetzt werden, die auf einer Werteliste basieren, die mehrere Objekte teilen. Übersetzungen für Freitextfelder wie Titel oder Beschreibung werden mit diesem Konzept nicht abgedeckt.
# Schema EnumEntry
# id
- Type:
BigAutoField
- Label: ID
- Required:
False
- Systemfield: Ja
Die id
wird verwendet, um intern den Datensatz eindeutig zu adressieren. Wenn ein Datensatz gelöscht und neu erstellt wird, ändert sich diese ID. Daher sollte für die eindeutige Identifizierung das Feld identifier
verwendet werden, welches auch beim Neuerstellen des Datensatzes den gleichen Wert behält. Dies ist ein Systemfeld, in welches nicht geschrieben werden darf.
# created
- Type:
CreationDateTimeField
- Label: erstellt
- Required:
False
- Systemfield: Ja
Dieses Feld speichert den Zeitpunkt (Datum/Zeit), zu welchem der Datensatz initial erstellt wurde. Dies bezieht sich auf den Zeitpunkt der Erstellung in agora und nicht im anliefernden System. Dies ist ein Systemfeld, in welches nicht geschrieben werden darf.
# modified
- Type:
ModificationDateTimeField
- Label: geändert
- Required:
False
- Systemfield: Ja
Dieses Feld speichert den Zeitpunkt (Datum/Zeit), zu welchem der Datensatz in agora das letzte Mal geschrieben wurde, z.B. über die ETL Pipeline. Dies ist ein Systemfeld, in welches nicht geschrieben werden darf.
# source
- Type:
TextField
- Label: Source
- Required:
False
- Default:
""
# enum
- Type:
TextField
- Label: Enum Identifier
- Required:
True
String, welcher die Werteliste (enum) eindeutig identifiziert. Alle EnumEntry
Objekte, die den gleichen enum
Wert teilen, gehören zu der gleichen Werteliste.
# identifier
- Type:
TextField
- Label: Identifier Enum Eintrag
- Required:
True
String, welcher einen Wert in einer Werteliste identifiziert. Ein EnumEntry
Objekt wird identifiziert indem enum
und identifier
zusammen eindeutig ist.
# order
- Type:
IntegerField
- Label: Sortierung
- Required:
False
Zahl, die die Sortierreihenfolge innerhalb eines Enums bestimmt. Die Verwendung ist optional. Wenn sie innerhalb eines Enums nicht verwendet wird, wird das Label für die Sortierung verwendet.
# label_de
- Type:
TranslationTextField
- Label: Label [de]
- Required:
False
Das Label des EnumEntry
wird für die Darstellung im User-Interface verwendet. Damit agora für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.
# label_en
- Type:
TranslationTextField
- Label: Label [en]
- Required:
False
Das Label des EnumEntry
wird für die Darstellung im User-Interface verwendet. Damit agora für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.
# label_fr
- Type:
TranslationTextField
- Label: Label [fr]
- Required:
False
Das Label des EnumEntry
wird für die Darstellung im User-Interface verwendet. Damit agora für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.
# label_it
- Type:
TranslationTextField
- Label: Label [it]
- Required:
False
Das Label des EnumEntry
wird für die Darstellung im User-Interface verwendet. Damit agora für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.
# label_rm
- Type:
TranslationTextField
- Label: Label [rm]
- Required:
False
Das Label des EnumEntry
wird für die Darstellung im User-Interface verwendet. Damit agora für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.
# data
- Type:
JSONField
- Label: Data
- Required:
False
Im data
kann eine beliebige JSON-Kompatible Datenstruktur gespeichert werden. Es kann verwendet werden, um zusätzliche Informationen für Enum Einträge zu speichern.
# Importieren von Enums über ETL Pipeline
Die Werte werden üblicherweise im Quellsystem definiert, dort wo die Daten erfasst sind. Daher ist der Standardweg für das Erfassen von Enums in DLS, dass sie über eine ETL Pipeline importiert werden. Je nach Quellsystem muss eine ETL Pipeline konfiguriert werden, welche die Werte importiert. Dabei können die Werte auch partiell importiert werden, also z.B. nur für spezifische Felder.
Für das Erstellen der EnumEntry
Objekte in der Pipeline wird die CreateEnumEntries
Section verwendet.
In der Publish
Section wird das
Model mit dem Key enumentry
adressiert.
Beispiel-Pipeline für das Importieren von EnumEntry
Objekten:
[
{
"section": "RawSource",
"options": {
"data": [
{
"enum": "archival_type",
"identifier": "pic",
"label_de": "Bild",
"label_en": "Picture",
"label_fr": "Image"
},
{
"enum": "archival_type",
"identifier": "mov",
"label_de": "Film",
"label_en": "Movie",
"label_fr": "Film"
}
]
}
},
{
"section": "CreateEnumEntries",
"options": {
"prune_enum": true
}
},
{
"section": "Publish",
"options": {
"model": "enumentry"
}
}
]
# Verwenden von Wertelisten
Damit eine Werteliste mit einem Feld, z.B. einem Customfield verwendet werden kann,
wird das Feld enum
in der Werteliste auf den Namen des Customfields gesetzt.
In den Datensätzen wird dann im Feld der Werte des identifier
des EnumEntry
verwendet,
so dass der Lookup im User-Interface funktioniert.