首页> 中国专利> 公式及公式数据处理装置和公式及公式数据处理方法

公式及公式数据处理装置和公式及公式数据处理方法

摘要

本发明提供了一种公式及公式数据处理装置,包括:配置管理单元,用于读取业务配置参数;缓存单元,存储不同业务服务对应的公式;解析单元,获取公式和与公式对应的业务标识,根据配置参数对公式进行拆分和解析,循环处理公式的字符串中的每个字符,生成数据结构集合;运算单元,响应计算请求,根据数据结构集合中的运算符和参与运算的量构造二叉树,根据业务标识对数据集合进行分组,调用业务适配器将分组传送给相应的业务处理服务进行处理,得到业务数据,将业务数据替换到二叉树中与业务数据对应的公式所在的位置,基于二叉树计算得到运算结果。为系统带来统一的公式处理机制,提供系统运行效率和稳定性。本发明还提供了一种公式数据处理方法。

著录项

  • 公开/公告号CN102521411A

    专利类型发明专利

  • 公开/公告日2012-06-27

    原文格式PDF

  • 申请/专利权人 畅捷通信息技术股份有限公司;

    申请/专利号CN201110447743.X

  • 发明设计人 王加位;

    申请日2011-12-28

  • 分类号G06F17/30(20060101);

  • 代理机构北京友联知识产权代理事务所(普通合伙);

  • 代理人尚志峰;汪海屏

  • 地址 100094 北京市海淀区北清路68号用友软件园

  • 入库时间 2023-12-18 05:43:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-09-18

    授权

    授权

  • 2012-09-05

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20111228

    实质审查的生效

  • 2012-06-27

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体而言,涉及公式及公式数据处理装 置和公式及公式数据处理方法。

背景技术

在目前的很多软件系统中都需要对一些公式作处理,如在财务系统, 税务系统,HR系统以及很多工业应用系统,但在这些系统中对公式的处 理都没有一种通用的处理机制,都只能解决各自的问题,代码的重用程度 不高,后期的维护复杂度加大,模块的可扩展性降低,对公式的支持单 一,导致产品的易用性不好,软件的研发成本增加。

在很多情况下,为了提高产品的运行效率和开发效率,还需要实现对 象间的运算,但在目前的软件系统中都避开了这种处理方式,牺牲了软件 的效率。

在通常的软件研发过程中,无论是软件平台部分还是产品开发部分, 也需要对一些公式处理的效率指标进行分析、需要对用户数据的公式进行 跟踪调试,如果产品中存在很多不同公式解析方法,要作一个统一的分析 处理是一件费力、费时的事情。在现有的部分系统中,如果要对不同系统 间的公式解析和公式计算进行整合,还面临着这些不同的系统在之前的开 发过程中固有的格式兼容问题,例如有的系统是用逗号做参数分隔符,有 的是用分号做参数分隔符等。

并且在很多系统中对公式的计算都是依次的单个运算,有N个业务公 式就至少需要向对应的业务服务发送N次计算请求,占用大量的服务器资 源。

因此,需要一种公式处理技术,可以解决上述技术问题。

发明内容

基于上述背景技术的考虑,本发明的一个目的是提供一种公式及公式 数据处理装置,本发明的另一目的是提供一种公式及公式数据处理方法, 其可以提供一种通用的公式处理机制,可以将对象作为参数来输入,提高 了系统的运行效率。

根据本发明的一个方面,提供了一种公式及公式数据处理装置,包 括:配置管理单元,用于读取配置文件中不同业务模块的配置参数并存储 在缓存单元中,所述配置参数包括与所述业务模块对应的业务标识、业务 服务库文件名及路径、分隔符、实现运算符重载的库文件名及路径;所述 缓存单元,接收从公式注册接口输入的不同业务标识对应的公式并进行缓 存,以及存储公式解析结果和所述配置参数;所述解析单元,获取所述缓 存单元中的所述公式和与所述公式对应的业务标识,根据所述配置参数对 所述公式进行拆分和解析,循环处理所述公式的字符串中的每个字符,生 成计算机语言能够识别的含有公式的数据结构集合;运算单元,响应计算 请求,根据每个所述数据结构集合中的运算符和参与运算的量构造二叉 树,根据业务标识对所述数据结构集合进行分组,调用业务适配器将经过 分组后的公式集合传送给相应的业务处理服务进行处理,得到业务数据, 将所述业务数据替换到所述二叉树中与所述业务数据对应的公式所在的位 置,形成一个具有业务数据的二叉树结构的公式数据结构体,基于所述二 叉树计算得到运算结果。

