Transforms
Whenever an instance finishes executing a state there is an opportunity to perform a Transform. Usually with a field called transform
, but sometimes in other forms. The switch
state also has a defaultTransform
, for example.
All transforms use structured jx, giving you powerful options to enrich, sanitize, or modify instance data. All transforms must produce output that remains valid instance data, otherwise an error will be thrown: direktiv.jq.notObject
.
Examples
Here are some common use-case helpful examples of transforms.
Completely Replacing Instance Data
Instance Data Before Transform
{
"msg": "Hello, world!
}
Transform Snippet
- id: snippet
type: noop
transform:
x: 5
Instance Data After Transform
{
"x": 5
}
Replacing A Subset Of Instance Data
Instance Data Before Transform
{
"a": 1,
"b": 2,
"c": 3
}
Transform Snippet
- id: snippet
type: noop
transform: 'jq(.a = 5 | .b = 6)'
Instance Data After Transform
{
"a": 5,
"b": 6,
"c": 3
}
Deleteing A Subset of Instance Data
Instance Data Before Transform
{
"a": 1,
"b": 2,
"c": 3
}
Transform Snippet
- id: snippet
type: noop
transform: 'jq(del(.a) | del(.b))'
Instance Data After Transform
{
"c": 3
}
Adding A New Value.
Instance Data Before Transform
{
"a": 1
}
Transform Snippet
- id: snippet
type: noop
transform: 'jq(.b = 2)'
Instance Data After Transform
{
"a": 1,
"b": 2
}
Renaming A Subset of Instance Data
Instance Data Before Transform
{
"a": 1,
"b": 2,
"c": 3
}
Transform Snippet
- id: snippet
type: noop
transform: 'jq(.x = .a | del(.a))'
Instance Data After Transform
{
"b": 2,
"c": 3,
"x": 1
}