流程控制内的逻辑节点包括单路判断、条件判断、多路判断、计时器(原定时器)、序列执行、websocket和websocket-pro。本文介绍在蓝图编辑器中,配置流程控制类节点的方法。
单路判断
条件判断节点属于If判断条件节点。当满足设定条件时,抛出满足事件。
抛出事件意味着,如果事件节点连接其他逻辑,系统将执行该逻辑。本文“抛出”均为同一个意思。
使用场景
例如,根据开关状态触发图层的显示效果场景。可以通过单路判断节点来判断当前开关的状态。处于打开状态,则显示图层。
使用方法
添加单路判断节点至蓝图画布中,可查看单路判断节点支持的事件/动作,以及配置参数。添加方式请参见使用逻辑节点。
节点配置
判断条件配置,可采用可视化界面和代码编辑两种方式。
可视化编辑:选择并且模式以满足全部条件,选择或者模式以满足任一条件。
代码编辑:通过新增数据过滤器的方法编写过滤条件,返回结果为BOOLEAN型。返回结果为TRUE时抛出条件满足时事件。可以添加多个数据过滤器。
锚点配置
事件/动作参数说明
事件/动作 | 说明 |
条件满足时 | 上游节点输出的结果,满足设定条件。可自定义事件名称。 |
判断 | 输入上游节点的输出结果,用于条件判断。可自定义动作名称。 |
条件判断
条件判断节点属于If-Else判断条件节点。当满足设定条件时,抛出满足事件,不满足设定条件,抛出不满足事件。
使用场景
例如,根据开关状态触发两个图层的显隐效果场景。可以通过条件判断节点来判断当前开关的状态。处于打开状态,则仅显示图层A;处于关闭状态,则仅显示图层B。
使用方法
添加条件判断节点至蓝图画布中,可查看条件判断节点支持的事件/动作,以及配置参数。添加方式请参见使用逻辑节点。
节点配置
配置项说明
参数 | 说明 |
判断类型 |
|
条件列表 | 通过新增数据过滤器的方法编写过滤条件,返回结果为BOOLEAN型。返回结果为TRUE时抛出满足时事件,返回结果为FALSE时抛出不满足时事件。可以添加多个数据过滤器。 |
锚点配置
事件/动作参数说明
事件/动作 | 说明 |
满足 | 上游节点输出的结果,满足设定条件。可自定义事件名称。 |
不满足 | 上游节点输出的结果,不满足设定条件。可自定义事件名称。 |
判断 | 输入上游节点的输出结果,用于条件判断。可自定义动作名称。 |
多路判断
多路判断节点属于Case-When节点。通过对上游节点的输出结果进行判断,触发第一个满足条件的下游节点执行对应动作。
使用场景
例如,根据数字输入框内,当前的输入值设置地图散点的颜色。可通过多路判断节点,判断当前的输入值处于哪个范围,进而触发散点颜色的设置。例如在配置项中设置,当数值大于100时,为红色;50~100之间,为黄色;小于50,为蓝色。
使用方法
添加多路判断节点至蓝图画布中,可查看多路判断节点支持的事件/动作,以及配置参数。添加方式请参见使用逻辑节点。
事件/动作参数说明
事件/动作 | 说明 |
当满足此条件时 | 满足此条件,则抛出该事件。可在配置面板中添加多个处理方法,添加后,多路判断节点中显示您添加的处理方法;不同处理方法可连接不同的下游节点,实现多路判断。 |
当不满足以上条件时 | 当不满足在此之前设置的处理方法时,则抛出该事件。 |
判断 | 输入上游节点的输出结果,用于多路判断。 |
配置项说明
参数 | 说明 |
处理方法 | 通过新增数据过滤器的方法编写处理方法,返回结果为BOOLEAN型。返回结果为TRUE时抛出当满足此条件时事件,满足后即抛出对应事件,且不再执行后续处理方法。当不满足所有的条件设定时,则抛出当不满足以上条件时事件。 |
计时器
计时器节点支持延迟定时、定点定时、循环延时定时和循环周期定时。
使用场景
计时器适用于需要定时的场景需求。当时间计数到达配置项设定的时间点时,计时器节点抛出当到计时点时事件,输出上游节点的输出结果,触发后续动作。
使用方法
添加计时器节点至蓝图画布中,可查看计时器节点支持的事件/动作,以及配置参数。添加方式请参见使用逻辑节点。
节点配置
配置项说明
参数 | 说明 |
定时方式 | 支持延时定时和定点定时两种方式。 |
是否循环 | 是否需要重复计时。当定时方式为定点定时,是否循环开启后,会配置定点周期,自定义设置定点周期内的起始时间、间隔时间和单位。 |
延迟/间隔时间 | 以秒为单位进行倒计时。仅当定时方式为延时定时时有效。 |
定点时间 | 以秒为单位进行倒计时,到达具体的标准时间点,抛出事件。仅当定时方式为定点定时,且循环计时关闭时有效。 |
锚点配置
事件/动作参数说明
事件/动作 | 说明 |
当到计时点时 | 到达计时点时抛出事件,触发下游节点执行动作。循环计时情况下,将循环抛出该事件。 |
开始计时 | 启动计时器。 |
停止计时 | 停止计时器,下次触发开始计时时,将重新计时。一般用在循环计时中。 |
序列执行
序列执行节点属于顺序执行节点。通过对上游节点的输出结果进行当前方法过滤后,再传递给下游节点执行对应动作。
使用场景
例如,当您需要切换不同场景的数据面板时,每个场景有很多数据面板,先把场景A相关的数据面板切出,再把场景B相关的数据面板切进。可使用序列执行节点,对不同场景的数据面板进行分组,再按照先A后B的顺序执行。
使用方法
添加序列执行节点至蓝图画布中,可查看序列执行节点支持的事件或动作,以及配置参数。添加方式请参见使用逻辑节点。
事件或动作参数说明
事件或动作 | 说明 |
当执行此方法后 | 序列执行节点的数据处理方法。可在配置面板中添加多个处理方法,添加后,序列执行节点中显示您添加的处理方法;各方法按照顺序进行数据处理。 |
执行 | 输入上游节点的输出结果,用于该节点的结果计算。 |
配置项说明
参数 | 说明 |
处理方法 | 通过新增数据过滤器的方法编写处理方法,返回结果为BOOLEAN型。返回结果为TRUE抛出当执行此方法后事件,可叠加多个。每个处理方法独立计算,输入均为上一个节点的输出结果,输出为每个处理方法自己的计算结果,相互不影响。 |
websocket节点
websocket节点为屏间通信节点。每个消息由消息名称和数据组成,消息名称在配置项中自定义,数据为上一个节点的输出结果。
使用场景
websocket节点用于多端之间的命令和数据传输。例如大屏与移动端、大屏与触摸屏端的数据传输等。
使用方法
添加websocket节点至蓝图画布中,可查看websocket节点支持的事件/动作,以及配置参数。添加方式请参见使用逻辑节点。
节点配置
配置项说明
参数 | 说明 |
服务地址 | socket后端服务的地址。 |
屏幕ID | 该websocket节点所在屏幕的ID号,自定义输入。 |
屏幕名称 | 该websocket节点所在屏幕的名称,自定义输入。 |
分组 | websocket节点消息只在同socket服务下的同分组中进行广播。一般同一项目约定一个分组名称。 |
锚点配置
事件/动作参数说明
事件/动作 | 说明 |
当接收此消息时 | 该websocket节点接收到来自其他端的同名消息时,触发此事件。可在配置面板中编辑接收消息名。单击右侧的新增事件按钮,添加一个接收消息。单击右侧的图标,删除接收消息。 |
发送此消息 | 输入上游节点的输出结果,发送到其他端。可在配置面板中编辑发送消息名。单击右侧的新增动作按钮,添加一个发送消息。单击右侧的图标,删除发送消息。 |
自建socket服务
我们提供了DataV-WS工具包来自建服务,具体操作请参见如何使用DataV-WS服务。自建的websocket服务需要符合以下格式。
配置示例
注册消息
websocket节点发送消息格式如下。
{
event: "register",
data: {
sid: "407194", //屏幕的ID
name: "数据源受控模式测试", //屏幕的名称
group: "默认分组" //默认分组
},
callback: "callback_15832235175585251131307383912" //当前注册时间戳,自动生成
}
websocket节点服务获取注册消息之后,需返回如下消息才能成功注册。
{
event: "callback_15832235175585251131307383912", //返回与之前同样的注册时间戳
data: {
isError: false, //置为false
data: "ok"
}
}
发送消息
websocket节点发送消息格式如下。
{
event: 'broadcast',
data: {
event: "发送出去的消息1", //发送消息名称
data: {} //data为任意格式
}
}
接收消息
websocket节点接收消息格式如下。
{
event: "broadcast_接收到的消息1", //broadcast_${接收消息名称}
data: {} //data为任意格式
}
问题排查
无法正常连接websocket的服务端时,可根据以下步骤排查问题:
WS服务不能直接在HTTPS协议下访问,需要用WSS服务,在使用自己的SSL证书去代理WS服务地址后,才能在HTTPS下访问。
使用功能键F12,打开浏览器调试页面,查看浏览器network页签下的WS标签连接提示信息,检查是否因跨域未配置以及在连接返回的response的header里是否有设置Sec-WebSocket-Protocol为echo-protocol。
连接成功后,根据文档中的消息格式传递参数即可。
websocket-pro节点
websocket-pro节点为屏间通信节点,相较于websocket节点,它提供了更精细的配置选项,可以更好地控制屏间通信的细节。与websocket节点一致,每个消息由自定义的消息名称和上一个节点输出的数据组成。
使用场景
与websocket节点相同,websocket-pro节点用于多端之间的命令和数据传输。
使用方法
添加websocket-pro节点至蓝图画布中,可查看websocket-pro节点的配置参数。添加方式请参见使用逻辑节点。
节点配置
配置项说明
参数 | 说明 |
服务地址 | socket后端服务的地址。我们提供了DataV-WS工具包供您选择,具体操作请参见如何使用DataV-WS服务。 |
分组 | websocket-pro节点消息只在同socket服务下的同分组中进行广播。一般同一项目约定一个分组名称。 |
屏幕ID | 该websocket-pro节点所在屏幕的ID号,自定义输入。 |
屏幕名称 | 该Websocket-pro节点所在屏幕的名称,自定义输入。 |
包含的屏幕 | 发送消息时,在同分组下默认都能接收到消息,可以通过在该配置添加屏幕ID,指定需要接收到消息的屏幕。 |
排除的屏幕 | 发送消息时,在同分组下默认都能接收到消息,可以通过添加屏幕ID增加不要接收到消息的屏幕,优先级高于包含的屏幕。 |
接收消息 | 该websocket-pro节点发送到其他端的消息名称。单击右侧的新增事件按钮,添加一个接收消息。单击右侧的图标,删除接收消息。 接收消息标识:等同于ws消息内容中的event字段,命中该字段就能接收对应的消息。 接收消息别名:蓝图节点上锚点展示的名称。 处理方法:串行的数据处理方法。可在配置面板中添加多个处理方法,添加后,串行数据处理节点中显示您添加的处理方法;各方法共同实现数据处理,其中方法的输入为消息返回内容,输出为下游节点的输入。 接收消息别名:蓝图节点上锚点展示的名称。 处理方法:串行的数据处理方法。可在配置面板中添加多个处理方法,添加后,串行数据处理节点中显示您添加的处理方法;各方法共同实现数据处理,其中方法的输入为消息返回内容,输出为下游节点的输入。 |
发送消息 | 该websocket-pro节点发送到其他端的消息名称。单击右侧的新增动作按钮,添加一个发送消息。单击右侧的图标,删除发送消息。 发送消息标识:以该配置项的值作为消息体的event值发送消息。 发送消息别名:蓝图节点上锚点展示的名称。 处理方法:串行的数据处理方法。可在配置面板中添加多个处理方法,添加后,串行数据处理节点中显示您添加的处理方法;各方法共同实现数据处理,其中方法的输入为消息返回内容,输出为下游节点的输入。 |
扩展配置 | 对websocket-pro节点所在屏幕进行其他配置。 注册消息广播:对当前屏幕注册广播消息,方便通信。 未响应断开时长:设置当网络服务未响应时自动断开连接的时间。 心跳检测:设置网络通信的心跳检测,检测通信始终处于连接状态。 心跳检测间隔:设置通信连接状态检测的时间间隔。 |
锚点配置
事件/动作参数说明
事件/动作 | 说明 |
当接收此消息时 | 当接收此消息时,弹出的事件。通过设置接收消息标识和接收后处理方法,接收来自其他屏幕的消息。 |
自定义连接 | 设置网络通信的自定义连接。 |
发送此消息 | 发送此消息时,通过设置发送消息标识和发送前处理方法,发送给不同的屏幕。 |
自建socket服务
我们提供了DataV-WS工具包来自建服务,具体操作请参见如何使用DataV-WS服务。自建的websocket服务需要符合以下格式。
配置示例
注册消息
websocket-pro节点发送消息格式如下。
{
"source":"407194",
"target":["10000","20000"]
"data":{
"name":"数据源受控模式测试",
"group":"默认分组",
"hasCbMsg":true,
"disconnectTime":60000
},
"event":"register"
}
websocket-pro节点服务获取注册消息之后,需内部处理注册消息。如注册成功,再由客户端的hasCbMsg参数决定是否需要发送到接收端。如10s内客户端没有注册成功,断开该客户端连接。发出的消息格式如下:
{
"event":"register",
"source":"407194",
"data":{
"isError":false,
"data":"ok"
}
}
心跳检测
websocket-pro节点开启心跳检测时,需要的应答格式如下。
{
"event": "heartbeat",
"data": {
"group": "默认分组",
"hasCbMsg":true,
"disconnectTime": 60000
}
}
发送消息/接收消息
websocket-pro节点发送/接收消息结构一致,格式如下。
{
"event":"send_test",
"source":"407194",
"target":["10000","20000"],
"data":{
"zoom":12
}
}
websocket-pro附带的心跳、断开重连、包含的屏幕/排除的屏幕配置如果要生效,需要服务端根据客户端发送的消息体结构自定义满足。