循环
使用“循环”操作可将某项操作或一组操作重复执行给定次数或直至满足指定条件。
完成以下步骤,可在工作流中使用“循环”操作:
A 部分:配置“循环”操作
1. 单击
![](../../../../ThingWorx/images/UtlityIcon.png)
,然后将
“循环”下的
“循环”操作拖动至工作区。
“循环”块将显示在工作区中。
2. 将指针置于该操作上,然后单击
![](../../../../ThingWorx/images/SettingsIcon.png)
或双击该操作。“循环”窗口随即打开。
3. 根据需要编辑“标签”。默认情况下,标签名称与操作名称相同。
4. 在“选择循环类型”字段中,选择以下选项之一,然后执行其相应的任务:
选择循环类型 | 任务 |
---|
“次数”- 重复一个或多个任务,直到达到指定计数。 当“循环”操作中的工作流不需要先前操作的任何输入时,建议您选择此选项。 | 在“次数”字段中,指定循环应执行的次数。 |
“每一项”- 针对数组或集合中的每一项重复一个或多个任务。 | 在“源数组或对象”字段中,映射先前操作的输出以提供数组或对象。 |
While - 重复一个或多个任务,直到满足指定的条件为止。 | a. 在“初始值”字段中,提供循环的初始值。这可以是数值、布尔型、字符串或 JSON。 此值用于设置 $currentItem 值。此值仅在循环开始前使用一次。 b. 在“条件”字段中,提供条件。如果要使用“初始值”中的项,则在内联表达式中使用 $currentItem。例如:{{$currentItem}} < 5。 每次执行循环前都会评估此条件。如果此条件的结果评估为 true,则循环继续;否则循环中断。将“条件”设置为 0、false (不区分大小写) 或将其留空都会使条件评估为 false 并中断循环。 | 如果条件为 true,则循环将一直运行,直至工作流超时为止。默认的工作流超时为 3 分钟。 |
c. 在“更新的值”字段中,提供更新的值。这可以是数值、布尔型、字符串或 JSON。 此值用于更新 $currentItem 值。此表达式会在每个循环周期后评估一次。 | 对于“初始值”和“条件”,如果使用循环中任何操作的输出,则“条件”将评估为 undefined,并且“循环”将失败。 |
|
5. 单击“完成”。
6. 此外,将光标悬停在“循环”块上还可以执行以下任务:
▪ 单击
![](../../../../ThingWorx/images/LoopMaximizeMinimizeIcon.png)
以最大化或最小化
“循环”块。
▪ 单击
![](../../../../ThingWorx/images/DeleteIcon.png)
从工作区中移除
“循环”块。
B 部分:在“循环”块外添加操作
1. 在工作流编辑器的右侧,从“操作”面板中将操作拖动至“循环”块外的工作区。
在“循环”块之前和之后可以有一个或多个操作。
2. 将
“循环”块之前的操作连接到
![](../../../../ThingWorx/images/LoopStartIcon.png)
。
3. 将
“循环”块之后的操作连接到
![](../../../../ThingWorx/images/LoopStopIcon.png)
。
4. 根据要求配置操作。
C 部分:向“循环”块添加操作
1. 在工作流编辑器的右侧,从
“操作”面板中将操作拖动至
“循环”块。当操作位于
“循环”块上时,
“循环”块会突出显示。将操作放到
“循环”块上后,如果它是块中的第一个操作,则该操作会自动连接到
![](../../../../ThingWorx/images/LoopStartIcon.png)
。
可将一个或多个操作添加到“循环”块中。
将操作拖动至“循环”块外的工作区后,无法在“循环”块对其进行拖动。
2. 向“循环”块添加多个操作,然后逐个进行连接。可根据需要仅在“循环”块中包含一个操作。
3. 将
“循环”块中的最后一个操作连接到
![](../../../../ThingWorx/images/LoopStopIcon.png)
。
4. 根据要求配置“循环”块中的操作。
执行
执行工作流时,它会首先启动工作流中的第一个操作,重复执行循环块内的所有操作,直到满足定义的计数或条件,然后继续执行下列操作。
输出架构
对于“次数”循环:
◦ currentIndex - 当前迭代的索引或位置,从 1 开始。
◦ currentKey - 当前迭代的索引或位置,从 0 开始。
◦ currentItem、currentItem - 迭代的当前值。
◦ totalLength - 迭代的循环次数。
对于“每一项”循环:
◦ currentIndex - 当前迭代的索引或位置,从 0 开始。
◦ currentItem - 如果源是一个对象,则此属性将返回与 currentIndex 对应的值。如果源是一个数组,则此属性将返回每次迭代的当前对象。
◦ currentKey - 如果源为对象,则此属性将返回对象的键。如果源为数组,则此属性会返回每一项的索引。
◦ currentValue - 如果源为对象,则此属性将返回对象的值。如果源为数组,则此属性会返回数组的所有项,包括数组内的对象 (如果有)。要检索特定键或属性的值,请指定 {{$ActionID.currentValue.<PropertyName>}}
◦ totalLength - 对象数组内所有对象的总计数,或数组内所有项的总计数。
对于 While 循环:
◦ currentIndex、currentKey - 当前迭代的索引或位置,从 0 开始。
◦ currentItem、currentValue - 返回迭代的当前值。
◦ totalLength - 未定义。