条件节点
更新时间:2019-02-01 20:48:02
节点简介
条件节点可以根据条件变量(前置节点的返回值)执行不同的路径。最少有一条路径,最多允许10条路径。
使用场景
如果您需要对设备上报的属性等输入值做判断,根据判断结果执行不同的逻辑,那您需要使用条件节点做判断。
配置项
输入配置
输入配置主要是确定条件变量,条件变量分成两部分(如下图所示),第一部分确定条件变量来自于哪个节点的输出(来源节点),第二部分确定条件变量来自于该节点输出内容中的哪个变量(来源变量)。下面分别加以阐释。
图1:输入配置
来源节点一共有三种选择(第一个下拉框):
- 上一个节点(payload):“条件”节点的上一个节点。在下图中即为“脚本”节点。
- 第一个节点(query):“条件”节点所在服务流的第一个节点,在下图中即为“设备触发”节点。
- 指定前置节点(nodeId):“条件”节点所在服务流的某一个前置节点。下图中可为“设备触发”、“脚本”中的某一个节点。
图2:服务编排流程图
在第一个下拉框确定条件变量的来源节点后,可在第二个文本框中进一步确定条件变量的来源(来源节点输出内容中的某一个对象)。由于节点的输出内容都是以Json格式表示的,所以可以用xxx.yyy表示xxx对象下的yyy变量。
所以,要确定条件变量来自于节点输入内容中的某一个对象,就要知道该节点的输出内容Json格式。如果您还不是很了解该节点的输出内容Json格式,没关系,您可先将服务进行部署(即使还没有完成),启动服务并用虚拟设备触发服务,即可获得节点日志。从节点日志中,您可以清楚地看到节点的输出内容Json格式。
如图3展示了“设备触发”的一次节点日志,在日志中可以找到“节点输出”对象。若想用设备名(deviceNmae)作为条件变量,则可用deviceContext.deviceName进行引用,整体如图4所示;若想用设备上报的属性值(如PM10浓度)作为条件变量,则可用props.PM10.value进行引用,整体如图5所示。
图3 节点日志
图4:引用第一个节点(query)输出内容中的设备名(deviceName)为条件变量
图5:引用第一个节点(query)输出内容中的属性值PM10作为条件变量
注,若输入节点为“API输入”,第二个框输入参数的名称——对API输入来说,入参可以直接在输入框直接填写参数名调用,如Param1
图6:API输入情况下的条件变量配置
条件判断配置
每增加一个路径,则该条件节点增加一个输出分支。如该条规则满足,则会被路由到该规则对应的输出分支。如果多条规则同时满足,则按照规则添加的顺序,执行顺序最靠前那个规则对应的输出分支。
比较的时候要注意属性类型,目前布尔型的输入需要用“数字”选项,然后输入“0”,“1”进行比较。枚举型的比较也是用“数字”选项输入“0”,“1”,“2”等。
图7:条件判断路径配置
节点输出
条件判断节点本身不改变传递的参数payload,因此输出仍然为上一个节点的payload。