物联网平台与kettle技术的结合(三)

上篇文章主要介绍了将tb的websocket接口进行透传,转化为业务所需要的格式。上上篇文章讲得是如何将tb的rest接口进行透传,转化为标准的格式。  基于以上两篇文章属于对单接口的改造能力,本篇文章就介绍一下如何将tb的多个接口进行聚合,以满足复杂的业务场景。

问题 :

需求:查询某资产所包含的所有设备(出参应包含设备名称,设备描述,设备状态)。

分析:请求参数肯定是资产id,查看tb平台的api,发现只能根据资产id获取该资产包含的所有设备id。也就是说只能获取到资产和设备的关系。如果想获取设备的详细信息(设备名称,设备描述等)是需要设备相关的api接口去解决的。当然,tb提供了根据设备id获取设备详情信息的接口。这就需要聚合接口来查询了。之前我介绍过kettle平台的强大功能,kettle善于处理多数据源的数据聚合,善于处理数据协议与格式的转换。很明显是非常适合用来解决此类问题的。下面是tb相关接口(关系接口和设备接口)

物联网平台与kettle技术的结合(三)

方案:

采用kettle平台处理。下图为编写的kettle转换文件。

物联网平台与kettle技术的结合(三)

 查看“REST Client”节点,你会发现调用的就是tb的关系接口,根据资产id将资产与设备的关系查询出来。

物联网平台与kettle技术的结合(三)

 查看“解决result接口”,是通过js去调用tb的设备详情接口来实现的,并最终将数据封装成标准的json格式。

物联网平台与kettle技术的结合(三)

将kettle转换文件上传到kettle平台,并进行测试。

物联网平台与kettle技术的结合(三)

最终输出结果如下:

{
    "success":true,
    "resultCode":"00",
    "resultMsg":"",
    "result":[
        {
            "name":"1_G03",
            "id":"53858b20-8554-11eb-bccd-c11a74ecd150",
            "nickname":"出线柜",
            "note":"出线柜"
        },
        {
            "name":"1_G02",
            "id":"5386eab0-8554-11eb-bccd-c11a74ecd150",
            "nickname":"电源计量柜",
            "note":"电源计量柜"
        },
        {
            "name":"1_G01",
            "id":"53884a40-8554-11eb-bccd-c11a74ecd150",
            "nickname":"电源进线",
            "note":"电源进线"
        },
        {
            "name":"1_G05",
            "id":"538a4610-8554-11eb-bccd-c11a74ecd150",
            "nickname":"出线柜",
            "note":"出线柜"
        },
        {
            "name":"1_G01_ZB",
            "id":"538bf3c0-8554-11eb-bccd-c11a74ecd150",
            "nickname":null,
            "note":null
        },
        {
            "name":"1_G04",
            "id":"53903980-8554-11eb-bccd-c11a74ecd150",
            "nickname":"出线柜",
            "note":"出线柜"
        },
        {
            "name":"1_G06",
            "id":"53928370-8554-11eb-bccd-c11a74ecd150",
            "nickname":"出线柜",
            "note":"出线柜"
        },
        {
            "name":"1_G03_ZB",
            "id":"946e6cf0-878f-11eb-b0f9-870b9c7d858c",
            "nickname":null,
            "note":null
        },
        {
            "name":"1_G04_ZB",
            "id":"a9b92b90-878f-11eb-b0f9-870b9c7d858c",
            "nickname":null,
            "note":null
        },
        {
            "name":"1_G05_ZB",
            "id":"b48ffb20-878f-11eb-b0f9-870b9c7d858c",
            "nickname":null,
            "note":null
        },
        {
            "name":"1_G06_ZB",
            "id":"baf58de0-878f-11eb-b0f9-870b9c7d858c",
            "nickname":null,
            "note":null
        }
    ]
}

 总结:

本篇文章介绍了如何通过kettle平台将tb的接口进行聚合,来满足实际的业务需求。如果遇到复杂的业务场景,接口聚合是不可避免的,使用kettle平台作为中台是一个很好的选择,因为通过kettle平台几乎可以满足所有的业务聚合转换需求。

上一篇:dubbo note


下一篇:java代码练习 work122