本节以第一个流程为基础,创建第二个流程,开始从外部源(中国地震台网)引入数据,以在本地做一些有用的事情。
● 定期从中国地震台网检索信息。
● 将检索信息转换成有用的形式。
● 在Debug节点右侧边栏调试窗口显示结果。
将inject节点从节点面板拖到工作区,拖入后界面如图3-10所示。
在上一节中,inject节点用于手动触发流程。在本节中,inject节点将配置为定期自动触发流程。双击节点打开编辑对话框,将“重复”属性设置为周期性执行(每隔5分钟)(如图3-11所示),设置完成以后单击“完成”按钮关闭对话框。
图3-10 拖入inject节点后的界面
图3-11 设置周期性执行的inject节点
将http request节点从节点面板拖入工作区。如图3-12所示,双击该节点,将它的URL属性设置为http://www.ceic.ac.cn/ajax/speedsearch,将节点名称修改为“请求地震台网数据”,然后单击“完成”按钮关闭对话框。
图3-12 http request节点的设置界面
添加完http request节点后的流程界面如图3-13所示。
图3-13 添加完http request节点后的流程界面
将debug节点从节点面板拖入工作区,然后连接inject节点的输出到“请求地震台网数据”节点的输入,连接“请求地震台网数据”的输出到debug节点的输入,如图3-14所示。
图3-14 添加debug节点后的流程界面
添加debug节点的目的是了解网站返回的数据。现在单击inject节点头部的注入按钮,流程执行后打印出的结果如图3-15所示。
图3-15 流程执行后打印出的结果
注意,从调试窗口的打印结果可以看出,网站返回的是一个JSON字符串。注意,这里仅需要小括号内的内容。
添加function节点并双击以编辑其属性,在“函数”面板中输入以下代码:
如图3-16所示,修改节点名称为“格式化数据”,然后单击“完成”按钮关闭。连接“请求地震台网数据”的输出到“格式化数据”的输入。从debug节点输出的数据分析可知,现在“格式化数据”输出的是payload中的shuju属性。
图3-16 添加function节点后的流程界面
添加split节点并双击以编辑其属性。根据默认配置,split节点会自动将数组中的每个元素拆分为消息。所以,这里不需要配置split节点的动作,只修改split节点名称为“拆分数据”,然后将流程连接起来。添加split节点后的流程界面如图3-17所示。
图3-17 添加split节点后的流程界面
添加switch节点并双击以编辑其属性,修改节点名称为“过滤大于7级的地震”,“属性”设置为msg.payload.M,这是因为根据网站返回的数据结构,msg.payload.M里存放的是地震震级数据,条件设置为“>=number 7”,只滤出震级大于等于7的地震消息。具体配置界面如图3-18所示。
图3-18 添加switch节点配置界面
单击“完成”按钮关闭,添加switch节点后的流程界面如图3-19所示。
图3-19 添加switch节点后的流程界面
添加function节点并双击以编辑其属性,修改节点名称为“组装显示数据”,在“函数”面板输入以下代码:
这里是只显示每条消息中的震级、发生地点、发生时间,其余消息就不显示了。连接“过滤大于7级的地震”的输出到“组装显示数据”的输入。
至此,所有的节点已经建立完成,整个流程全貌如图3-20所示。
图3-20 创建的第二个流程全貌示例
单击“部署”按钮将流程部署到服务器。单击 按钮打开右侧边栏调试窗口,单击inject节点头部的“注入”按钮,可以在调试窗口看到图3-21所示消息。
此流程每5分钟自动触发一次,并从URL的返回中解析数据并显示在调试窗口。它还会检查数据中的量级值,并为任何量级大于等于7的消息分支流。此类消息的有效负载会被显示在调试窗口中。