在该技术方案中,可以解决所有类似y=f(x)的公式解析和运算,并支 持公式的嵌套,提供一种通用的处理机制。

在上述技术方案中,优选地,所述解析单元可以包括:判断子单元, 判断当前从所述字符串中取出的字符的类型;逻辑处理子单元,根据字符 的不同类型选择相应的处理逻辑,将处理结果返回到所述字符串中最后一 个字符所在的位置,所述字符的类型包括字母、数字、分隔符和运算符。 针对每个字符的类型有相应的处理逻辑,得到结构性的数据,在调试状态 可以清晰地看到日志中记录的各个公式的结构。

在上述技术方案中,优选地,所述运算单元在构造所述二叉树时,将 所述二叉树的根节点设置为所述公式集合中的运算符,将所述二叉树的左 右叶子节点设置为参与运算的量,按照从所述二叉树的左树到所述二叉树 的右树的方向顺序进行递归运算,得到计算结果;所述运算单元在进行运 算时,还判断参与运算的量是否是复杂数据类型,若是复杂数据类型,则 根据存储的实现运算符重载的库文件名及路径,反射调用当前运算符相应 的服务接口进行计算,返回一个复杂数据对象,将所述复杂数据对象放入 所述二叉树中继续从左到右进行运算,得到计算结果。这种结构树准确体 现了公式中的各种运算关系以及参与运算的量,并且在运算时,可以按照 公式中运算符的优先级先后顺序的高低进行运算,进一步保证运算结果的 准确性。在运算时,也并不是对各公式进行单个依次运算,无需占用大量 的服务器资源,提高了运算效率,因为相同的公式计算一次之后,结果会 存入缓存中,下次计算直接取出,无需再次进行业务计算。

在上述技术方案中,优选地,所述配置管理单元按照配置文件中指定 的映射关系将所述配置参数进行缓存,所述配置参数包括所述业务标识和 分隔符的对应关系、业务标识和业务处理服务库文件的对应关系、业务标 识和运算符重载库文件的对应关系,所述解析单元根据与所述业务标识对 应的分隔符对所述公式进行解析拆分,例如有的系统公式是 FS(″6001″,″″,″年″,″月″,″贷″),有的系统公式是Fee(6001,年,月,贷),这样在 FS公式对应的业务系统中定义双引号与逗号作分隔符,Fee公式对应的业 务系统用逗号做分隔符即可。

在上述技术方案中,优选地,所述缓存单元还将输入的公式与所述公 式的业务标识进行关联缓存,具有相同所述业务标识的公式存储在同一组 中。

根据本发明的技术方案,可以解决所有类似y=f(x)的公式解析和运 算,并支持公式的嵌套,提供一种通用的处理机制;可以实现对象间的运 算,可以将对象作为参数输入;在调试状态可以清晰的查看到日志中记录 的各个公式的结构和处理对应的公式耗费的时间;可以通过配置关键字的 方式,解决诸如同一系统中不同模块公式格式不同的问题;可以对公式进 行分组处理,提高运行效率。

根据本发明的又一方面,还提供了一种公式数据处理方法,包括:步 骤202,读取配置文件中不同业务服务的配置参数,接收从公式注册接口 输入的不同业务标识对应的公式,根据所述配置参数对所述公式进行拆分 和解析,循环处理所述公式的字符串中的每个字符,生成计算机语言能够 识别的含有公式的数据结构集合,其中,所述配置参数包括分隔符、业务 处理服务库文件名及路径和运算符重载库文件名及路径分别与业务标识的 对应关系;步骤204,响应计算请求,根据所述含有公式的数据结构集合 中的运算符和参与运算的量构造二叉树,根据业务标识对所述数据结构集 合进行分组,并根据存储的业务标识对应的业务服务库文件名和路径,反 射调用相应的业务处理服务接口处理每个分组,得到业务数据,将所述业 务数据替换到所述二叉树中与所述业务数据对应的公式所在的位置,形成 一个具有业务数据的二叉树结构的公式数据结构体,基于所述二叉树计算 得到运算结果。

