更新时间:2024-07-29 GMT+08:00

数据转发至FunctionGraph函数工作流

场景说明

对于设备上报到平台的数据,使用函数工作流FunctionGraph处理实时流数据。通过函数服务,用户只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,即可跟踪设备的设备属性、消息上报,状态变更,分析、整理和计量数据流。

本示例为将所有设备上报的属性转发至FunctionGraph函数工作流,根据设备资源空间Id的不同推送到用户Http服务器的不同路径,请您提供自行部署的Http服务器。本示例通过设备接入服务的数据转发能力来驱动事件函数,不需要额外配置触发器。

构建函数工程

本例提供了设备属性上报格式转换并转发到第三方应用的源码(包含函数依赖),用户可以下载学习使用。

创建工程

本例使用Java语言实现设备接入属性数据流式转换功能与推送功能,有关函数开发的过程请参考FunctionGraph的Java函数开发指南,本例不再介绍函数工作流函数实现的代码。

下载样例源码,解压缩并在Idea中导入工程。代码说明可参考:样例代码说明,其中用户自己的服务器地址通过函数环境变量NA_MOCK_SERVER_ADDRESS传入。

图1 样例代码说明

打包工程

使用Idea的Build Artifacts打包Jar,Idea配置及打包如下图所示。

图2 工程Artifacts Output 配置参考
图3 Build Artifacts

上传函数至FunctionGraph

在函数工作流工作台创建函数

  1. 登录函数工作流控制台在左侧导航栏选择函数 > 函数列表,进入函数列表界面。
  2. 单击“创建函数”,进入创建函数流程。
  3. 填写函数配置信息,如下图所示。

    选择:“创建空白函数”

    函数名称输入:“IoTDA_FUNCTION_HTTPCLIENT_DEMO”。

    运行时语言选择:“Java 8”

    图4 创建函数界面

  4. 单击下方“创建函数”,完成函数创建,完成函数创建后将自动跳转到该函数详情页。
  5. 在函数详情页中选择“代码”>“上传自”>“JAR文件”,上传程序打包文件夹中的代码包:FunctionGraphFun.jar。

    图5 上传代码界面

  6. 修改函数运行时参数,选择设置>常规设置配置函数执行入口:“com.huawei.iot.function.gamma.IoTDataFlowHttpClientTrigger.funTest”,填写完成后,单击打“保存”,保存配置信息。

    图6 设置函数执行入口

    函数默认内存为512MB,超时时间默认为15s,该样例仅演示功能,如需商用,请结合实际使用场景进行参数优化。

  7. 修改调用函数时传递的环境变量,配置环境变量“NA_MOCK_SERVER_ADDRESS”传入函数要推送的HttpServer地址,注意示例中服务器地址非真实服务器地址,请替换成您真实的http服务器地址,填写完成后,单击“保存”,保存配置信息。

    图7 配置函数调用环境变量

添加事件源

函数创建以后,可以为函数添加事件源,本例通过配置Http推送测试事件,模拟IoT数据转发过来的设备数据,步骤如下。

  1. 用户进入“IoTDA_FUNCTION_HTTPCLIENT_DEMO”函数详情页,选择“代码”>“配置测试事件”,弹出“配置测试事件”窗口。

    图8 配置测试事件

  2. 在“配置测试事件”窗口中,输入配置信息。

    配置测试事件选择:“创建新的测试事件”

    事件模板选择:“空白模板”

    事件名称输入:“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 配置测试事件

  3. 单击“保存”,完成测试事件配置。

测试数据

处理模拟数据步骤如下。

  1. 用户进入函数详情页,选择“event-property”测试事件,单击“测试”,测试函数。

    图10 配置测试事件

  2. 函数执行成功后,可在函数详情页右侧通过日志查看函数执行情况。

    图11 函数执行结果

配置设备接入服务

在设备接入服务中设置数据转发规则,实现当设备上报数据时将数据转发至FunctionGraph。

  1. 访问设备接入服务,单击“立即使用”进入设备接入控制台。
  2. 在左侧导航栏选择规则>数据转发,单击左上角的“创建规则”
  3. 参考下表参数说明,填写规则内容。以下参数取值仅为示例,您可参考数据转发简介创建自己的规则,填写完成后单击“创建规则”

    参数名

    参数说明

    规则名称

    自定义,如“iotda-functiongraph”。

    规则描述

    自定义,如“数据转发至FunctionGraph”。

    数据来源

    选择“设备属性”

    触发事件

    自动匹配“设备属性上报”

    资源空间

    选择“所有资源空间”。

    图12 新建属性上报流转规则-数据转发至FunctionGraph

  4. 单击“设置转发目标”页签,单击“添加”,设置转发目标,设置完成后单击“确定”按钮。

    参数名

    参数说明

    转发目标

    选择“函数工作流(FunctionGraph)”

    区域

    函数工作流当前仅支持转发至同区域的函数工作流服务。若未授权访问此区域的服务,请根据界面提示,配置云服务访问授权。

    目标函数

    选择在函数工作流创建的函数名称。

    图13 新建转发目标-转发至FunctionGraph

  5. 单击“启动规则”,激活配置好的数据转发规则。

验证操作

  • 您可以使用设备接入服务中注册的真实设备接入平台,上报对应产品物模型中定义的属性参数。
  • 您也可以使用模拟器模拟设备属性上报,操作方法请参考在线开发MQTT协议的智慧路灯

期望结果:能在用户服务端日志中查看到设备上报的数据。

图14 期望结果