表达式的解析处理系统和解析处理方法技术方案

技术编号:7974807 阅读:187 留言:0更新日期:2012-11-15 22:38
本发明专利技术提供了一种表达式的解析处理系统,包括:生成单元,用于生成表达式语句;转换单元,用于对所述表达式语句进行转换,使之符合预设语言规则;编译单元,用于对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为二进制流;存储单元,用于将所述二进制流存储至数据库中,以供使用。相应地,本发明专利技术还提出了一种表达式的解析处理方法。通过本发明专利技术的技术方案,可以有效解决构造动态解析引擎复杂度高的问题,还可以提供面向业务的易用性,并且支持复杂的业务场景的要求。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体而言,涉及ー种。
技术介绍
从业务应用角度,在处理业务对象过程中,经常遇到如下问题I)通过过滤条件,筛选出符合业务规则的结果集合。2)某个业务对象的属性可能由其他属性决定或其他多个属性通过运算获取。基于以上两个方面的应用,需要定义出一种值表达式设计或运行的业务模型,满足上述两方面的要求。从技术角度,在描述业务对象属性时,有时该属性是有由他属性決定的,即由其他属性通过计算获得,计算的过程需要提前定义,该定义就是对表达式的描述。业务对象有多种表现形式,如表単,报表以及其过滤条件等等。在现有技术中,通常有如下两种解决方案I.对于解释型表达式框架,通过构造一个动态解析引擎,对表达式字符串动态解析处理,识别其中函数(系统函数和自定义函数)、參数、逻辑运算符以及运算的优先级,在运行时动态的调用相应的函数和參数转换。2.基于Lamda表达式引擎,通过构造Lamda表达式树,编译后,传參调用,获取结果值。方案I的问题在于表达式处理复杂度高。方案2的问题在于支持不够全面,目前 只支持C#表达式,例如要生成Sql表达式则需要重新构造ー套处理引擎,这是Lamda表达式局限性的ー个方面,另ー个方面则在于灵活性和扩展性无法满足复杂场景的业务要求。因此,需要一种新的表达式的解析处理技术,可以有效解决构造动态解析引擎复杂度高的问题,还可以提供面向业务的易用性,并且支持复杂的业务场景的要求。
技术实现思路
本专利技术正是基于上述问题,提出了一种新的表达式的解析处理技术,可以有效解决构造动态解析引擎复杂度高的问题,还可以提供面向业务的易用性,并且支持复杂的业务场景的要求。有鉴于此,本专利技术提出了一种表达式的解析处理系统,包括生成単元,用于生成表达式语句;转换单元,用于对所述表达式语句进行转换,使之符合预设语言规则;编译单元,用于对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为ニ进制流;存储单元,用于将所述ニ进制流存储至数据库中,以供使用。在该技术方案中,通过表达式语句的转换,降低了编译难度和复杂程度,且具有更高的扩展性。在上述技术方案中,优选地,还包括规则设置単元,用于设置自定义元素的转换规则;所述转换単元还用于获取所述表达式语句中的自定义元素,井根据所述自定义元素的种类,对所述自定义元素进行相应的转换,以将所述表达式语句转换为符合所述预设语言规则的表达式语句。在上述技术方案中,优选地,所述转换单元进行转换的自定义元素包括自定义函数和/或自定义參数。在上述技术方案中,优选地,还包括加载单元,用于从数据库中获取所述ニ进制流,将所述ニ进制流反射为对应的表达式组件对象,并将所述表达式组件对象加载至缓存中;执行单元,用于调用所述表达式组件对象的执行接ロ,输入业务參数,以执行所述表达式组件对象,并返回执行結果。在上述技术方案中,优选地,还包括标识缓存单元,用于在加载所述表达式组件对象时,缓存所述表达式组件对象的第一时间戳和/或第一标识;判断単元,用于在所述执行单元进行操作之前,获取所述表达式组件对象的第二时间戳和/或第二标识,并判断所 述第一时间戳与所述第二时间戳、和/或所述第一标识与所述第二标识是否发生变化,若是,则清除缓存,并由所述加载単元重新加载所述表达式组件对象。根据本专利技术的又一方面,还提出了一种表达式的解析处理方法,包括步骤202,生成表达式语句,并对所述表达式语句进行转换,使之符合预设语言规则;步骤204,对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为ニ进制流;步骤206,将所述ニ进制流存储至数据库中,以供使用。在该技术方案中,通过表达式语句的转换,降低了编译难度和复杂程度,且具有更高的扩展性。在上述技术方案中,优选地,所述步骤202之前,还包括设置自定义元素的转换规则;获取所述表达式语句中的自定义元素,井根据所述自定义元素的种类,对所述自定义元素进行相应的转换,以将所述表达式语句转换为符合所述预设语言规则的表达式语句。在上述技术方案中,优选地,所述自定义元素包括自定义函数和/或自定义參数。在上述技术方案中,优选地,所述步骤206之后,还包括步骤208,从数据库中获取所述ニ进制流,将所述ニ进制流反射为对应的表达式组件对象,并将所述表达式组件对象加载至缓存中;步骤210,调用所述表达式组件对象的执行接ロ,输入业务參数,以执行所述表达式组件对象,并返回执行結果。在上述技术方案中,优选地,所述步骤208还包括缓存所述表达式组件对象的第一时间戳和/或第一标识;所述步骤210之前还包括获取所述表达式组件对象的第二时间戳和/或第二标识,并判断所述第一时间戳与所述第二时间戳、和/或所述第一标识与所述第二标识是否发生变化,若是,则清除缓存,并返回所述步骤208以重新加载所述表达式组件对象。通过以上技术方案,可以有效解决构造动态解析引擎复杂度高的问题,还可以提供面向业务的易用性,并且支持复杂的业务场景的要求。附图说明图I示出了根据本专利技术的一个实施例的表达式的解析处理系统的框图;图2示出了根据本专利技术的一个实施例的表达式的解析处理方法的流程图3示出了根据本专利技术的一个实施例的表达式编辑器的框图;图4示出了根据本专利技术的另ー个实施例的表达式的解析处理方法的流程图;图5是图4所示的实施例的表达式解析处理的模块执行示意图。具体实施例方式为了能够更清楚地理解本专利技术的上述目的、特征和优点,下面结合附图和具体实施方式对本专利技术进行进一歩的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互組合。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是,本专利技术还可以采用其他不同于在此描述的其他方式来实施,因此,本专利技术的保护范围并不受下面公开的具体实施例的限制。 图I示出了根据本专利技术的一个实施例的表达式的解析处理系统的框图。如图I所示,根据本专利技术的一个实施例的表达式的解析处理系统100,包括生成単元102,用于生成表达式语句;转换单元104,用于对表达式语句进行转换,使之符合预设语言规则;编译单元106,用于对符合预设语言规则的表达式语句进行编译,以创建表达式语句的表达式组件,并将表达式组件生成为ニ进制流;存储单元108,用于将ニ进制流存储至数据库中,以供使用。在该技术方案中,通过表达式语句的转换,降低了编译难度和复杂程度,且具有更高的扩展性。在上述技术方案中,优选地,还包括规则设置単元110,用于设置自定义元素的转换规则;转换单元104还用于获取表达式语句中的自定义元素,并根据自定义元素的种类,对自定义元素进行相应的转换,以将表达式语句转换为符合预设语言规则的表达式语句。在上述技术方案中,优选地,转换单元104进行转换的自定义元素包括自定义函数和/或自定义參数。在上述技术方案中,优选地,还包括加载单元112,用于从数据库中获取ニ进制流,将ニ进制流反射为对应的表达式组件对象,并将表达式组件对象加载至缓存中;执行单元114,用于调用表达式组件对象的执行接ロ,输入业务參数,以执行表达式组件对象,并返回执行結果。在上述技术方案中,优选地,还包括标识缓存单元116,用于在加载表达式组件对象时,缓存表达式组件对象本文档来自技高网...