在上述技术方案中,优选地,循环处理所述公式对应的字符串中的每 个字符的过程包括:判断当前取出的字符的类型,若当前取出的字符是字 母,则调用字符处理逻辑对所述字符进行处理,返回处理结果到所述字符 串中最后一个字符所在的位置,将所述位置在当前字符串中的位置加1, 并作为下一个循环的起始值;若当前取出的字符是数字,则调用数字处理 逻辑对所述数字进行处理,返回处理结果到所述字符串中最后一个字符所 在的位置,将所述位置在当前字符串中的位置加1,并作为下一个循环的 起始值;若当前取出的字符是分隔符,则调用分隔符处理逻辑对所述分隔 符进行处理,返回处理结果到所述字符串中最后一个字符所在的位置,将 所述位置在当前字符串中的位置加1,并作为下一个循环的起始值;若当 前取出的字符是运算符,则调用运算符处理逻辑对所述运算符进行处理, 返回处理结果到所述字符串中最后一个字符所在的位置,将所述位置在当 前字符串中的位置加1,并作为下一个循环的起始值。

在上述技术方案中,优选地,所述步骤204还可以包括:所述二叉树 的根节点设置为所述公式集合中的运算符,所述二叉树的左右叶子节点设 置为参与运算的量,定义所述二叉树的左树的优先级高于所述二叉树的右 树,在进行数据计算时,判断参与运算的量是否为复杂数据类型,如果是 复杂数据类型,则根据存储的实现运算符重载的库文件名及路径,反射调 用当前运算符相应的服务接口进行计算,返回一个复杂数据对象,将所述 复杂数据对象放入所述二叉树中继续从左到右进行运算,得到计算结果。

在上述技术方案中,优选地,所述步骤202还包括:按照指定的映射 关系将所述配置参数进行缓存,所述配置参数包括业务标识和分隔符的对 应关系,根据与所述业务标识对应的分隔符对所述公式进行拆分。分隔符 例如逗号、分号。

在上述技术方案中,优选地,还可以包括:将输入的公式与所述公式 的业务标识进行关联缓存,具有相同所述业务标识的公式存储在同一组 中。

根据本发明的技术方案,可以解决所有类似y=f(x)的公式解析和运 算,并支持公式的嵌套,提供一种通用的处理机制;可以实现对象间的运 算,可以将对象作为参数输入;在调试状态可以清晰的查看到日志中记录 的各个公式的结构和处理对应的公式耗费的时间;可以通过配置关键字的 方式,解决诸如同一系统中不同模块公式格式不同的问题;可以对公式进 行分组处理,提高运行效率。

附图说明

图1示出了根据本发明的实施例的公式及公式数据处理装置的框图;

图2示出了根据本发明的实施例的公式及公式数据处理过程示意图;

图3示出了根据本发明的实施例的对公式进行缓存的示意图;

图4示出了根据本发明的实施例的公式解析的流程图;

图5示出了根据本发明的实施例的公式解析的流程图;

图6示出了根据本发明的实施例的公式数据处理方法的流程图;以及

图7示出了根据本发明的一个具体实施例在进行公式数据计算时的数 据结构图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附 图和具体实施方式对本发明进行进一步的详细描述。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是, 本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明 并不限于下面公开的具体实施例的限制。

图1示出了根据本发明的实施例的公式及公式数据处理装置的框图。

