Dokumentation

1Zweck

Der Zweck des Label-Konzepts besteht darin, bestimmte Datenmodelle dynamisch zu erweitern. Die Eigenschaften dieser Modelle unterscheiden sich je nach Kontext, in dem sie erstellt oder verwendet werden. Die Label-Infrastruktur ist nur dann relevant, wenn die Informationen von einer Drittanbieteranwendung verarbeitet werden müssen oder wenn die zusätzlichen Informationen auf einer Benutzeroberfläche einer Drittanbieteranwendung angezeigt werden müssen. Ist dies nicht der Fall, sind Labels in der Regel nicht relevant.

2Label-Deskriptoren

Da wir die Datenmodelle dynamisch erweitern, müssen wir die Daten beschreiben, die wir zurückgeben. Für jedes Label geben wir auch den Label-Deskriptor zurück. Der Deskriptor liefert die Semantik des Datenelements. Er liefert auch eine Beschreibung und einen Namen, die von einem menschlichen Benutzer verstanden werden können.

Zusätzlich enthält der Deskriptor einen Typ. Der Typ gibt an, von welchem Typ (String, Integer usw.) der Wert des Labels ist.

3Die Beschreibungen über die Webservice-API auflösen

Die Label-Deskriptoren können über die Webservice-API mit dem Label Descriptor Service abgerufen werden. Ein Label besteht aus einem value, einem type und einem descriptor. Die Deskriptor-ID kann über die Webservice-API aufgelöst werden, um die zusätzlichen Informationen zu erhalten.

4Label-Beispiel

Ein Objekt mit Labels könnte wie das folgende JSON aussehen:

{
	"id": 123141,
	"regularProperty": "A regular property which is not dynamically added.",
	"labels": [
		{
			"content": "Sample Label Value",
			"contentAsString": "Sample Label Value",
			"descriptor": 11001231,
			"displayName": "ID: 58",
			"id":58,
			"version":0
		}
	]
}

In diesem Beispiel haben wir ein Label mit dem Wert Sample Label Value. Die Details zum Label können durch Abfrage des Label-Deskriptors gefunden werden. Der Deskriptor liefert die folgenden Daten:

{
	"id": 11001231,
	"name": "Sample Label",
	"category": "HUMAN",
	"description":{
		"en-US":"This field will contain a human understandable description of the label in English."
	},
	"type": {
		"description":{
			"en-US":"The string label type indicates that the label value is of the type string."
		},
		"id":1455545848917,
		"name":{
			"en-US":"String"
		}
	},
	...
}

Wie das Beispiel zeigt, liefert der Deskriptor eine Beschreibung, einen Namen, einen Typ und andere Eigenschaften. Der Typ wird auch für andere Deskriptoren verwendet. Um diese Infrastruktur ordnungsgemäss zu nutzen, sollte für jeden Label-Typ ein Handler implementiert werden. Auf diese Weise kann eine generische Implementierung zur Verarbeitung von Labels realisiert werden. Falls nur einige bestimmte Label-Deskriptoren von Interesse sind, kann es auch sinnvoll sein, nur diese Labels zu verarbeiten.

5Label-Typ: Statischer Wert

Der Label-Typ des statischen Werts ist besonders, weil das Label tatsächlich eine ID eines anderen Objekts enthält. Das Objekt kann über die REST API für statische Werte aufgelöst werden. Typischerweise repräsentieren solche Werte Objekte, die sich nicht ändern. Sie sind vergleichbar mit Enums, die in einigen Programmiersprachen bekannt sind.

Staging 2.218.1