Funktionsumfang der FeatureFlags-App
Die FeatureFlags-App sammelt Feature Flags anderer Apps und erstellt eine Übersicht für Fachadministratoren bereit. Die anderen Apps müssen die Feature Flags bereitstellen, um von der FeatureFlags-App abgefragt werden zu können.
Was sind Feature Flags im Kontext der FeatureFlags-App?
In diesem Kontext sind Feature Flags Funktionen, die auf Dauer verpflichtend aktiviert sind und somit in den normalen Funktionsumfang der Anwendung übergehen. Für eine gewisse Übergangszeit kann der Fachadministrator die Funktionen jedoch wahlweise aktivieren oder deaktivieren. Zum Beispiel sind die folgenden Anwendungsfälle denkbar: * Ein Feature (z.B. eine neue Oberfläche) verändert die Nutzung der Software, sodass die Anwender zunächst an die neue Verhaltensweise gewöhnt werden müssen bzw. eine Schulung notwendig ist. * Ein Feature ist noch nicht vollständig fertiggestellt, jedoch soll dem Kunden schon vorab die Möglichkeit gegeben werden, die neue Funktion auszuprobieren.
Verwenden der API-Funktionen
Nachfolgend erfährst du, wie du die Programmierschnittstelle der FeatureFlags-App für eigene Entwicklungen nutzen kannst. Die FeatureFlags-App kommuniziert mit anderen Apps über eine Schnittstelle, die die jeweiligen Feature Flags abfragt. Wie diese Schnittstelle aufgebaut sein muss, findest du im Abschnitt Bereitstellen eines Feature Flags.
Bereitstellen eines Feature Flags
Mit dieser Funktion kannst du Feature Flags bereitstellen, die von der FeatureFlags-App gesammelt dargestellt werden. Damit du Feature Flags bereitstellen kannst, musst du eine Linkrelation featuretoggles bereitstellen.
Ermitteln der Feature Flags
Die FeatureFlags-App fragt alle registrierten Apps ab. Anschließend wird jede registrierte App mit dem Aufruf /<app name>/ auf der Basisadresse (also: https://<your base address>/<app name>/) und dem Anforderungsheader "Accept: application/hal+json" abgefragt. Es wird nach der Linkrelation featuretoggles gesucht. Damit die Linkrelation gefunden wird, muss das JSON wie folgt aufgebaut sein:
{
"_links" : {
...
"featuretoggles": {
"href": "/<app name>/featuretoggles"
}
...
},
...
}
Wenn eine korrekt aufgebaute Linkrelation vorhanden ist, wird die darunter angegebene URI im Benutzerkontext mit der Anforderungsmethode GET und dem Anforderungsheader "Accept: application/hal+json" aufgerufen und das erhaltene JSON-Objekt ausgewertet. Das JSON, welches Apps bereitstellen müssen, um ein oder mehrere Feature Flags anzubieten, muss entsprechend dem nachfolgenden Schema aufgebaut sein:
{
"featureToggles": [
{
"id": "<id of your feature toggle>",
"context": "<context of your feature toggle>",
"caption": "<caption of your feature toggle>",
"description": "<description of your feature toggle>",
"callbackUrl": "<callback url>",
"tenantActivated": <state of your feature toggle>,
"expiration": "<expiration of your feature toggle>",
"feedbackMailAddress": "<feedback mail address>",
"iconUrl": "<link to your icon>"
}
]
}
Eigenschaft | Typ | Beschreibung | Pflicht | Anmerkung |
---|---|---|---|---|
id | string | Eindeutiger Identifizierer des Feature Flags. | Ja | Eindeutig in Bezug auf den Kontext. |
context | string | Wird in der Oberfläche verwendet, um Feature Flags zu gruppieren, z.B. könnten alle Feature Flags von d.velop inbound suite den Kontext "d.velop inbound suite" verwenden und somit gruppiert dargestellt werden. | Ja | |
caption | string | Lokalisierte Überschrift des Feature Flags. | Ja | |
description | string | Lokalisierte Beschreibung des Feature Flags. | Ja | Kann Links enthalten |
callbackUrl | string | Callback, der im Benutzerkontext aufgerufen wird, sobald das Feature aktiviert oder deaktiviert wird. | Ja | Relative URL |
tenantActivated | bool | Gibt an, ob das Feature Flag für den aktuellen Mandanten aktiviert oder deaktiviert wird. | Ja | Datenhaltung obliegt der jeweiligen App |
expiration | string | Voraussichtlicher Termin, an dem das Feature Flag in den Standardfunktionsumfang übergeht. | Ja | ISO-8601-formatierter String |
iconUrl | string | URL zum Anzeigen eines Icons. | Nein | |
feedbackMailAddress | string | E-Mail-Adresse, die der Anwender (Fachadministrator) verwenden kann, um dem App-Builder Feedback zu einem Feature zu geben. | Nein |
Callback entgegennehmen
Wird ein Feature Flag vom Fachadministrator aktiviert oder deaktiviert, ruft die FeatureFlags-App für das entsprechende Feature Flag die URL auf, die in der Eigenschaft callbackUrl definiert ist. Die POST-Anfrage im JSON-Format wird im Benutzerkontext ausgeführt. Die Anfrage ist wie folgt aufgebaut:
{
"id": "<id of your feature toggle>",
"tenantActivated": <state of your feature toggle>
}
Eigenschaft | Typ | Beschreibung |
---|---|---|
id | string | Eindeutiger Identifizierer des Feature Flags |
tenantActivated | bool | Angabe des veränderten Status des Feature Flags |