ThingsBoard自定义万能查询节点entity query node

本文详细介绍了如何在ThingsBoard中自定义一个万能查询节点,该节点几乎可以替代其他节点,满足各种业务查询需求。通过修改官方包结构,创建并配置相关类,以及安装和导入自定义包,最终实现自定义规则节点的部署和使用。
摘要由CSDN通过智能技术生成

1、概述

大家好,我又更新干货了,还是那句话,我绝不分享那些照抄官网翻译的东西来骗订阅,我觉得那是浪费时间,要搞就搞干货,今天给大家分享ThingsBoard如何自定义规则节点,而且是万能查询节点,这是本人经过多次研究搞出来的,这个节点有什么特别之处呢?这个节点几乎可以代替其他节点,几乎满足你所有业务的查询,俗称万金油节点。我为什么说没有什么业务不能使用规则链实现呢?这个节点就占了很大的作用。

2、实现

2.1、下面官方的包结构

下载官方的自定义规则节点的下面,然后修改文件夹名字为你需要自定义的节点名字,如下图:

然后使用IDEA打开工程,修改POM的artifactId

2.2、自定义节点

工程结构如下图:

为什么要创建org.thingsboard.server.util呢?

因为thingsboard项目启动类扫描了org.thingsboard.server,我们自定义的SpringContextUtil需要被spring管理,需要初始化加载容器的bean。只要我们需要自定义节点,就需要获取dao-api下面定义的service类,如果默认的TbContext没有加载进去,我们都需要使用SpringContextUtil来动态创建bean对象,从而实现对当前service类下面方法的调用,下面给出了dao-api的所有service类定义。

定义EntityQueryNode类

/**
 * Copyright © 2018 The Thingsboard Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.thingsboard.rule.engine.node.entityquery;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
impor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了凡啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值