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操作将数据添加到ItemsPathMap状态之前的项。看到访问Map状态下的数据

  • ZIS Map状态不支持重试属性中的亚马逊州语言.相反,ZIS对失败的流使用内置的重试逻辑。或者,您可以使用块来处理Map状态下的运行时错误。看到流状态重试和错误处理