In JSONPath-based states, use the ItemsPath
field to select an array within a JSON input provided to a Map
state. The Map
state repeats a set of steps for each item in the array. By default, the Map
state sets ItemsPath
to $
, which selects the entire input. If the input to the Map
state is a JSON array, it runs an iteration for each item in the array, passing that item to the iteration as input.
You can use ItemsPath
in the Distributed Map state only if you use a JSON input passed from a previous state in the workflow.
You can use the ItemsPath
field to specify a location in the input that points to JSON array used for iterations. The value of ItemsPath
must be a Reference Path, and that path must point to JSON array. For instance, consider input to a Map
state that includes two arrays, like the following example.
{
"ThingsPiratesSay": [
{
"say": "Avast!"
},
{
"say": "Yar!"
},
{
"say": "Walk the Plank!"
}
],
"ThingsGiantsSay": [
{
"say": "Fee!"
},
{
"say": "Fi!"
},
{
"say": "Fo!"
},
{
"say": "Fum!"
}
]
}
In this case, you could specify which array to use for Map
state iterations by selecting it with ItemsPath
. The following state machine definition specifies the ThingsPiratesSay
array in the input using ItemsPath
.It then runs an iteration of the SayWord
pass state for each item in the ThingsPiratesSay
array.
{
"StartAt": "PiratesSay",
"States": {
"PiratesSay": {
"Type": "Map",
"ItemsPath": "$.ThingsPiratesSay",
"ItemProcessor": {
"StartAt": "SayWord",
"States": {
"SayWord": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
}
When processing input, the Map
state applies ItemsPath
after InputPath. It operates on the effective input to the state after InputPath
filters the input.
For more information on Map
states, see the following:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4