Zum Hauptinhalt springen

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​

EigenschaftTypErforderlichBeschreibung
pathstringJaJSONPath zu dem Wert, der ausgewertet werden soll
valueTypestringJaDatentyp für den Vergleich (String, Int, Boolean, Double, DateTime, Enum)
casesarrayJaListe von Fall-Objekten, jedes enthält value und transformations
cases[].valueanyJaWert, gegen den verglichen wird (Typ muss valueType entsprechen)
cases[].transformationsarrayJaSub-Pipeline, die ausgeführt wird, wenn dieser Fall passt
defaultarrayNeinOptionale 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 default definiert 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"