[发明专利]一种基于业务实体BE的查询语言扩展方法及其基本实现方法在审
申请号: | 202010207432.5 | 申请日: | 2020-03-23 |
公开(公告)号: | CN111367941A | 公开(公告)日: | 2020-07-03 |
发明(设计)人: | 李琳杰;李玉成;孙立新;胡天岳 | 申请(专利权)人: | 山东浪潮通软信息科技有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/21;G06F8/30 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 刘淑风 |
地址: | 250100 山东省*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 业务 实体 be 查询 语言 扩展 方法 及其 基本 实现 | ||
1.一种基于业务实体BE的查询语言扩展方法,其特征在于,该方法以Tsql语言为基础,以一种内置数据和业务逻辑的结构“业务实体”BE为载体,通过Dom语法树转换器把统一查询语言的中间语法树转换为Dom语法树,基于生成的Dom语法树,利用BE数据结构和上下文中获取的数据库类型生成对应数据库的Sql语句。
2.根据权利要求1所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,具体步骤如下:
步骤S1、首先将传入的基于Tsql语法进行初步解析,解析为中间语法树;
步骤S2、然后将中间语法树转换为Dom语法树,并对Dom语法树里使用的表名表达式进行配置;
步骤S3、最后调用sql生成器对Dom语法树进行生成,在这个过程中利用业务实体BE对生成过程进行定制,将步骤S2中表名表达式转换为实际的表名。
3.根据权利要求2所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S1中,开发人员统一使用以Tsql语言作为开发语言,列名和表名的写法需要按照规则分别写成两段式:节点名字.属性名字、BE名字.节点名字;
如果需要字段穿透,需要写成多段式:节点名字.属性名字.属性名字.....属性名字。
4.根据权利要求2或3所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,所述中间语法树为第三方语法树,具体为Tsql-ScriptDom语法树或者Druid语法树。
5.根据权利要求2或3所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S2中,转换过程还包括对Dom语法树中相关业务的功能扩展,包括分表策略的转换、多语字段的转换、字段穿透。
6.根据权利要求2或3所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S2中,通过Dom语法树转换器将中间语法树转换为Dom语法树。
7.根据权利要求5所述的一种基于业务实体BE的查询语言扩展方法,其特征在于,步骤S2中,功能扩展的方式为硬编码、插件方式。
8.如权利要求1、2或3所述的一种基于业务实体BE的查询语言扩展基本实现方法,其特征在于,实现方法如下:
1)加载业务实体BE,BE初始化,不同的业务实体封装成不同“数据包”,叫做元数据,每一个元数据相当于一个数据库的多个表的集合,且有唯一的元数据ID,元数据下有多个节点(Object),每一个节点对应数据库中的一张表,第一步就是加载这些元数据,对元数据进行初始化;
2)生成Dom语法树中的扩展方法:在生成Dom语法树的过程中,对构造过程进行配置;
3)解析2)生成的Dom语法树,迭代sql语句中的定制方法,语法生成器对Dom语法树按照之前定义的规则进行迭代,保留sql中真正的列名,因为字段穿透后,原表名和列名不符合sq语法(如从B表中检索A表中字段),所以要给sql语句关联正确的表名,产生一个含有对应字段的联合表。
9.根据权利要求8所述的一种基于业务实体BE的查询语言扩展基本实现方法,其特征在于,使用LEFT JOIN关键字构造联合表。
10.根据权利要求8所述的一种基于业务实体BE的查询语言扩展基本实现方法,其特征在于,对构造过程进行配置是指:如当前存在关联字段,即BE上的某个节点中字段关联了另外一个节点的某个字段,需要首先对关联字段进行预处理,即从BE中取出关联字段实际对应的数据库列名,存储到Dom语法树中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东浪潮通软信息科技有限公司,未经山东浪潮通软信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010207432.5/1.html,转载请声明来源钻瓜专利网。