2017-02-10 3 views
0

Hier ist meine quesion,Togglz Eigenschaft Switch - Wie ActivationStategy für mehr IDs/parms zu implementieren, die gleiche Logik (gleiche Logik in der Strategie für Kombinationen)

ich einen Feature-Schalter mit einer benutzerdefinierten Strategie mit dem Namen "UserActivationStrategy ". All es tut, ist, hat es eine hart codierte Wert als 'Benutzer' in Id Feld und ein 'IpAddress' als param und einige Logik in isActive (Zustand, User) true/false zurück.

Die Strategie, die aufgerufen werden soll, wird basierend auf fest codierten Id bestimmt. Hier ist meine application.properties mit denen definiert

CustomFeature = true 
CustomFeature.strategy= user 
CustomFeature.param.IpAddress= xx.xx.xxx 

Die oben sagt, dass .... UserActivationStrategy aufgerufen basiert auf Id (‚user‘), die hart in Strategie codiert. In UserActivationStrategy verifiziere ich die Ipadadresse und true/false zurück.

Also was, wenn ich dieselbe Logik auf verschiedenen Benutzern mit unterschiedlicher IPAddress durchführen muss. Es ist wie Kombinationen. Bestimmte Benutzer haben Zugriff auf bestimmte IpAddress.

Ich kann Feature-Schalter für jeden Benutzer oder für jede IP-Adresse nicht erstellen. Es würde viele Feature-Schalter erstellen.

Wenn ich Benutzer und IPAddress als Parameter in einer Strategie hinzufügen. Am Ende erstelle ich viele Params in einer einzigen Strategie, die nicht gut ist.

Jede mögliche Lösung wird geschätzt. Vielen Dank.

+0

@chkal könnten Sie mir mit diesem – karthik

Antwort

1

Ich bin mir nicht sicher, ob ich vollständig verstehe, was Sie erreichen wollen. Sie haben also ein einzelnes Feature Flag und wenn aktiviert, sollte es true bewerten, wenn und nur wenn eine bestimmte Kombination von Benutzer und IP-Adresse vorhanden ist?

Wenn ja, sollten Sie vielleicht eine einzelne Strategie erstellen, die mit einer Zeichenfolge konfiguriert werden kann, die alle zulässigen Kombinationen codiert. Etwas wie:

user1=127.0.0.1, user2=127.0.0.2, user3=127.0.0.3 

Sie können diese Konfigurationszeichenfolge dann in der Admin-Konsole konfigurieren. Oder fügen Sie es direkt in die Konfigurationsdatei:

CustomFeature = true 
CustomFeature.strategy= user 
CustomFeature.param.combintations=user1=127.0.0.1, user2=127.0.0.2 

Die Strategie, um diese Darstellung analysieren würde und prüfen, ob eine der zulässigen Kombinationen.

+0

helfen Danke @chkal für diesen Blick. Es scheint, dass du hast, was ich versuche zu sagen. Aber ändere leicht seine vielen zu vielen Abbildungen, die ich definieren muss. Also user1 = 127.0.0.1127.0.0.2,127.0.0.3,127.0.0.4 ... so und user2 = 127.0.0.1,127.0.0.2 und user3 = 127.0.0.1127.0.0.2,127.0.0.3 ... Auf diese Weise habe ich viele zu viele Kombinationen, die ich für Feature-Schalter definieren muss. Also, wie sollte ich definieren Konfiguration und Strategie für dieses Szenario – karthik

+0

Sie könnten auch die viele zu viele Beziehung in einem Strategieparameter zu kodieren. So etwas wie: user1 = 127.0.0.1127.0.0.2; user2 = 127.0.0.1 ... – chkal

+0

Bitte beachten Sie jedoch, dass ich mir nicht ganz sicher bin, ob das wirklich ein Anwendungsfall für Togglz ist. Das klingt ein wenig mehr wie eine Erlaubnisanforderung. – chkal

0

Also habe ich die Lösung dafür gefunden. In meinen features.properties habe ich eine Liste von Benutzern als param.

Beispiel:

CustomFeature.param.user1=127.0.0.1,127.0.0.2 
CustomFeature.param.user2=127.0.0.1,127.0.0.3 

So bin ich die featurestate.getparameter bekommen (user1) in meiner Aktivierungsstrategie, die alle IP-Adresse zurückgibt. Also basierend auf dieser IP-Adresse, die den Feature-Schalter aktiviert/deaktiviert.

So vermeiden Sie diese Staregy, viele Params/Feature-Schalter zu erstellen.

Verwandte Themen