Switch@1
Node Switch@1
allows to execute different sub transformation pipelines based on a switch statement with multiple cases.
The node evaluates a value at a specified path and executes the transformations of the first matching case. If no case matches, optional default transformations are executed.
Adapter Prerequisites
- General availability: All adapters support this node type.
Node Configuration
For fields path
, see Overview.
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
Configuration Properties
Property | Type | Required | Description |
---|---|---|---|
path | string | Yes | JSONPath to the value that should be evaluated |
valueType | string | Yes | Data type for comparison (String , Int , Boolean , Double , DateTime , Enum ) |
cases | array | Yes | List of case objects, each containing value and transformations |
cases[].value | any | Yes | Value to match against (type must match valueType ) |
cases[].transformations | array | Yes | Sub pipeline to execute if this case matches |
default | array | No | Optional sub pipeline to execute if no case matches |
Behavior
- Cases are evaluated in order, and the first matching case is executed (similar to C# switch statement)
- Only one case is executed, even if multiple cases would match
- If no case matches and
default
is defined, the default transformations are executed - If no case matches and no default is defined, no transformations are executed
- Value comparison uses strict equality (
.Equals()
method)
Supported Value Types
- String: Text comparison (case-sensitive)
- Int: 32-bit integer comparison
- Boolean: Boolean comparison (
true
/false
) - Double: Floating-point number comparison
- DateTime: Date and time comparison
- Enum: Integer-based enum comparison
Example Use Cases
Customer Type Processing
- 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"
Status Code Processing
- 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"