如图1所示,根据本发明的实施例的公式及公式数据处理装置100包 括:配置管理单元102,用于读取配置文件中不同业务模块的配置参数并 存储在缓存单元104中,所述配置参数包括与所述业务模块对应的业务标 识、业务服务库文件名及路径、分隔符、实现运算符重载的库文件名及路 径;缓存单元104,接收从公式注册接口输入的不同业务标识对应的公式 并进行缓存,以及存储所述配置参数和解析单元106产生的公式解析结 果;所述解析单元106,获取所述缓存单元104中的所述公式和与所述公 式对应的业务标识,根据所述配置参数对所述公式进行拆分和解析,循环 处理所述公式的字符串中的每个字符,生成计算机语言能够识别的含有公 式的数据结构集合;运算单元108,响应计算请求,根据每个所述数据结 构集合中的运算符和参与运算的量构造二叉树,根据业务标识对所述数据 结构集合进行分组,调用业务适配器将经过分组后的公式集合传送给相应 的业务处理服务进行处理,得到业务数据,将所述业务数据替换到所述二 叉树中与所述业务数据对应的公式所在的位置,形成一个具有业务数据的 二叉树结构的公式数据结构体,基于所述二叉树计算得到运算结果。

在该技术方案中,可以解决所有类似y=f(x)的公式解析和运算,并支 持公式的嵌套,提供一种通用的处理机制。

在上述技术方案中,优选地,配置的业务服务从一个给定的基类继 承,配置的实现运算符重载的库文件中的类从一个给定的基类;所述解析 单元106可以包括:判断子单元1062,判断当前从所述字符串中取出的 字符的类型;逻辑处理子单元1064,根据字符的不同类型选择相应的处 理逻辑,将处理结果返回到所述字符串中最后一个字符所在的位置,所述 字符的类型包括字母、数字、分隔符和运算符。针对每个字符的类型有相 应的处理逻辑,得到结构性的数据,在调试状态可以清晰地看到日志中记 录的各个公式的结构。

在上述技术方案中,优选地,所述运算单元108在构造所述二叉树 时,将所述二叉树的根节点设置为所述公式集合中的运算符,将所述二叉 树的左右叶子节点设置为参与运算的量,按照从所述二叉树的左树到所述 二叉树的右树的方向顺序进行递归运算,得到计算结果;所述运算单元 108在进行运算时,还判断参与运算的量是否是复杂数据类型,若是复杂 数据类型,则根据存储的实现运算符重载的库文件名及路径,反射调用当 前运算符相应的服务接口进行计算,返回一个复杂数据对象,将所述复杂 数据对象放入所述二叉树中继续从左到右进行运算,得到计算结果。这种 结构树准确体现了公式中的各种运算关系以及参与运算的量,并且在运算 时,可以按照先后顺序来进行运算,进一步保证运算结果的准确性。在运 算时,也并不是对各公式进行单个依次运算,无需占用大量的服务器资 源,提高了运算效率。

在上述技术方案中,优选地,所述配置管理单元102按照配置文件中 指定的映射关系将所述配置参数进行缓存,所述配置参数包括所述业务标 识和分隔符的对应关系,所述解析单元根据与所述业务标识对应的分隔符 对所述公式进行拆分。

在上述技术方案中,优选地,所述缓存单元104还将输入的公式与所 述公式的业务标识进行关联缓存,具有相同所述业务标识的公式存储在同 一组中。

根据本发明的技术方案,可以解决所有类似y=f(x)的公式解析和运 算,并支持公式的嵌套,提供一种通用的处理机制;可以实现对象间的运 算,可以将对象作为参数输入;在调试状态可以清晰的查看到日志中记录 的各个公式的结构和处理对应的公式耗费的时间;可以通过配置关键字的 方式,解决诸如同一系统中不同模块公式格式不同的问题;可以对公式进 行分组处理,提高运行效率。

在此,应该理解,本发明提供的一种通用的公式及公式数据处理装 置,可以应用于财务系统、报表系统、生产制造系统、人事系统、税务系 统,以及其它所有需要采用数学公式的系统;并且可以自动扩展到一些应 用或者计算比较特殊的领域,实现对象间的运算;通过将这个装置应用到 全系统中,可以为系统带来统一的公式处理机制,提高系统的运行效率和 稳定性。

图2示出了根据本发明的实施例的公式数据处理原理示意图。

