System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机应用,更具体地,涉及一种基于自定义业务公式进行自动解析实现方法及系统。
技术介绍
1、在软件开发的过程中,涉及到复杂公式的运算,尤其是财务系统比如表单公式计算和报表取数等涵盖业务逻辑的运算,如果只是单纯的用程序代码处理结果,如特殊四则运算、函数的递归调用等,其实现比较简单粗略,对于稍微复杂的公式望尘莫及。并且公式解析计算业务逻辑的一种辅助,花费大的时间和精力去研究公式计算,对于开发人员和操作人员是一件耗时耗力的工作。
2、现有技术《sef解析器和edi解析器生成器》,公开了:创建一个sef语法,用于javacc程序自动生成sef解析器。可以在任何sef文件上使用专门编写的x12代码运行sef解析器,以便为该sef文件自动创建edi对象模型。然后,程序员可以编写应用程序代码来使用edi对象模型解析sef文件所描述的edi文档,并在内存中生成该edi文档的edi对象模型实例。应用程序代码还用于使用edi对象模型实例来有效地处理edi文档的edi事务。此外,应用程序代码用于在edi对象模型实例上使用edi对象模型来发出edi文档以供进一步使用。
3、然而,现有技术无法基于自定义函数对业务数据进行解析。
技术实现思路
1、本专利技术技术方案提供一种基于自定义业务公式进行自动解析实现方法及系统,以解决如何基于自定义业务公式进行业务数据自动解析的问题。
2、为了解决上述问题,本专利技术提供了一种基于自定义业务公式进行自动解析实现方法,所述
3、根据业务需求定义函数,并基于所述定义函数编写语法规则文件,以获取jj结尾文件和所述jjt结尾文件;
4、通过javacc读取jj结尾文件和所述jjt结尾文件,生成java程序;所述java程序包括词法分析器和语法分析器;
5、封装业务数据,并基于所述定义函数利用所述词法分析器和语法分析器对所述业务数据进行解析,获取解析结果。
6、优选地,还包括通过构建解析树定义函数:
7、将定义函数用到的所有条件节点通过横向树节点的形式表现出来,当条件节点之间如果是并且关系,所述条件节点在解析树中以串行的形式连接;
8、当条件节之间如果是或者关系,所述解析树会通过一个或节点将若干个条件节点连接;
9、如果总的条件节点使用并且连接,但分支节点上有并且和或者连接的条件节点,则在所述解析树上将分支节点上的并且条件以串行的形式连接,同时将分支节点上的或者条件使用或节点连接,再使用与节点将所有条件连接起来。
10、优选地,还包括:
11、当定义函数中有两个相同的条件,在构建所述解析树时会将相同的条件节点合并为一个节点,在所述解析树上通过一个节点显示;
12、所述根节点是一个接口,其中包括的抽象接口用于自定义扩展的业务。
13、优选地,所述java程序基于webservicebean协议对接外部接口。
14、优选地,所述词法分析器将一连串的字符序列划分成token的子序列,并对token进行分类;
15、将所述token传送给所述语法分析器以确定所述java程序的结构。
16、优选地,还包括:在所述jj结尾文件中定义函数:其中skip为要跳过忽略的字符串,token为要识别的字符串。
17、基于本专利技术的另一方面,本专利技术提供一种基于自定义业务公式进行自动解析实现系统,所述系统包括:
18、初始单元,用于根据业务需求定义函数,并基于所述定义函数编写语法规则文件,以获取jj结尾文件和所述jjt结尾文件;
19、生成单元,用于通过javacc读取jj结尾文件和所述jjt结尾文件,生成java程序;所述java程序包括词法分析器和语法分析器;
20、解析单元,用于封装业务数据,并基于所述定义函数利用所述词法分析器和语法分析器对所述业务数据进行解析,获取解析结果。
21、优选地,所述生成单元,还用于通过构建解析树定义函数:
22、将定义函数用到的所有条件节点通过横向树节点的形式表现出来,当条件节点之间如果是并且关系,所述条件节点在解析树中以串行的形式连接;
23、当条件节之间如果是或者关系,所述解析树会通过一个或节点将若干个条件节点连接;
24、如果总的条件节点使用并且连接,但分支节点上有并且和或者连接的条件节点,则在所述解析树上将分支节点上的并且条件以串行的形式连接,同时将分支节点上的或者条件使用或节点连接,再使用与节点将所有条件连接起来。
25、优选地,所述生成单元,还用于:
26、当定义函数中有两个相同的条件,在构建所述解析树时会将相同的条件节点合并为一个节点,在所述解析树上通过一个节点显示;
27、所述根节点是一个接口,其中包括的抽象接口用于自定义扩展的业务。
28、优选地,所述java程序基于webservicebean协议对接外部接口。
29、优选地,所述词法分析器将一连串的字符序列划分成token的子序列,并对token进行分类;
30、将所述token传送给所述语法分析器以确定所述java程序的结构。
31、优选地,还包括:在所述jj结尾文件中定义函数:其中skip为要跳过忽略的字符串,token为要识别的字符串。
32、本专利技术技术方案提供了一种基于自定义业务公式进行自动解析实现方法及系统,其中方法包括:根据业务需求定义函数,并基于定义函数编写语法规则文件,以获取jj结尾文件和jjt结尾文件;通过javacc读取jj结尾文件和jjt结尾文件,生成java程序;java程序包括词法分析器和语法分析器;封装业务数据,并基于定义函数利用词法分析器和语法分析器对业务数据进行解析,获取解析结果。本专利技术技术方案提出一种基于javacc的公式解析实现方案,满足企业的对于复杂公式解析的需求。本专利技术基于企业现实业务需要,通过复杂公式的解析运算,实现对各个模块或者系统复杂公式的支持,从而支撑业务运行。
本文档来自技高网...【技术保护点】
1.一种基于自定义业务公式进行自动解析实现方法,所述方法包括:
2.根据权利要求1所述的方法,还包括通过构建解析树定义函数:
3.根据权利要求2所述的方法,还包括:
4.根据权利要求1所述的方法,所述java程序基于WebServiceBean协议对接外部接口。
5.根据权利要求1所述的方法,所述词法分析器将一连串的字符序列划分成Token的子序列,并对Token进行分类;
6.根据权利要求5所述的方法,还包括:在所述jj结尾文件中定义函数:其中SKIP为要跳过忽略的字符串,TOKEN为要识别的字符串。
7.一种基于自定义业务公式进行自动解析实现系统,所述系统包括:
8.根据权利要求7所述的系统,所述生成单元,还用于通过构建解析树定义函数:
9.根据权利要求8所述的系统,所述生成单元,还用于:
10.根据权利要求7所述的系统,所述java程序基于WebServiceBean协议对接外部接口。
11.根据权利要求7所述的系统,所述词法分析器将一连串的字符序列划分成
12.根据权利要求11所述的系统,还包括:在所述jj结尾文件中定义函数:其中SKIP为要跳过忽略的字符串,TOKEN为要识别的字符串。
...【技术特征摘要】
1.一种基于自定义业务公式进行自动解析实现方法,所述方法包括:
2.根据权利要求1所述的方法,还包括通过构建解析树定义函数:
3.根据权利要求2所述的方法,还包括:
4.根据权利要求1所述的方法,所述java程序基于webservicebean协议对接外部接口。
5.根据权利要求1所述的方法,所述词法分析器将一连串的字符序列划分成token的子序列,并对token进行分类;
6.根据权利要求5所述的方法,还包括:在所述jj结尾文件中定义函数:其中skip为要跳过忽略的字符串,token为要识别的字符串。
7.一种基于...
【专利技术属性】
技术研发人员:董冬阳,于强,李兴卫,
申请(专利权)人:航信云享科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。