本发明涉及数据解析技术领域,具体涉及一种基于动态字节码技术自动适配传感器数据解析方法。
背景技术:
随着物联网、人工智能的迅速崛起,同时智能设备迅速普及,越来越多的行业依赖于使用传感器设备完成自动化、智能化。
由于传感器数据主要依靠网络传输数据,考虑到数据安全性以及数据传输速度,传感器生产厂家都有各自数据传输标准以及自定义加密方式。
传感器多样化以及没有统一标准导致下游数据收集系统接入传感器数据需要兼容各种标准,数据接入工作繁琐而且不易于扩展和后期维护。
目前大部分系统开发主要存在以下缺点:
(1)数据接入类型过多,每一种一个规则,维护成本高。
(2)主要采取字符串截取方式获取数据地址,截取错误率高,不利于问题排查。
(3)对传感器数据计算没有统一计算规则。
(4)在数据接收过程中产生大量数据实体,代码公用性差。
(5)由于大量静态规则与数据计算,导致无法在线实时接入,需要停机更新,增加运维成本。
综上所述,急需一种基于动态字节码技术自动适配传感器数据解析方法以解决现有技术中存在的问题。
技术实现要素:
本发明目的在于提供一种基于动态字节码技术自动适配传感器数据解析方法,以解决不同厂家、不同类型传感器数据规则解析以及校验。
为实现上述目的,本发明提供了一种基于动态字节码技术自动适配传感器数据解析方法,包括以下步骤:
步骤一:数据相关配置项;定义数据实体基类,根据不同类型、不同厂家传感器配置相关属性以及解析、校验规则;
步骤二:前置校验适配器;根据传感器配置动态产生步骤一中的传感器类型的数据实体代理类;通过读取代理类中配置信息进行数据长度、结构、类型和数据阈值的校验;
步骤三:数据处理分解器;利用数据代理类中的字段配置信息进行数据类型分解,并将分解数据存入数据实体代理类中;
步骤四:后置数据规则解析器;将步骤三中分解后的数据通过数值分析进行数据类型转换,将转换完成后得到的传感器真实数据值存入数据实体代理类中;
步骤五:后置数据校验器;通过正则或数据规则引擎对存入数据实体代理类中的数据进行数据长度、结构、类型和数据阈值的校验。
进一步地,所述前置校验适配器能够自定义扩展校验适配器,在调用默认校验器之后,数据流向自定义扩展校验器。
进一步地,所述数据处理分解器能够自定义扩展数据分解器,在调用默认校验器之后,数据流向自定义扩展分解器。
进一步地,所述后置数据规则解析器能够自定义扩展解析器,在调用默认校验器之后,数据流向自定义扩展解析器。
进一步地,所述后置数据校验器能够自定义扩展校验适配器,在调用默认校验器之后,数据流向自定义扩展校验器。
进一步地,所述默认校验器通过系统配置方式,获取数据转化16进制进行字符串截取或正则表达式进行匹配。
进一步地,所述定义数据实体基类是以java语言动态代理以及动态字节码技术为基础,在java数据解析系统中定义的。
应用本发明的技术方案,具有以下有益效果:
(1)本发明根据大量不同类型、不同厂家传感器设备数据传输特点,采用动态代理、动态字节码技术、前置适配器以及后置数据处理器对不同传感器数据进行配置适配数据解析,通过配置能轻松解决不同厂家、不同类型传感器数据规则解析以及校验,从而达到高效、易维护、可扩展等效果,最大程度增加数据接入开发效率。
(2)本发明在数据解析过程中可通过配置自定义数据计算公式(数值分析)进行动态数据转换,同时也可通过正则、数据规则引擎等进行数据校验,降低开发人员技术实现难度。
(3)本发明在解析技术中可配置默认规则,也可扩展自定义解析器,从而能覆盖市面大部分传感器数据结构,可提高系统代码复用性、扩展性和持续维护性。
(4)采用本发明所述的方法,系统开发者同样可自定义开发配套配置界面,从而更加降低数据接入工作专业性,提高现场传感器接入效率。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是传感器数据解析方法的流程图;
图2是数据流程图。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
实施例1:
参见图1~图2,一种基于动态字节码技术自动适配传感器数据解析方法,包括以下步骤:
步骤一:数据相关配置项;定义数据实体基类,根据不同类型、不同厂家传感器配置相关属性以及解析、校验规则。
步骤二:前置校验适配器;根据传感器配置动态产生步骤一中的传感器类型的数据实体代理类。数据通过读取代理类中配置信息进行数据长度、结构、类型和数据阈值等多维度校验。可自定义扩展校验适配器,在调用默认校验器之后,数据流向自定义扩展校验器。
步骤三:数据处理分解器;利用数据代理类中的字段配置信息进行数据类型分解,并将分解数据存入数据实体代理类中。可自定义扩展数据分解器,在调用默认校验器之后,数据流向自定义扩展分解器。
步骤四:后置数据规则解析器;将步骤三中分解后的数据根据数值分析进行数据类型转换,将转换完成后得到的传感器真实数据值存入数据实体代理类中。可自定义扩展解析器器,在调用默认校验器之后,数据流向自定义扩展解析器。默认解析器通过系统配置方式,获取数据转化16进制进行字符串截取或正则表达式进行匹配。
步骤五:后置数据校验器;通过正则或数据规则引擎对存入数据实体代理类中的数据进行数据长度、结构、类型和数据阈值的校验。可自定义扩展校验适配器,在调用默认校验器之后,数据流向自定义扩展校验器。
基于上述数据解析方法进行分步模拟实验:
(1)通过javassit字节码结束动态生成数据类。
(2)根据长度、特殊位置特殊值正则匹配校验、反射扩展校验;且适配制定分解器。
(3)分解后字节数据自定义各种类型数据解析器(主要包括16进制转换、高地位调换、crc校验等)。
(4)采用jexl2技术针对解析后的数据进行公式匹配运算。
(5)通过后置正则配置、反射扩展校验校验数据合法性。
实验结果表明,本发明方法能够解决不同厂家、不同类型传感器数据规则解析以及校验。本发明以java语言动态代理以及动态字节码技术为基础,在java数据解析系统中定义传感器数据基类,在java运行时环境中基于字节码动态产生不同类型传感器数据代理类。本发明数据解析解析方法的主要实现思路借鉴springbean管理流程,针对不同实体类型进行动态代理;在类实例化过程中切入不同类型的数据处理器达到对不同数据实体进行实例管理。本发明数据解析流程主要分为:前置校验适配器、前置数据分解器、后置数据规则解析器、后置数据校验器。解析结构遵循程序开发“开闭原则”,每一类处理器都有默认通用解析规则进行标准适配,同样每一类处理器都可自定义扩展更丰富处理规则。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。