如图2所示,描述了该公式及公式数据处理装置的内部系统结构图, 包括公式缓存组件(对应图1中的缓存单元104),公式解析组件(对应 图1中的解析单元106),四则运算组件(对应图1中的运算单元 108),配置管理组件(对应图1中的配置单元102)、对象数据处理组 件和业务适配器,各个模块之间协调运行过程如下:

步骤302,配置管理组件在公式及公式数据处理装置初始化时读取配 置参数(配置参数包括分隔符以及与分隔符对应的业务标识),并放入内 存。公式缓存组件通过公式注册接口接收不同业务模块的公式注册请求, 并存储在对应的缓冲区中,注册的公式包括公式名称和业务标志(即业务 标识)。

步骤304,公式解析组件接收传入的公式,响应解析请求,具体解析 过程如下:

读取在步骤302中存放内存中的配置信息;

将传入的公式根据配置信息进行解析;

将解析的结果存储在一个Hash表中;

将该Hash数据返回至公式解析组件。

公式解析组件继续接收传入的公式,响应解析请求,过程如下:

重复步骤304的解析请求,将公式及参数转入到Hash结构的数据 中;

将公式中所有的运算关系分解出来,并根据运算符号的优先级装入一 个自定义的结构体中,并同时将公式按公式名称进行分组,存入一个缓存 区。

步骤306,调用业务适配器,将缓存区中的公式传给不同的业务服务 进行处理,得到业务数据,每个业务数据都是一个对象;

判断返回的业务数据的实际类型,如果是简单类型,则暂时放入缓存 区,如果是复杂对象数据类型,例如dataTable型,则调用对象数据运算 组件进行大数据的计算,并将返回结果存入该原复杂对象数据的位置;

其中,对于不同业务系统的扩展运算,不同业务领域的人员只需从对 象数据运算组件的一个运算符处理基类继承,重载运算符,然后在配置文 件中增加实现运算符重载的库文件名及路径。

当所有的复杂对象数据类型都处理完成后,则进行简单数据间的四则 混合运算,最终得到计算结果。

下面针对图2中的相关组件进行详细说明。

(1)公式缓存组件

图3示出了公式在内存中的存储结构,具有相同业务标识的公式存储 在一个相同的组中。

第一:公式缓存组件可以存储不同业务类型的公式。

第二:根据接收到的数据,分析该数据的标签特征(即业务标识), 在缓存中建立不同的数据缓存段。将符合对应数据缓存段特征的数据存入 该数据缓存段对应的缓存区,以标签作为缓存的页标签。

第三:当向缓存区发出获取数据的请求时,根据请求的相关标签快速 定位到相关的数据缓存页并从缓存中取出所需数据。

(2)公式解析组件

该公式解析组件主要用来将单个或者多个公式解析成一定的计算机开 发语言可以识别并处理的数据结构。

该公式解析组件可以分为两种解析方式,一种是单个公式或单个公式 组成的集合的批量解析,例如,可以将单个公式数组如: {SLQC(″2010″,″1002″,″″,″″),QC(″1131″,″01″,″年″,″月″,″借″,″原币″,[部 门=″001″,客户=″002″])}解析成如下表1所示的数据结构:

表1

另一种是多个公式组合成的一个复杂公式的解析如 Formula1(…,)+Formula2(…),解析后的结果是对单个公式的再次封装成的 一个结构体,可以如下表2所示的数据结构:

表2

在String[]数组中存放的是对单个最小公式(如:Formula2(…))解析 后的各个元素,包括公式参数,公式名称,参数个数等。

如图4所示,在步骤402,首先响应公式解析请求;在步骤404,对 公式进行解析处理;在步骤406,将公式解析成计算机可识别并处理的数 据结构。

下面参照图5对公式的解析过程进行详细说明。

如图5所示,在步骤502,接收到传入的公式字符串和业务标识,进 行数据的初始处理:封装并转换到组件的数据对象中,构建合适的数据结 构。

在步骤504,读取配置信息,基于读取的配置信息,根据业务标识获 取对应的分隔符。

在步骤506,根据获取的分隔符对公式字符串进行拆分和解析。