【技术保护点】
一种表达式的解析处理系统,其特征在于,包括:生成单元,用于生成表达式语句;转换单元,用于对所述表达式语句进行转换,使之符合预设语言规则;编译单元,用于对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为二进制流;存储单元,用于将所述二进制流存储至数据库中,以供使用。

【技术特征摘要】
1.一种表达式的解析处理系统,其特征在于,包括 生成単元,用于生成表达式语句; 转换单元,用于对所述表达式语句进行转换,使之符合预设语言规则; 编译单元,用于对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为ニ进制流; 存储单元,用于将所述ニ进制流存储至数据库中,以供使用。2.根据权利要求I所述的表达式的解析处理系统,其特征在于,还包括 规则设置単元,用于设置自定义元素的转换规则; 所述转换単元还用于获取所述表达式语句中的自定义元素,井根据所述自定义元素的种类,对所述自定义元素进行相应的转换,以将所述表达式语句转换为符合所述预设语言规则的表达式语句。3.根据权利要求2所述的表达式的解析处理系统,其特征在于,所述转换単元进行转换的自定义元素包括自定义函数和/或自定义參数。4.根据权利要求I至3中任一项所述的表达式的解析处理系统,其特征在于,还包括 加载单元,用于从数据库中获取所述ニ进制流,将所述ニ进制流反射为对应的表达式组件对象,并将所述表达式组件对象加载至缓存中; 执行单元,用于调用所述表达式组件对象的执行接ロ,输入业务參数,以执行所述表达式组件对象,并返回执行結果。5.根据权利要求4所述的表达式的解析处理系统,其特征在于,还包括 标识缓存单元,用于在加载所述表达式组件对象时,缓存所述表达式组件对象的第一时间戳和/或第一标识; 判断単元,用于在所述执行单元进行操作之前,获取所述表达式组件对象的第二时间戳和/或第二标识,并判断所述第一时间戳与所述第二时间戳、和/或所述第一标识与所述第二标识是否发生变化,若是,则清除缓存,...

【专利技术属性】
技术研发人员:商平锋
申请(专利权)人:用友软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1