数据转发至FunctionGraph函数工作流
场景说明
对于设备上报到平台的数据,使用函数工作流FunctionGraph处理实时流数据。通过函数服务,用户只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,即可跟踪设备的设备属性、消息上报,状态变更,分析、整理和计量数据流。
本示例为将所有设备上报的属性转发至FunctionGraph函数工作流,根据设备资源空间Id的不同推送到用户Http服务器的不同路径,请您提供自行部署的Http服务器。本示例通过设备接入服务的数据转发能力来驱动事件函数,不需要额外配置触发器。
构建函数工程
本例提供了设备属性上报格式转换并转发到第三方应用的源码(包含函数依赖),用户可以下载学习使用。
创建工程
本例使用Java语言实现设备接入属性数据流式转换功能与推送功能,有关函数开发的过程请参考FunctionGraph的Java函数开发指南,本例不再介绍函数工作流函数实现的代码。
下载样例源码,解压缩并在Idea中导入工程。代码说明可参考:样例代码说明,其中用户自己的服务器地址通过函数环境变量NA_MOCK_SERVER_ADDRESS传入。
打包工程
使用Idea的Build Artifacts打包Jar,Idea配置及打包如下图所示。
上传函数至FunctionGraph
在函数工作流工作台创建函数
- 登录函数工作流控制台在左侧导航栏选择 ,进入函数列表界面。
- 单击“创建函数”,进入创建函数流程。
- 填写函数配置信息,如下图所示。
选择:“创建空白函数”。
函数名称输入:“IoTDA_FUNCTION_HTTPCLIENT_DEMO”。
运行时语言选择:“Java 8”。
图4 创建函数界面
- 单击下方“创建函数”,完成函数创建,完成函数创建后将自动跳转到该函数详情页。
- 在函数详情页中选择“代码”>“上传自”>“JAR文件”,上传程序打包文件夹中的代码包:FunctionGraphFun.jar。
图5 上传代码界面
- 修改函数运行时参数,选择“保存”,保存配置信息。
配置函数执行入口:“com.huawei.iot.function.gamma.IoTDataFlowHttpClientTrigger.funTest”,填写完成后,单击打图6 设置函数执行入口
函数默认内存为512MB,超时时间默认为15s,该样例仅演示功能,如需商用,请结合实际使用场景进行参数优化。
- 修改调用函数时传递的环境变量,配置环境变量“NA_MOCK_SERVER_ADDRESS”传入函数要推送的HttpServer地址,注意示例中服务器地址非真实服务器地址,请替换成您真实的http服务器地址,填写完成后,单击“保存”,保存配置信息。
图7 配置函数调用环境变量
添加事件源
函数创建以后,可以为函数添加事件源,本例通过配置Http推送测试事件,模拟IoT数据转发过来的设备数据,步骤如下。
- 用户进入“IoTDA_FUNCTION_HTTPCLIENT_DEMO”函数详情页,选择“代码”>“配置测试事件”,弹出“配置测试事件”窗口。
图8 配置测试事件
- 在“配置测试事件”窗口中,输入配置信息。
配置测试事件选择:“创建新的测试事件”。
事件模板选择:“空白模板”。
事件名称输入:“event-property”。
设备属性上报测试参数示例如下:
{ "resource":"device.property", "event":"report", "event_time":"string", "notify_data":{ "header":{ "app_id":"********", "device_id":"********", "node_id":"ABC123456789", "product_id":"ABC123456789", "gateway_id":"********", "tags":[{ "tag_key":"testTagName", "tag_value":"testTagValue" }] }, "body":{ "services":[{ "service_id":"string", "properties":{ }, "event_time":"string" }] } } }
图9 配置测试事件
- 单击“保存”,完成测试事件配置。
测试数据
处理模拟数据步骤如下。
- 用户进入函数详情页,选择“event-property”测试事件,单击“测试”,测试函数。
图10 配置测试事件
- 函数执行成功后,可在函数详情页右侧通过日志查看函数执行情况。
图11 函数执行结果
配置设备接入服务
在设备接入服务中设置数据转发规则,实现当设备上报数据时将数据转发至FunctionGraph。
- 访问设备接入服务,单击“立即使用”进入设备接入控制台。
- 在左侧导航栏选择“创建规则”。 ,单击左上角的
- 参考下表参数说明,填写规则内容。以下参数取值仅为示例,您可参考数据转发简介创建自己的规则,填写完成后单击“创建规则”。
参数名
参数说明
规则名称
自定义,如“iotda-functiongraph”。
规则描述
自定义,如“数据转发至FunctionGraph”。
数据来源
选择“设备属性”。
触发事件
自动匹配“设备属性上报”。
资源空间
选择“所有资源空间”。
图12 新建属性上报流转规则-数据转发至FunctionGraph
- 单击“设置转发目标”页签,单击“添加”,设置转发目标,设置完成后单击“确定”按钮。
参数名
参数说明
转发目标
选择“函数工作流(FunctionGraph)”
区域
函数工作流当前仅支持转发至同区域的函数工作流服务。若未授权访问此区域的服务,请根据界面提示,配置云服务访问授权。
目标函数
选择在函数工作流创建的函数名称。
图13 新建转发目标-转发至FunctionGraph
- 单击“启动规则”,激活配置好的数据转发规则。
验证操作
- 您可以使用设备接入服务中注册的真实设备接入平台,上报对应产品物模型中定义的属性参数。
- 您也可以使用模拟器模拟设备属性上报,操作方法请参考在线开发MQTT协议的智慧路灯。
期望结果:能在用户服务端日志中查看到设备上报的数据。