Switch@1
Der Node Switch@1 ermöglicht es, verschiedene Sub-Transformations-Pipelines auf Basis einer Switch-Anweisung mit mehreren Fällen auszuführen.
Der Node wertet einen Wert an einem angegebenen Pfad aus und führt die Transformationen des ersten passenden Falls aus. Wenn kein Fall passt, werden optionale Standard-Transformationen ausgeführt.
Adapter-Voraussetzungen
- Allgemeine Verfügbarkeit: Alle Adapter unterstützen diesen Node-Typ.
Node-Konfiguration
Zum Feld path siehe Überblick.
triggers:
- type: FromExecutePipelineCommand@1
transformations:
- type: SetPrimitiveValue@1
targetPath: $.customer.type
value: standard
- type: Switch@1
path: $.customer.type # Path to the value to evaluate
valueType: String # Data type of the value (String, Int, Boolean, Double, DateTime, Enum)
cases: # List of cases to evaluate
- value: "premium" # Value to match against
transformations: # Sub pipeline executed if this case matches
- type: Simulation@1
simulations:
- targetPath: $.customer.discount
simulatorKey: Math.DoubleRandom
configuration: "{min: 0.15, max: 0.25}"
- value: "standard"
transformations:
- type: Simulation@1
simulations:
- targetPath: $.customer.discount
simulatorKey: Math.DoubleRandom
configuration: "{min: 0.05, max: 0.10}"
- value: "basic"
transformations:
- type: SetPrimitiveValue@1
targetPath: $.customer.discount
value: 0.02
valueType: Double
default: # Optional: executed if no case matches
- type: SetPrimitiveValue@1
targetPath: $.customer.discount
value: 0.0
valueType: Double
Konfigurationseigenschaften
| Eigenschaft | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
path | string | Ja | JSONPath zu dem Wert, der ausgewertet werden soll |
valueType | string | Ja | Datentyp für den Vergleich (String, Int, Boolean, Double, DateTime, Enum) |
cases | array | Ja | Liste von Fall-Objekten, jedes enthält value und transformations |
cases[].value | any | Ja | Wert, gegen den verglichen wird (Typ muss valueType entsprechen) |
cases[].transformations | array | Ja | Sub-Pipeline, die ausgeführt wird, wenn dieser Fall passt |
default | array | Nein | Optionale Sub-Pipeline, die ausgeführt wird, wenn kein Fall passt |
Verhalten
- Fälle werden der Reihe nach ausgewertet, und der erste passende Fall wird ausgeführt (ähnlich der C#-Switch-Anweisung)
- Es wird nur ein Fall ausgeführt, auch wenn mehrere Fälle passen würden
- Wenn kein Fall passt und
defaultdefiniert ist, werden die Standard-Transformationen ausgeführt - Wenn kein Fall passt und kein Default definiert ist, werden keine Transformationen ausgeführt
- Der Wertvergleich verwendet strikte Gleichheit (Methode
.Equals())
Unterstützte Werttypen
- String: Textvergleich (Groß-/Kleinschreibung wird beachtet)
- Int: 32-Bit-Ganzzahlvergleich
- Boolean: Boolescher Vergleich (
true/false) - Double: Gleitkommazahlvergleich
- DateTime: Vergleich von Datum und Uhrzeit
- Enum: Ganzzahlbasierter Enum-Vergleich
Beispiel-Anwendungsfälle
Verarbeitung nach Kundentyp
- type: Switch@1
path: $.customer.type
valueType: String
cases:
- value: "enterprise"
transformations:
- type: SetPrimitiveValue@1
targetPath: $.pricing.plan
value: "enterprise"
- value: "business"
transformations:
- type: SetPrimitiveValue@1
targetPath: $.pricing.plan
value: "business"
defaultTransformations:
- type: SetPrimitiveValue@1
targetPath: $.pricing.plan
value: "standard"
Verarbeitung nach Statuscode
- type: Switch@1
path: $.response.statusCode
valueType: Int
cases:
- value: 200
transformations:
- type: SetPrimitiveValue@1
targetPath: $.status
value: "success"
- value: 404
transformations:
- type: SetPrimitiveValue@1
targetPath: $.status
value: "not_found"
- value: 500
transformations:
- type: SetPrimitiveValue@1
targetPath: $.status
value: "server_error"
defaultTransformations:
- type: SetPrimitiveValue@1
targetPath: $.status
value: "unknown"