在步骤508,循环取出每一个字符,判断当前取出的字符的类型:

如果当前取出的字符是普通字符(例如字母),则调用字符处理逻 辑,返回当前处理结果到最后一个字符在公式字符串中的位置;

如果取出的当前字符是一个数字(0-9或者小数点),则进入对应 的数字数据处理逻辑,返回当前处理结果到最后一个字符在公式字符串中 的位置;

如果当前取出的字符是配置信息中指定的分隔符,则进入分隔符处理 逻辑,返回当前处理结果到最后一个字符在公式字符串中的位置;

如果当前取出的字符是运算符,则进入运算符处理逻辑,返回当前处 理结果到最后一个字符在公式字符串中的位置。

以上的每一个处理逻辑都把分析出的结果存入一个缓存区中,该缓存 区由公式缓存组件管理,同时将分析结果返回。

在步骤510,将分析结果进行格式处理。

在步骤512,生成结构性数据并输出给调用方。

(3)四则运算组件

四则运算组件主要包括两部分:运算符部分和数据计算部分。

第一:根据公式解析组件解析产生的公式集合,将运算符及各个参与 运算的量构建成一棵二叉树。

第二:这棵二叉树的根节点是运算符号,左右叶子节点是参与运算的 量。

第三:在该二叉树中,左树的优先级高于右树,在运算时,以从左向 右的方向进行运算。

第四:对公式解析组件分析产生的公式集合进行分组并调用相应业务 处理的服务,得到业务数据。

第五:将业务数据替换到这棵二叉树中生成对应业务数据的公式所在 位置。

第六:从左向右进行计算并得到计算结果,其中,在运算时分两种情 况:

1)如果当前参与运算的量是简单数据类型,例如字符型、数字型、 日期型,则对这些数据进行直接运算。

2)如果当前参与运算的量是复杂数据类型,例如datatable等,则调 用相应业务服务的复杂数据计算服务处理,并得到最后的计算结果。

(4)配置管理组件

本配置管理组件,主要用来管理当前发明的配置信息,主要包括公式 分隔符配置和扩展业务模块配置。

如图6所示,在步骤602,在公式及公式数据处理装置启动、初始化 时,接收到读取配置请求。

在步骤604,判断是否存在配置文件,若不存在,则进入步骤606, 设置默认配置信息,若不存在,则进入步骤608。

在步骤608,读取配置信息并存入缓存。配置管理组件读取的分隔符 配置信息,主要包括:公式的参数分隔符(如逗号,分号等),业务扩展 模块标识符;将该分割符配置信息读取出来之后,按配置中指定的映射关 系存储在内存中。配置管理组件还读取扩展业务模块的配置信息,主要包 括:扩展业务模块的程序集位置,扩展业务模块的服务接口,扩展业务模 块的标识符,将该扩展业务模块的配置信息读取出来之后,按配置中指定 的映射关系存储在内存中。

图6示出了根据本发明的实施例的公式及公式数据处理方法的流程 图。

如图6所示,根据本发明的实施例的公式数据处理方法,包括:步骤 202,读取配置文件中不同业务服务的配置参数,接收从公式注册接口输 入的不同业务标识对应的公式,根据配置参数对公式进行拆分和解析,循 环处理公式的字符串中的每个字符,生成计算机语言能够识别的含有公式 的数据结构集合,其中,所述配置参数包括分隔符、业务处理服务库文件 名及路径和运算符重载库文件名及路径分别与业务标识的对应关系;步骤 204,响应计算请求,根据所述含有公式的数据结构集合中的运算符和参 与运算的量构造二叉树,根据业务标识对所述数据结构集合进行分组,并 根据存储的业务标识对应的业务服务库文件名和路径,反射调用相应的业 务处理服务接口处理每个分组,得到业务数据,将所述业务数据替换到所 述二叉树中与所述业务数据对应的公式所在的位置,形成一个具有业务数 据的二叉树结构的公式数据结构体,基于所述二叉树计算得到运算结果。

