州地图
Map状态在JSON对象数组上迭代。状态通过类似于ZIS流的状态机运行数组中的每个项。
“IterateThroughOrders”:{
“类型”:“地图”,
“ItemsPath”:“.orders美元”,
“迭代器”:{
“StartAt”:“GetOrderDetails”,
“州”:{
“GetOrderDetails”:{
“类型”:“行动”,
“ActionName”:“子:集成:行动:GetOrderDetails”,
“参数”:{
“order_num美元。”:“.order_num美元”
},
“结束”:真正的
}
}
},
“ResultPath”:“.order_details美元”,
“下一个”:“NextState”
}
支持的属性
除了公共状态属性, Map状态支持以下属性。
的名字 | 类型 | 强制性的 | 描述 |
---|---|---|---|
ItemsPath | 字符串 | 真正的 | 参考路径到JSON对象的输入数组 |
迭代器 | 对象 | 真正的 | 中的每个项运行的状态机ItemsPath 数组中。支持与ZIS流定义相同的属性和状态。一个国家迭代器 不能过渡到州外迭代器 .如果任何迭代失败,整个Map状态将失败,并结束所有剩余的迭代 |
抓 | 对象数组 | 假 | 包含在Map状态遇到运行时错误时要运行的回退状态。看到流状态重试和错误处理 |
访问Map状态下的数据
Map状态的迭代器
对象中的每个项进行迭代ItemsPath
数组中。每次迭代的输入都是一个数组项。迭代不能访问其他数据,比如根级。”$”对象。相反,您可以使用变换控件中的项添加数据ItemsPath
数组,然后运行Map状态。
例如,ZIS流包含.contacts美元
数组中包含以下数据:
{
“联系人”:[
{
“id”:1234,
“名称”:“约翰公民”,
“电话”:“+ 16175551212”
},
{
“id”:5678,
“名称”:“简”,
“电话”:“+ 14155551212”
}
]
}
流还包含.appointments美元
数组中包含以下数据:
{
“约会”:[
{
“id”:1234,
“名称”:“约翰公民”,
“next_appt”:“2099 - 05 - 06 - t09:00:00z”
},
{
“id”:5678,
“名称”:“简”,
“next_appt”:“2099 - 05 - 08 - t10:00:00z”
}
]
}
要在Map状态下使用来自两个数组的数据,必须首先将它们合并到一个JSON对象数组中。下面的Action状态使用Transform操作来连接每个数组中的对象customer_id
.状态将结果输出到.contacts美元
数组,它被覆盖。
“AddAppointmentsToContacts”:{
“类型”:“行动”,
“ActionName”:“子:常见的变换:金桥”,
“参数”:{
“expr”:“[。| group_by(.id)[] | add]",
“数据。美元”:“$”
},
“ResultPath”:“.contacts美元”,
“下一个”:“NotifyAll”
}
之后,每个项目在.contacts美元
数组包含next_appt
属性:
{
“联系人”:[
{
“id”:1234,
“名称”:“约翰公民”,
“next_appt”:“2099 - 05 - 06 - t09:00:00z”,
“电话”:“+ 16175551212”
},
{
“id”:5678,
“名称”:“简”,
“next_appt”:“2099 - 05 - 08 - t10:00:00z”,
“电话”:“+ 14155551212”
}
]
}
下面的Map状态使用.contacts美元
数组作为输入。状态使用自定义操作为数组中的每个项发出API请求。该请求包括next_appt
价值。
“NotifyAll”:{
“类型”:“地图”,
“ItemsPath”:“.contacts美元”,
“迭代器”:{
“StartAt”:“NotifyContacts”,
“州”:{
“NotifyContacts”:{
“类型”:“行动”,
“ActionName”:“子:集成:行动:NotifyContacts”,
“参数”:{
美元”的名字。”:" $ . name ",
“next_appt美元。”:“.next_appt美元”,
“电话。”:“.phone美元”
},
“结束”:真正的
}
}
},
“ResultPath”:“.notified美元”,
“下一个”:“NextState”
}
在Map状态下验证API请求
你可以使用连接来验证Map状态下自定义操作发出的API请求迭代器
.有关使用自定义操作连接的详细信息,请参见使用连接对ZIS流中的API请求进行身份验证.
以前,要验证Map状态下的请求,必须将OAuth连接的访问令牌添加到ItemsPath
数组中。这种方法涉及到使用.connections美元。{oauth_connection_name} .access_token
参考路径。不建议使用此方法和相关的参考路径。在将来的版本中可能会删除引用路径。
例子
有关ZIS流中Map状态的示例,请参见在ZIS流中的集合上迭代.
限制
不能使用Map状态来超过过渡限制对于ZIS流。如果在另一个Map状态中嵌套一个Map状态,请记住这个限制。
ItemsPath
必须指向JSON对象数组。ItemsPath
不支持其他数据类型。的
ItemsPath
数组大小限制为100个对象。Map状态在运行任何迭代之前检查数组大小。如果数组中有超过100个对象,Map状态中止,流结束。ZIS Map状态不支持
MaxConcurrency
属性中的亚马逊州语言.在ZIS Map状态下,迭代器
中的每个元素的状态按顺序运行ItemsPath
数组中。不支持并发执行。ZIS Map状态不支持
参数
属性中的亚马逊州语言.方法可以使用Transform操作将数据添加到ItemsPath
Map状态之前的项。看到访问Map状态下的数据.ZIS Map状态不支持
重试
属性中的亚马逊州语言.相反,ZIS对失败的流使用内置的重试逻辑。或者,您可以使用抓
块来处理Map状态下的运行时错误。看到流状态重试和错误处理.