CN100437587C - 一种基于数据库的业务处理方法及装置 - Google Patents
一种基于数据库的业务处理方法及装置 Download PDFInfo
- Publication number
- CN100437587C CN100437587C CNB2006101564539A CN200610156453A CN100437587C CN 100437587 C CN100437587 C CN 100437587C CN B2006101564539 A CNB2006101564539 A CN B2006101564539A CN 200610156453 A CN200610156453 A CN 200610156453A CN 100437587 C CN100437587 C CN 100437587C
- Authority
- CN
- China
- Prior art keywords
- statement
- instantiation
- expression formula
- database
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于数据库的业务处理方法与装置,该方法包括:按照预置格式输入业务处理的表达式;将所述表达式转换成数据库语言格式的语句;执行所述数据库语言格式的语句。该装置包括:编辑单元,用于让用户通过该单元输入预置格式的表达式;编译单元,用于将所述表达式转换成数据库语言格式的语句;执行单元,用于执行所述数据库语言格式的语句。通过本发明的方法及装置,可以使用户可以用简明易懂的表达式描述业务计算规则和业务逻辑,并利用本发明将其自动转换为关系数据库的语句进行执行,从而达到了表达的面向用户和执行大数据量记录的高效性。
Description
技术领域
本发明涉及应用业务技术,特别涉及一种基于数据库的业务处理方法及装置。
背景技术
在基于关系数据库的业务应用软件系统设计中,常常会遇到用户需要进行业务规则定制、公式定制的情况。
业务规则即为包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑。业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技术人员使用面向对象的技术语言或脚本来定制。业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。
为了便于用户进行业务规则定制、公式定制,目前通常有两种做法:第一种是设计一个能通过公式或脚本语言(规则语言)表达业务逻辑的部件,此部件通常称为业务规则引擎;第二种是将数据库存储过程视为定制手段,在设计上利用数据库系统提供的脚本语言进行一定程度的用户规则和计算定制能力支持。以下对上述两种方法分别进行说明。
首先,说明第一种做法:
规则引擎是一种嵌入在应用程序中的组件,它的任务是把当前提交给引擎的数据对象与加载在引擎中的业务规则进行测试和比对,激活那些符合当前数据状态下的业务规则,根据业务规则中声明的执行逻辑,触发应用程序中对应的操作。
由于规则引擎是软件组件,所以只有开发人员才能够通过程序接口的方式使用和控制它,规则引擎的程序接口至少包含以下几种API:加载和卸载规则集的API;数据操作的API;引擎执行的API。
开发人员在程序中使用规则引擎基本遵循以下5个典型的步骤:创建规则引擎对象;向引擎中加载规则集或更换规则集;向引擎提交需要被规则集处理的数据对象集合;命令引擎执行;导出引擎执行结果,从引擎中撤出处理过的数据。使用了规则引擎后,许多涉及业务逻辑的程序代码基本被这五个典型步骤所取代。
规则引擎技术为管理多变的业务规则提供了较好的解决方案,目前已有一些商用产品,例如Ilog、Drools、Jess等,在java领域有专门的规则引擎API规范:JSR-94。
目前业界较为推崇的是采用商用或开源的规则引擎,将其集成入软件系统,一些较大规模的商用软件一般都提供了这样的规则定制手段,例如企业资源计划系统(Enterprise Resource Planning,ERP)等大型软件系统。
规则引擎的基本机制是:对提交给引擎的数据对象进行检索,根据这些对象的当前属性值和它们之间的关系,从加载到引擎的规则集中发现符合条件的规则,创建这些规则的执行实例。这些实例将在引擎接到执行指令时、依照某种优先序依次执行。一般,规则引擎内部由下面几个部分构成:工作内存,用于存放被引擎引用的数据对象集合;规则执行队列,用于存放被激活的规则执行实例;静态规则区,用于存放所有被加载的业务规则,这些规则将按照某种数据结构组织,当工作区中的数据发生改变后,引擎需要迅速根据工作区中的对象现状,调整规则执行队列中的规则执行实例。规则引擎的结构示意图如图1所示。
从图1可以看出,规则引擎的工作原理是基于内存规则推理,引用的对象是已经加载入系统的,并且规则执行引擎提供公式表达式求解的能力,功能强大,但在一般固定的业务领域并且规则设计数据非常庞大的情况下,具有以下缺点:
1、规则引擎的表述方式仍然类似编程,在业务流程大体确定的情况下需要定制的部分有限,其强大通用的规则表述能力反而造成了难于学习和掌握;
2、由于规则引擎只能对已加载入系统中的数据对象进行引用,当需要利用规则进行大数据量计算时,只能将相关数据分批装载到内存计算完毕后,再写入数据库,造成了执行效率低,运算速度慢。
其次,说明第二种做法:
存储过程是由编译过的SQL语句、控制流语句、变量说明和赋值运算等组成的集合,由开发者创建并存储在数据字典(又称作系统表)中。我们可以通过存储过程中的语句来定义企业业务规则,特别对于复杂的表与表之间的关系,用存储过程来实现将变得相当容易。
本技术方案在于对业务规则的描述完全通过存储过程或SQL语句描述,实际上仍是一种编程,要求使用者必须对系统内部的表结果、数据关系非常清楚,并具有一定的编程能力才有可能进行业务规则修改。
从以上可以看出,本技术方案的规则描述方法过于底层,不是面向业务的,所以不利于用户使用。
发明内容
本发明实施例提供了一种基于数据库的业务处理方法及装置,可以对数据库中的大数据量记录利用规则进行高效的处理,同时利于业务人员使用。
为解决上述技术问题,本发明实施例是通过以下技术方案实现的:
一种基于数据库的业务处理方法,包括:
按照预置格式输入业务处理的表达式,所述表达式用于描述业务计算规则和业务逻辑;
根据所述用于描述业务计算规则和业务逻辑的表达式转换成数据库语言格式的语句;
执行所述数据库语言格式的语句。
本发明实施例还提供了一种基于数据库的业务处理装置,包括:编辑单元、编译单元、执行单元,其中:
编辑单元,用于让用户通过该单元输入预置格式的表达式,所述表达式用于描述业务计算规则和业务逻辑;
编译单元,用于根据所述用于描述业务计算规则和业务逻辑的表达式转换成数据库语言格式的语句;
执行单元,用于执行所述数据库语言格式的语句。
以上技术方案可以看出,由于本发明实施例提出的方法及装置使用户可以用简明易懂的表达式描述业务计算规则和业务逻辑,并利用本发明将其自动转换为关系数据库的语句进行执行,从而达到了表达的面向用户和执行大数据量记录的高效性。
附图说明
图1为现有技术规则引擎结构示意图;
图2为本发明实施例一种基于数据库的业务处理方法的流程图;
图3为本发明实施例一种基于数据库的业务处理方法的一流程图;
图4为本发明实施例一种基于数据库的业务处理方法的另一流程图;
图5为本发明实施例一种基于数据库的业务处理方法的再一流程图;
图6为本发明实施例一种基于数据库的业务处理装置的装置图;
图7为本发明实施例一种基于数据库的业务处理装置中的系统数据字典的结构图;
图8为本发明实施例一种基于数据库的业务处理装置的另一装置图。
具体实施方式
本发明为一种基于数据库的业务处理方法及装置,为使本发明的技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
首先,对本发明实施例提出的方法及装置进行总体描述。
本发明实施例提供的方法包括:
按照预置格式输入业务处理的表达式;
将所述表达式转换成数据库语言格式的语句;
执行所述数据库语言格式的语句。
本发明实施例提供的装置包括公式编辑工具、公式编译器及公式执行器,其中:
编辑单元,用于让用户通过该单元输入预置格式的表达式;
编译单元,用于将所述表达式转换成数据库语言格式的语句;
执行单元,用于执行所述数据库语言格式的语句。
首先具体说明本发明实施例提出的一种基于数据库的业务处理方法。
本发明方法的实施例的目的是可以让用户通过输入简明易懂的表达式描述业务计算规则和业务逻辑,自动将其转换成关系数据库语句的形式执行,因此,用户输入的表达式包括以下几个部分:结果部分、条件表达式,以利于转换成数据库语句的相应部分,其中:
结果部分,可以被转换成选择语句;
条件表达式,可以被转换成条件语句;
转换时,按照预置规则就可以将这几部分分别转换成数据库语言格式的语句的相应部分,进而可以执行得出结果。
当用户输入的表达式包括结果部分、条件表达式时,本发明方法实施例如下,包括:
输入预置格式的表达式;
所述表达式包括:结果部分、条件表达式,如前所述,这些部分可以在转换时对应转换为数据库语句的相应部分;
将所述结果部分转换为选择语句、条件表达式转换为条件语句,所述选择语句与条件语句形成数据库语言格式的语句;
执行所述数据库语言格式的语句。
实际应用中,用户输入的表达式还可以包括:实例化参数,以对选择语句与条件语句组成的语句限制其执行范围。当存在实例化参数时,可以称选择语句与条件语句组成的语句为未实例化的数据库语言格式的语句,将实例化参数代入所述未实例化的语句后就形成实例化的数据库语言格式的语句。下面结合图2说明输入的表达式中包括实例化参数时本发明的方法。
如图2所示为本发明实施例一种基于数据库的业务处理方法的流程图,包括:
201、输入预置格式的表达式;
在本发明实施例中,所述表达式包括:结果部分、条件表达式及实例化参数,如前所述,这些部分可以在转换时对应转换为数据库语句的相应部分;
202、将结果部分转换为选择语句,将条件表达式转换为条件语句,所述选择语句与条件语句形成未实例化的数据库语言格式的语句;
203、在实例化参数中找到与所述未实例化的数据库语言格式的语句中的参数相同的参数,在所述未实例化的数据库语言格式的语句中增加条件语句;
当形成未实例化的语句之后,如果在实例化参数中可以找到与所述未实例化的语句中参数相同的参数,那么说明该参数将在实例化的步骤中被实例化,所以在未实例化的语句中增加条件语句,当进行到实例化的步骤时,根据实例化参数中的具体取值来限定所述参数的取值范围;
204、将所述实例化参数代入所述未实例化的数据库语言格式的语句中,形成实例化的数据库语言格式的语句;
205、执行所述实例化的数据库语言格式的语句。
以上说明了本发明实施例一种基于数据库的业务处理方法的流程,以下以数据库SQL语言为例说明本发明的具体实现过程。
在本发明一实施例中,将输入的预设格式的表达式具体地转换为数据库SQL语言的形式进行执行,以下对该实施例进行详细说明。如图3所示,为本发明实施例一种基于数据库的业务处理方法一流程图,包括:
301、输入预置格式的表达式;
本发明提出了一种三元组来作为该预置格式的表达式的表现形式,其包括三个部分,分别是:结果部分E1、条件表达式E2、实例化参数E3,可以写作(E1、E2、E3)。该三元组通过一系列规则可以转换为可执行的SQL语句,可以将其三个组成部分对照简单SQL语句理解:结果部分是Select子句;条件表达式是where子句;实例化参数是整个SQL语句中已知具体值的参数列表和对应值,当将E1、E2转换为未实例化的SQL语句后,使用E3可以将其实例化,之后以便计算结果;
E1可以具体地包括两个部分:结果前缀E1a、结果表达式E1b,此时该三元组需写作(E1a、E1b、E2、E3),E1a与E1b之间的区别在于:结果前缀只能是简单参数、确定的值,可以有多个;结果表达式是一个由参数和函数等组成的复杂表达式,只能有一个;结果前缀和结果表达式可以同时存在,也可以只有一个;
以下举例说明该三元组,将以电信BOSS领域的应用为例:
电信领域常见的核心三户模型为:客户、用户、帐户,其主键分别为CUST_ID,SUB_ID和ACCT_ID;对于一个用户在网时长的规则表达公式有可能是这样的:([SUBID],round([CurrentDate]-[SubActiveDate]),[SubState]<>’deactive’,null);这个表达式表达的需求是:对所有在网用户计算在网时长,返回用户标识和在网天数两列结果,计算方法是当前时间减去用户入网日期;E3=null表示全部计算,如果E3=(SUBID=’12345’),表示只对用户标识为‘12345’的进行计算,如果E3=(ACCTID=‘88888’)表示对帐户标识‘88888’的帐户下的所有在网用户进行计算;
在公式中以“[]”标出的是系统数据字典中定义的参数,对应某个表的某个字段或系统预定义数据;
302、查找所述表达式中所有参数及与所述参数关联的数据表;
通过系统数据字典可以获得所述表达式中所有参数及与所述参数关联的数据表;
在系统数据字典中定义了所有参数及与这些参数有关的数据表,每个数据表至少与一个其他数据表有关联;
303、增加使所有所述数据表连接在一起的新数据表,步骤302与303得到的所有的数据表的集合称为总表集;
304、判断总表集的数据表是否可以全部连接,如果不可以连接,则返回错误,并结束流程;
305、将E1中的参数替换为数据表字段形成表达式,将所述表达式作为select语句;
该select语句一般用来定义欲获得的参数;
306、将总表集里的表都作为from子句,同时其连接关系作为where子句一部分;
该from子句一般用来定义查找范围,例如是在哪些表中进行查询的;
307、将各表的附加条件作为where子句一部分,形成未实例化的SQL语句;
该where子句一般用来定义查找条件,例如某些参数的取值范围等;
308、在实例化参数中找到与所述未实例化的SQL语句中的各表的关键字相同的关键字,在所述未实例化的SQL语句中增加where语句限定所述关键字的取值范围;
当形成未实例化的SQL语句之后,如果总表集中的各表被定义为关键字的参数在实例化参数中被实例化,需将这种约束加入where子句;
实例化参数都放在一个哈希表中,每个实例化参数是一个参数名称和取值的键值对;当形成未实例化的SQL语句后,所有各表的关键字都已经知道,需要在储存实例化参数的哈希表中查找是否包含各表的关键字。例如:如果[ACCTID]是实例化参数,而关联表中至少有表a的acctid字段被定义为关键字[ACCTID],那么在未实例化的SQL语句的where子句中就会加入“anda.acctid=?”的限制。在执行时,实例化参数被代入到具体位置。例如上例中[ACCTID]被实例化为“888888”,则对应的SQL语句where子句实例化后就是“and a.acctid=888888”;
309、发送需要在执行时实例化的参数位置的描述与未实例化的SQL语句;
310、根据所述执行时实例化的参数位置的描述将所述实例化参数代入相应的where语句中,形成实例化的SQL语句;
311、执行所述实例化的SQL语句。
从以上实施例可以看出,本发明提出的方法实际上是由业务规则通过映射转换为SQL语句执行,最终让用户用一种易懂的语言表述关系操作,但是也可能会出现一些较为难处理的情况,例如,当大数据量应用中一次操作或返回的结果太多,导致操作单个事务时间太长或不同进程间访问数据的碰撞冲突过高。
本发明实施例给出的方案是对where子句中的主键数据的取值范围进行分段,多次提交进行执行,即增加where条件语句进行约束,对某一项主键数据的取值范围进行分段执行,通过多次执行提交完成执行过程,此方式又称为切片计算。
切片的依据和应用模型相关,在本实施例中是关键表的主键之一。例如三户模型中一般数据至少有三户标识之一,将CUSTID、ACCTID、SUBID之一作为切片依据,使用切片方式的推导逻辑和业务相关,三户模型的规则如下:
1)如果公式的E3已经包括CUSTID、ACCTID、SUBID之一的实例,不进行切片;
2)如果所有连接的表中包含CUSTID,使用CUSTID进行切片;
3)如果所有连接的表中包含ACCTID,使用ACCTID进行切片;
4)如果所有连接的表中包含SUBID,使用SUBID进行切片;
当使用切片方式进行公式编译后,返回的SQL语句Where将增加类似“and t.CUSTID>?and t.CUSTID<=?”这样的约束,“?”位置是切片范围的上下限值,在每次执行时进行实例化。
切片的分段由系统一个后台进程定时扫描相关表,根据一定的规则计算完成后放在参数表中供执行时获取。例如对CUSTID的分段,若按每10000条记录一个分段,扫描进程将分析客户资料表获取所有CUSTID进行排序,然后每10000个CUSTID记录一次放入参数表,这个表中第一条记录是CUSTID取值范围的最小值,最后一条记录是取值范围最大值。在公式利用切片执行时,可能前面标识的每10000条记录一个切片的分类已经不很准确,但应该偏差不会太大,只要保证执行完所有切片没有数据遗漏即可。为了同步切片的准确性扫描进程可以经常运行。
根据以上的描述,本发明另一实施例相比于本发明一实施例,只是增加了切片的步骤,其他步骤完全相同,所以在此不再赘述相同的步骤,只说明增加的步骤。如图4所示为本发明实施例一种基于数据库的业务处理方法的另一流程图,由图中可以看出,本实施例相比于一实施例,增加了以下步骤:
409、对where子句中的主键数据的取值范围进行分段,多次提交进行执行;
基于本发明一实施例,本发明的又一实施例增加了一个系统自动计算进程,此进程将根据“参数自动计算定义”定义的计算频度和顺序,利用对应的公式计算出结果,放入对应的参数数据表以更新这些数据表的值。该进程一方面用于完成切片计算中描述的定时扫描生成切片分段的功能,另一个主要功能是对系统数据字典中定义了参数计算公式的参数数据表进行计算。
自动计算进程由于计算的往往是较大的系统数据,进行计算时大部份情况下会选择切片方式进行。
如前所述公式计算结果总是一个结果集合,将结果集合更新入目标表,可以采用逐条更新的方式,这样效率较低。本实施例采用SQL语句批量更新的方式,将每次查询结果分为update、insert两步进行,举例如下:
假设公式形成的查询语句是SQL语句“S”,S语句查询的结果依次取别名c1,c2...。参数目标表是“DTable”,DTable的主键是“ACCTID”,数据存放在“DAT”列。这样生成的两个SQL语句是:
update语句:update DTable set DAT=(select c2 from S)where exists(select‘x’from S where DTable.ACCT_ID=c1 and DTable.DAT<>c2)
insert语句:insert into DTable(ACCT_ID,DAT)(select c1,c2 from S resultwhere not exists(select‘x’from DTable where ACCT_ID=result.c1))
按每个切片都依次执行上述update、insert语句序列并提交,即可以较高的效率完成参数目标表更新。在以上语句推导过程中,有一些特殊情况仍可进一步优化语句,提高执行效率,这些对用户都是透明的。
在实现具体业务要用到一些公式时,可能需要定义一些中间结果参数。例如如果计算信用度需要“在网因子”做为公式项,而这个数据需要根据开户日期、当前时间、分段映射值去得出,因此需要在系统中新配置“在网因子”这个参数以及计算公式,其计算结果可以放置到系统预留的计算结果表的尚未使用的字段中。系统参数自动计算时会根据配置先计算所有帐户“在网因子”数据,然后再应用信用度公式计算信用度。
基于本发明一实施例,当所述未实例化的SQL语句聚组类表达式时,需要增加group by子句,以对select子句涉及的字段或函数进行聚组,具体为:搜索预置格式表达式的结果部分,是否存在“count、sum、avg...”等SQL语句中的聚组函数,如果存在,说明当前的表达式是聚组类表达式,必须在SQI语句后增加group by子句,group by子句中的字段是表达式的聚组函数中引用的参数对应的数据表字段(一个或多个)。如果对聚组类表达式不增加groupby子句,SQL语句将产生语法错误。但如果select子句有的字段是常量字段,则无需对此字段进行聚组,因此特殊情况无需增加group by子句,例如表达式的要求是某个信控组的平均信用度,select子句一般为“select组号,avg(信用度)...”,由于组号是常量,因此这里就无需group by子句。所以当存在聚组类表达式必须有group by子句,但group by子句的字段如果没有实际意义,就可以忽略group by子句。
根据以上的描述,本发明再一实施例相比于一实施例,只是增加了判断是否为聚组类表达式的步骤,其他步骤完全相同,所以在此不再赘述相同的步骤,只说明增加的步骤。如图5所示为本发明实施例一种基于数据库的业务处理方法的再一流程图,由图中可以看出,本实施例相比于一实施例,增加了以下步骤:
509、判断未实例化的SQL语句是否为聚组类表达式,如果是,增加groupby子句。
以上对本发明提出的方法的实施例进行了详细说明,下面详细说明本发明的装置的实施例。
本发明的装置的实施例主要包括编辑单元、编译单元、执行单元,它们的主要作用分别是:
编辑单元,用于让用户通过该单元输入预置格式的表达式;
编译单元,用于将所述用户输入的表达式转换成数据库语言格式的语句;
执行单元,用于将所述数据库语言格式的语句转换成可执行的格式,获得执行结果。
以下结合实例对本发明提出的装置的实施例进行详细说明。
首先,用户通过编辑单元输入的预置格式的表达式是一个三元组,其包括三个部分,分别是:结果部分E1、条件表达式E2、实例化参数E3,可以写作(E1、E2、E3)。关于该三元组的描述完全与前面的描述相同,在此不再赘述。
编辑单元,是一个较为通用的编辑界面供软件集成,能够较为容易的选择系统支持的参数、公式等,并在提交时进行校验,保证公式的合法性;
编译单元,以一个工具类来体现的,如果输入的表达式合法,将会通过编译单元编译为一个编译结果供执行;
执行单元,也是通过一个工具类体现的,将编译结果代入实例化参数后执行,就获得了执行结果;执行过程主要是:
1)根据编译结果信息,将延迟绑定的参数进行实例化和绑定。这些参数可能来源于执行时代入的实例化参数(例如帐户编号等),也可能来源于系统预定义数据;
2)将实例化的SQL语句进行执行,返回结果集合。结果集合字段由E1决定。
进一步地,如图6所示为本发明实施例一种基于数据库的业务处理装置的装置图,本发明还可以包括系统数据字典,该系统数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合,用于存储数据的定义和类型;编译单元需要通过系统数据字典将所述用户输入的表达式转换成数据库语言格式的语句;
系统数据字典的结构如图7所示,以下对其进行详细说明。
在表达式定义中可以引用的参数全部在参数定义中定义,参数定义对所有参数的类型等都有详细的描述,供推导过程使用。表达式中看到的是参数有业务含义的名称,其为预定义参数,一个预定义参数一般对应某个数据表的某个字段。在计算用户在网时长案例中,E1b=[SubState]<>’deactive’,SubState表示用户状态,其真正的取值是用数字表示状态,在参数定义中对此种情况进行了定义,因此可以直接用用户易看懂的有含义字符串来代替,在编译过程中会进行替换。
系统预定义参数可以根据业务系统的需求进行增加,不断丰富表达式的能力。
预定义参数对应某个数据表的某个字段,对应的数据表在“数据表定义”中表示,如果新增参数涉及的表未定义过,需要先定义新表并定义新表和已有表之间的关联关系,该关联关系也存储在系统数据字典中。关联关系是从业务角度理解的数据表可以进行连接的定义,包括这种连接使用哪些字段进行表连接,是否有其他附加条件等。例如三户模型之间的关系,帐户表和帐户业务数据之间的关系等。对于纵表表示的数据,一般需要增加附加条件,例如帐户表和某个数据表A连接,表A中Type=1的表示帐户数据,那么这两个表进行连接时必须增加A.Type=1的附加条件。
数据表可能很多,互相可做的任意连接是非常大的数字,但加入业务考虑后,有意义的组合就比较少,只关注其两两组合就可以了。
未定义数据表关联关系的表不能直接连接,但有可能进行间接连接。例如Acct表主键是ACCT_ID,Subscriber表主键是SUB_ID,Relation表的ACCT_ID和SUB_ID两个字段定义了帐户和用户之间多对多的关系。Acct表和Relation表通过ACCT_ID进行连接,Subscriber表和Relation表通过SUB_ID进行连接,Acct表和Subscriber表之间没有直接的连接关系。但如果公式中同时出现帐户和用户相关属性,编译过程中有可能通过已经定义的两个关系,将Acct表和Subscriber表连接起来。
参数类别对定义的参数进行分类,方便用户选择。
公式定义部分是系统预定义表达式,通过参数自动计算定义与参数定义关联,参数与预定义公式是一对多的关系。这种关系用于表示参数使用哪些公式进行自动更新计算,系统自动计算进程将根据频度定义、计算顺序,更新系统参数对应数据表的值。参数不一定有对应计算公式,有对应计算公式的参数一般是动态计算值,例如用户在网时长、帐户信用度、一些中间结果等,通过自动计算这些参数保持正确的数据刷新,并被其他公式引用。通过这种机制,可以分步表述非常复杂的业务计算逻辑。
每个公式可以对应定义结果分段映射,可以将四元组中数值型的E1b按数值区段映射到固定值,用来处理一些特殊情况。例如计算用户在网时长因子的定义是:在网天数<=30取1;30<在网天数<=60;取1.1等。
进一步地,如图8所示为本发明实施例一种基于数据库的业务处理装置的另一装置图,该实施例进一步包括切片单元和/或系统自动计算进程单元:
切片单元:
用于在编译单元输出的数据库语言格式的语句中增加分段语句,令其在执行时可以在其参数取值范围内分段执行;
使用切片单元可以解决当大数据量应用中一次操作或返回结果太多,导致操作单个事务时间太长或不同进程间访问的数据碰撞冲突过高的问题;
系统自动计算进程单元:
用于根据预置的计算频度与计算顺序更新系统数据字典中系统参数对应数据表的值;
计算频度:参数定义说明了某个参数的数据从哪个数据表的哪个字段进行取值,这种定义被用在表达式转换生产SQL中。但是有些参数本身就是计算出来的,例如“在网时长”=“当前日期”-“入网日期”,入网日期一旦用户加入系统后除非人工修改就不改变,但是“在网时长”每天都在变,因此需要定义一个公式:“在网时长”=“当前日期”-“入网日期”来表达这种关系,并且根据这里的参数含义,每天计算一次就可以了,这就是“在网时长”公式的计算频度;
计算顺序:例如计算“用户信用度”,其公式中用到“在网时长”,如果在当天的“在网时长”计算出来之前计算“用户信用度”,用到的就是过期的“在网时长”,因此一定要保证“在网时长”这个参数先计算出来,再计算“用户信用度”。即这里有一种依赖关系,计算顺序定义了这种先后依赖关系;
以上例子中的参数都是具有公共意义的,即可能被很多应用场合引用,因此定义为系统变量,向“在网时长”这样的系统变量就必须由系统根据定义的计算频度和计算顺序进行刷新,以保证具体应用能够获取到最新的系统参数值;
目标参数值存储表情况很多,对于系统自动计算来说需要提供一种在无论什么情况下都能成功将新计算出的参数值更新入参数值存储表对应字段的方法,方法项中描述的update、insert两个子句就用一种较通用的方法完成了这个任务。
以上对本发明所提供的一种基于数据库的业务处理方法与装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1、一种基于数据库的业务处理方法,其特征在于,包括:
按照预置格式输入业务处理的表达式,所述表达式用于描述业务计算规则和业务逻辑;
根据所述用于描述业务计算规则和业务逻辑的表达式转换成数据库语言格式的语句;
执行所述数据库语言格式的语句。
2、如权利要求1所述的基于数据库的业务处理方法,其特征在于:
所述表达式包括:结果部分、条件表达式;
所述根据用于描述业务计算规则和业务逻辑的表达式转换成数据库语言格式的语句的步骤包括:
将所述结果部分转换为选择语句,将所述条件表达式转换为条件语句,所述选择语句与条件语句形成未实例化的数据库语言格式的语句。
3、如权利要求2所述的基于数据库的业务处理方法,其特征在于:
所述表达式还包括:实例化参数;
所述将表达式转换成数据库语言格式的语句的步骤还包括:
在实例化参数中找到与所述未实例化的数据库语言格式的语句中的参数相同的参数,在所述未实例化的数据库语言格式的语句中增加条件语句限定所述参数的取值范围;
将所述实例化参数代入所述未实例化的数据库语言格式的语句中,形成实例化的数据库语言格式的语句。
4、如权利要求2所述的基于数据库的业务处理方法,其特征在于:
所述数据库语言为SQL;
所述将表达式转换成数据库语言格式的语句的步骤还包括:
查找所述表达式中的参数及与所述参数关联的数据表;
增加使所有所述数据表连接在一起的新数据表,然后再进行表达式到语句的转换;
所述将表达式转换成未实例化的数据库语言格式的语句的步骤包括:
将结果部分的参数替换为数据表字段形成表达式,将所述表达式作为select语句;
将所有所述数据表及新数据表作为from语句,将其连接关系作为where子句的一部分;
将所述各表的附加条件作为where子句一部分,形成未实例化的SQL语句。
5、如权利要求3所述的基于数据库的业务处理方法,其特征在于:
所述数据库语言为SQL;
所述将表达式转换成数据库语言格式的语句的步骤还包括:
查找所述表达式中的参数及与所述参数关联的数据表;
增加使所有所述数据表连接在一起的新数据表,然后再进行表达式到语句的转换;
所述将表达式转换成未实例化的数据库语言格式的语句的步骤包括:
将结果部分的参数替换为数据表字段形成表达式,将所述表达式作为select语句;
将所有所述数据表及新数据表作为from语句,将其连接关系作为where子句的一部分;
将所述各表的附加条件作为where子句一部分,形成未实例化的SQL语句;
在实例化参数中找到与所述未实例化的SQL语句中的各表的关键字相同的关键字,在所述未实例化的SQL语句中增加where语句限定所述关键字的取值范围;
将所述实例化参数代入所述未实例化的SQL语句中,形成实例化的SQL语句。
6、如权利要求4或5所述的基于数据库的业务处理方法,其特征在于,所述形成未实例化的SQL语句的步骤之后还包括:
对where子句中的主键数据的取值范围进行分段,多次提交进行执行。
7、如权利要求4或5所述的基于数据库的业务处理方法,其特征在于,所述与参数关联的数据表对应字段的值根据预置的计算频度与计算顺序自动更新。
8、如权利要求4或5所述的基于数据库的业务处理方法,其特征在于,所述形成未实例化的SQL语句的步骤之后还包括:
判断所述未实例化的SQL语句是否为聚组类表达式,如果是,增加groupby子句。
9、一种基于数据库的业务处理装置,其特征在于,包括:编辑单元、编译单元、执行单元,其中:
编辑单元,用于让用户通过该单元输入预置格式的表达式,所述表达式用于描述业务计算规则和业务逻辑;
编译单元,用于根据所述用于描述业务计算规则和业务逻辑的表达式转换成数据库语言格式的语句;
执行单元,用于执行所述数据库语言格式的语句。
10、如权利要求9所述的基于数据库的业务处理装置,其特征在于:
该装置还包括:
系统数据字典,用于定义所述表达式中用到的各种参数、参数对应的数据表、数据表之间可能的各种连接关系;
编译单元具体用于:
用于将所述表达式根据系统数据字典转换成数据库语言格式的语句。
11、如权利要求9或10所述的基于数据库的业务处理装置,其特征在于,还包括:
切片单元,用于在编译单元输出的数据库语言格式的语句中增加分段语句。
12、如权利要求10所述的基于数据库的业务处理装置,其特征在于:
系统数据字典还用于:定义需要自动更新的参数的计算公式、计算频度及其顺序;
该系统还包括:
系统自动计算进程单元,用于根据所述系统数据字典中定义的需要自动更新的参数的计算公式、计算频度及其顺序更新系统数据字典中与参数关联的数据表对应字段的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101564539A CN100437587C (zh) | 2006-12-31 | 2006-12-31 | 一种基于数据库的业务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101564539A CN100437587C (zh) | 2006-12-31 | 2006-12-31 | 一种基于数据库的业务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101000615A CN101000615A (zh) | 2007-07-18 |
CN100437587C true CN100437587C (zh) | 2008-11-26 |
Family
ID=38692588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101564539A Expired - Fee Related CN100437587C (zh) | 2006-12-31 | 2006-12-31 | 一种基于数据库的业务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100437587C (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516011B2 (en) * | 2010-10-28 | 2013-08-20 | Microsoft Corporation | Generating data models |
CN102054043A (zh) * | 2010-12-30 | 2011-05-11 | 畅捷通软件有限公司 | 大数据生成方法和装置 |
CN102158534B (zh) * | 2011-02-09 | 2015-04-01 | 中兴通讯股份有限公司 | 查询方法及装置 |
CN102323945B (zh) * | 2011-09-02 | 2013-05-01 | 南京中兴力维软件有限公司 | 一种基于sql的数据库管理方法和装置 |
EP2602678B1 (de) * | 2011-12-07 | 2014-08-13 | Siemens Aktiengesellschaft | Verfahren zum Übersetzen eines in einer Automatisierungssprache vorliegenden Steuerungsprogramms in eine Zwischensprache |
CN102779044B (zh) * | 2012-06-28 | 2016-01-20 | 用友软件股份有限公司 | 表达式的解析处理系统和解析处理方法 |
CN103810304B (zh) * | 2012-11-05 | 2016-11-09 | 上海宝信软件股份有限公司 | 一种基于规则的不锈钢合同组批方法和系统 |
CN103064909B (zh) * | 2012-12-19 | 2016-08-17 | 武汉虹翼信息有限公司 | 一种基于Drools规则引擎的基站数据库核查方法 |
CN103942228B (zh) * | 2013-01-23 | 2018-09-07 | 北京京东尚科信息技术有限公司 | 规则引擎、计算方法、业务系统及调用方法 |
CN103974220B (zh) * | 2013-01-25 | 2018-02-09 | 中兴通讯股份有限公司 | 策略生成装置及其工作方法、策略生成系统及其工作方法 |
CN104346378B (zh) * | 2013-07-31 | 2019-02-05 | 腾讯科技(深圳)有限公司 | 一种实现复杂数据处理的方法、装置及系统 |
CN103440128B (zh) * | 2013-08-21 | 2016-08-10 | 交通银行股份有限公司 | 数据处理方法和装置 |
CN104462108A (zh) * | 2013-09-17 | 2015-03-25 | 中兴通讯股份有限公司 | 数据库结构对象处理方法及装置 |
CN103544323B (zh) * | 2013-11-08 | 2017-01-04 | 中国农业银行股份有限公司 | 一种数据更新方法和装置 |
CN103927174A (zh) * | 2014-04-17 | 2014-07-16 | 北京视博数字电视科技有限公司 | 业务处理方法和装置 |
CN104123376B (zh) * | 2014-07-29 | 2018-05-01 | 广东能龙教育股份有限公司 | 一种基于列模板的智能文本数据采集方法和系统 |
CN104268238A (zh) * | 2014-09-28 | 2015-01-07 | 中国南方航空股份有限公司 | 基于开源技术的可配置的成本分摊计算方法 |
CN104298736B (zh) * | 2014-09-30 | 2017-10-17 | 华为软件技术有限公司 | 数据集合连接方法、装置及数据库系统 |
CN107016016B (zh) * | 2016-10-10 | 2021-04-06 | 创新先进技术有限公司 | 一种数据处理的方法及装置 |
CN108121709A (zh) * | 2016-11-28 | 2018-06-05 | 中兴通讯股份有限公司 | 一种搜索处理方法及装置 |
CN108959315A (zh) * | 2017-05-23 | 2018-12-07 | 中国移动通信集团重庆有限公司 | 数据库的访问方法、装置及设备 |
CN107480280A (zh) * | 2017-08-22 | 2017-12-15 | 金蝶软件(中国)有限公司 | 一种数据处理的方法以及相关设备 |
CN110109939B (zh) * | 2018-01-05 | 2023-12-22 | 中兴通讯股份有限公司 | 基于结构化查询语言sql的开发方法、设备及存储介质 |
CN108491207B (zh) * | 2018-03-02 | 2020-11-17 | 平安科技(深圳)有限公司 | 表达式处理方法、装置、设备及计算机可读存储介质 |
CN110413276B (zh) * | 2019-07-31 | 2024-04-09 | 网易(杭州)网络有限公司 | 参数编辑方法及装置、电子设备、存储介质 |
CN110765191A (zh) * | 2019-10-18 | 2020-02-07 | 浪潮软件集团有限公司 | 一种基于交通数据信息发布的方法 |
CN113177094A (zh) * | 2021-04-23 | 2021-07-27 | 远光软件股份有限公司 | 时序数据库的数据处理方法、装置、服务器和存储介质 |
CN113204571B (zh) * | 2021-04-23 | 2022-08-30 | 新华三大数据技术有限公司 | 涉及写入操作的sql执行方法、装置及存储介质 |
CN115543955A (zh) * | 2021-06-29 | 2022-12-30 | 华为云计算技术有限公司 | 规范设计方法、装置及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09114666A (ja) * | 1995-05-19 | 1997-05-02 | At & T Ipm Corp | 活動状態のコンピュータシステムにおいてシステムルールを実現するための方法及び装置 |
US6427146B1 (en) * | 2000-03-31 | 2002-07-30 | Wesley W. Chu | Database event detection and notification system using type abstraction hierarchy (TAH) |
US6604093B1 (en) * | 1999-12-27 | 2003-08-05 | International Business Machines Corporation | Situation awareness system |
US20050222996A1 (en) * | 2004-03-30 | 2005-10-06 | Oracle International Corporation | Managing event-condition-action rules in a database system |
CN1881208A (zh) * | 2005-06-14 | 2006-12-20 | 联想(北京)有限公司 | 动态结构化查询语言语句的构造方法 |
-
2006
- 2006-12-31 CN CNB2006101564539A patent/CN100437587C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09114666A (ja) * | 1995-05-19 | 1997-05-02 | At & T Ipm Corp | 活動状態のコンピュータシステムにおいてシステムルールを実現するための方法及び装置 |
US6604093B1 (en) * | 1999-12-27 | 2003-08-05 | International Business Machines Corporation | Situation awareness system |
US6427146B1 (en) * | 2000-03-31 | 2002-07-30 | Wesley W. Chu | Database event detection and notification system using type abstraction hierarchy (TAH) |
US20050222996A1 (en) * | 2004-03-30 | 2005-10-06 | Oracle International Corporation | Managing event-condition-action rules in a database system |
CN1881208A (zh) * | 2005-06-14 | 2006-12-20 | 联想(北京)有限公司 | 动态结构化查询语言语句的构造方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101000615A (zh) | 2007-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100437587C (zh) | 一种基于数据库的业务处理方法及装置 | |
US8364517B2 (en) | Computer-implemented systems and methods for forecast reconciliation | |
US9800675B2 (en) | Methods for dynamically generating an application interface for a modeled entity and devices thereof | |
US8340995B2 (en) | Method and system of using artifacts to identify elements of a component business model | |
US6424948B1 (en) | Declarative workflow system supporting side-effects | |
Della Croce et al. | A variable neighborhood search based matheuristic for nurse rostering problems | |
US20070027919A1 (en) | Dispute resolution processing method and system | |
US6499023B1 (en) | Data item evaluation based on the combination of multiple factors | |
CN112654977B (zh) | 用于自动生成可执行应用程序的方法和系统 | |
US7814142B2 (en) | User interface service for a services oriented architecture in a data integration platform | |
US7343585B1 (en) | Operator approach for generic dataflow designs | |
US7117220B2 (en) | System and method for non-programmers to dynamically manage multiple sets of XML document data | |
US20110145748A1 (en) | Specifying user interface elements | |
KR20010072019A (ko) | 데이터 웨어하우스에 대한 애그리깃 레벨 및 크로스프로덕트 레벨을 선택하는 방법 및 장치 | |
US11693912B2 (en) | Adapting database queries for data virtualization over combined database stores | |
US9058176B2 (en) | Domain-specific generation of programming interfaces for business objects | |
EP0996907A1 (en) | Object to relational database mapping infrastructure in a customer care and billing system | |
CN106407170A (zh) | 数据报表快速生成方法及系统 | |
Roelofs | AIMMS 3. 10 Language Reference | |
US7370325B1 (en) | Eager evaluation of tasks in a workflow system | |
US7720872B1 (en) | Software interface mapping tool | |
US8494886B2 (en) | Embedding planning components in transactional applications | |
US20150149259A1 (en) | Enterprise performance management planning model for an enterprise database | |
US20140149186A1 (en) | Method and system of using artifacts to identify elements of a component business model | |
CN112703514A (zh) | 业务操作系统引擎 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081126 Termination date: 20121231 |