[发明专利]表达式的解析处理系统和解析处理方法有效
申请号: | 201210223624.0 | 申请日: | 2012-06-28 |
公开(公告)号: | CN102779044A | 公开(公告)日: | 2012-11-14 |
发明(设计)人: | 商平锋 | 申请(专利权)人: | 用友软件股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京友联知识产权代理事务所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
地址: | 100094 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 表达式 解析 处理 系统 方法 | ||
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种表达式的解析处理系统和解析处理方法。
背景技术
从业务应用角度,在处理业务对象过程中,经常遇到如下问题:
1)通过过滤条件,筛选出符合业务规则的结果集合。
2)某个业务对象的属性可能由其他属性决定或其他多个属性通过运算获取。
基于以上两个方面的应用,需要定义出一种值表达式设计或运行的业务模型,满足上述两方面的要求。
从技术角度,在描述业务对象属性时,有时该属性是有由他属性决定的,即由其他属性通过计算获得,计算的过程需要提前定义,该定义就是对表达式的描述。业务对象有多种表现形式,如表单,报表以及其过滤条件等等。在现有技术中,通常有如下两种解决方案:
1.对于解释型表达式框架,通过构造一个动态解析引擎,对表达式字符串动态解析处理,识别其中函数(系统函数和自定义函数)、参数、逻辑运算符以及运算的优先级,在运行时动态的调用相应的函数和参数转换。
2.基于Lamda表达式引擎,通过构造Lamda表达式树,编译后,传参调用,获取结果值。
方案1的问题在于表达式处理复杂度高。方案2的问题在于支持不够全面,目前只支持C#表达式,例如要生成Sql表达式则需要重新构造一套处理引擎,这是Lamda表达式局限性的一个方面,另一个方面则在于灵活性和扩展性无法满足复杂场景的业务要求。
因此,需要一种新的表达式的解析处理技术,可以有效解决构造动态解析引擎复杂度高的问题,还可以提供面向业务的易用性,并且支持复杂的业务场景的要求。
发明内容
本发明正是基于上述问题,提出了一种新的表达式的解析处理技术,可以有效解决构造动态解析引擎复杂度高的问题,还可以提供面向业务的易用性,并且支持复杂的业务场景的要求。
有鉴于此,本发明提出了一种表达式的解析处理系统,包括:生成单元,用于生成表达式语句;转换单元,用于对所述表达式语句进行转换,使之符合预设语言规则;编译单元,用于对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为二进制流;存储单元,用于将所述二进制流存储至数据库中,以供使用。在该技术方案中,通过表达式语句的转换,降低了编译难度和复杂程度,且具有更高的扩展性。
在上述技术方案中,优选地,还包括:规则设置单元,用于设置自定义元素的转换规则;所述转换单元还用于:获取所述表达式语句中的自定义元素,并根据所述自定义元素的种类,对所述自定义元素进行相应的转换,以将所述表达式语句转换为符合所述预设语言规则的表达式语句。
在上述技术方案中,优选地,所述转换单元进行转换的自定义元素包括自定义函数和/或自定义参数。
在上述技术方案中,优选地,还包括:加载单元,用于从数据库中获取所述二进制流,将所述二进制流反射为对应的表达式组件对象,并将所述表达式组件对象加载至缓存中;执行单元,用于调用所述表达式组件对象的执行接口,输入业务参数,以执行所述表达式组件对象,并返回执行结果。
在上述技术方案中,优选地,还包括:标识缓存单元,用于在加载所述表达式组件对象时,缓存所述表达式组件对象的第一时间戳和/或第一标识;判断单元,用于在所述执行单元进行操作之前,获取所述表达式组件对象的第二时间戳和/或第二标识,并判断所述第一时间戳与所述第二时间戳、和/或所述第一标识与所述第二标识是否发生变化,若是,则清除缓存,并由所述加载单元重新加载所述表达式组件对象。
根据本发明的又一方面,还提出了一种表达式的解析处理方法,包括:步骤202,生成表达式语句,并对所述表达式语句进行转换,使之符合预设语言规则;步骤204,对符合所述预设语言规则的表达式语句进行编译,以创建所述表达式语句的表达式组件,并将所述表达式组件生成为二进制流;步骤206,将所述二进制流存储至数据库中,以供使用。在该技术方案中,通过表达式语句的转换,降低了编译难度和复杂程度,且具有更高的扩展性。
在上述技术方案中,优选地,所述步骤202之前,还包括:设置自定义元素的转换规则;获取所述表达式语句中的自定义元素,并根据所述自定义元素的种类,对所述自定义元素进行相应的转换,以将所述表达式语句转换为符合所述预设语言规则的表达式语句。
在上述技术方案中,优选地,所述自定义元素包括自定义函数和/或自定义参数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友软件股份有限公司,未经用友软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210223624.0/2.html,转载请声明来源钻瓜专利网。