在上述技术方案中,优选地,循环处理所述公式对应的字符串中的每 个字符的过程包括:判断当前取出的字符的类型,若当前取出的字符是字 母,则调用字符处理逻辑对所述字符进行处理,返回处理结果到所述字符 串中最后一个字符所在的位置,将所述位置在当前字符串中的位置加1, 并作为下一个循环的起始值;若当前取出的字符是数字,则调用数字处理 逻辑对所述数字进行处理,返回处理结果到所述字符串中最后一个字符所 在的位置,将所述位置在当前字符串中的位置加1,并作为下一个循环的 起始值;若当前取出的字符是分隔符,则调用分隔符处理逻辑对所述分隔 符进行处理,返回处理结果到所述字符串中最后一个字符所在的位置,将 所述位置在当前字符串中的位置加1,并作为下一个循环的起始值;若当 前取出的字符是运算符,则调用运算符处理逻辑对所述运算符进行处理, 返回处理结果到所述字符串中最后一个字符所在的位置,将所述位置在当 前字符串中的位置加1,并作为下一个循环的起始值。

在上述技术方案中,优选地,所述步骤204还可以包括:所述二叉树 的根节点设置为所述公式集合中的运算符,所述二叉树的左右叶子节点设 置为参与运算的量,定义所述二叉树的左树的优先级高于所述二叉树的右 树,在进行数据计算时,判断参与运算的量是否为复杂数据类型,如果是 复杂数据类型,则根据存储的实现运算符重载的库文件名及路径,反射调 用当前运算符相应的服务接口进行计算,返回一个复杂数据对象,将所述 复杂数据对象放入所述二叉树中继续从左到右进行运算,得到计算结果。

在上述技术方案中,优选地,所述步骤202还包括:按照指定的映射 关系将所述配置参数进行缓存,所述配置参数包括业务标识和分隔符的对 应关系,根据与所述业务标识对应的分隔符对所述公式进行拆分。分隔符 例如逗号、分号。

在上述技术方案中,优选地,还可以包括:将输入的公式与所述公式 的业务标识进行关联缓存,具有相同所述业务标识的公式存储在同一组 中。

根据本发明的技术方案,可以解决所有类似y=f(x)的公式解析和运 算,并支持公式的嵌套,提供一种通用的处理机制;可以实现对象间的运 算,可以将对象作为参数输入;在调试状态可以清晰的查看到日志中记录 的各个公式的结构和处理对应的公式耗费的时间;可以通过配置关键字的 方式,解决诸如同一系统中不同模块公式格式不同的问题;可以对公式进 行分组处理,提高系统的运行效率。

如图7所示,如果要计算FS(″6001″,″″,″年″,″月″,″贷″)+Fee(″6051″,″″,″ 年″,″月″,″贷″)×1.1+100这样的一个财务公式,在计算时构建的一个二叉 树的数据结构图(参见图7)。

第一步:使用者需要调整配置文件,包括公式名为FS和Fee对应的 业务标识;FS和Fee分别对应的业务模块计算数据时的库文件(如DLL 文件)名及路径,计算数据的实现类从装置中指定的基类继承;如果需要 对象复杂对象级的运算,还需要配置实现运算符重载的库文件名及路径; 实现类从装置中指定的基类继承。

第二步:将这个组合公式根据上面的技术方案,将各个计算量: FS(″6001″,″″,″年″,″月″,″贷″)、Fee(″6051″,″″,″年″,″月″,″贷″)、1.1、100及 运算符的优先级构造成一个二叉树。

第三步:将组合公式中的子公式进行解析,生成一个公式结构体替换 原公式所在位置的计算量;图7中的701即FS(″6001″,″″,″年″,″月″,″贷″)解 析后的公式结构体;702是Fee(″6051″,″″,″年″,″月″,″贷″)的公式结构体。

第四步:根据上面的技术方案进行计算,反射调用公式名称为FS对 应的业务服务接口并传入701,得到计算结果,再将701替换成计算后的 数据;反射调用公式名称为Fee对应的业务服务接口并传入702,得到计 算结果,再将702替换为计算后的数据;

第五步:当整个二叉树上的计算量都是最终结果时,再进行最后一次 计算,得到计算结果。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于 本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精 神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明 的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号