CN101158956A - 采用规则引擎对复杂数据进行批量处理的方法 - Google Patents
采用规则引擎对复杂数据进行批量处理的方法 Download PDFInfo
- Publication number
- CN101158956A CN101158956A CNA2007101308715A CN200710130871A CN101158956A CN 101158956 A CN101158956 A CN 101158956A CN A2007101308715 A CNA2007101308715 A CN A2007101308715A CN 200710130871 A CN200710130871 A CN 200710130871A CN 101158956 A CN101158956 A CN 101158956A
- Authority
- CN
- China
- Prior art keywords
- rule
- formula
- regulation
- data
- template
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
采用规则引擎对复杂数据进行批量处理的方法,建立规则引擎:规则引擎由数据导换,规则处理,公式处理三个模块组成,每一个模块都可以单独存在进行数据处理;规则处理模块中配置规则公式的步骤是:引入规则概念:用于描述应用中可定制部分的逻辑,引入规则参数概念:定义规则的定制参数;规则处理引擎流程:1根据脚本对应参数、2公式对应脚本、同时进入2-1、3公式加载、4公式编译、5可执行公式缓存、6初始化输入缓冲,调用可执行组成缓冲计算,结果写入缓冲、7规则输出;2-1是根据规则类型进入规则、2-2规则加载、2-3规则调用后亦进入6初始化输入缓冲;另还包括规则引擎中数据导换流程和规则引擎中数据导换流程。
Description
一、技术领域
本发明涉及对复杂数据进行批量处理的方法,尤其是采用规则引擎对复杂数据进行批量处理的方法。
二、背景技术
随着通讯市场的不断扩张,中国移动的手机用户数量已经达到了3.547亿。用户产生的海量业务数据给运营商的业务运营系统带来极大压力。业务运营支撑系统对业务处理也越来越复杂,计费帐务、渠道酬金、积分管理、考核管理、友情提醒等等都需要处理大批量的数据,并且处理的过程非常繁琐、复杂。目前大部分公司采用的处理是通过表格计算方式。表格方式预先定义好几种计算模式,通过表格化的参数配置完成对复杂计算的处理。这种模式计算方式单一,而且配置复杂不利于维护。
三、发明内容
本发明目的是:提出一种采用规则引擎:通过灵活配置对复杂数据进行批量处理的方法,提出的规则引擎就是根据以上情况产生的一个数据处理平台,它是提供对后台计算类型的应用逻辑进行灵活定制的一般框架的组件。规则配置非常灵活,可以批量或者根据不同的需要单独配置一套规则。本发明引入规则组件的目的:应用程序的可定制性(特别是后台计算程序)复杂数据进行高效的批量处理。
本发明的技术解决方案是:采用规则引擎对复杂数据进行批量处理的方法,建立规则引擎:规则引擎由数据导换,规则处理,公式处理三个模块组成,每一个模块都可以单独存在进行数据处理;规则处理模块中配置规则公式的步骤是:
引入规则概念:用于描述应用中可定制部分的逻辑,为适应不同的情形,规则有两种形式:脚本和可执行模块(动态链接库)。对于逻辑复杂和对效率要求高,可使用预先用高级语言(C/C++)编译好的动态链接库;对于逻辑简单,可定制性要求高的,可使用脚本;
引入规则参数概念:为减少对相似规则需要重复创建规则的麻烦而引入,可定义规则的定制参数:如规则:“话费大于n元的用户数”中的n;
为兼顾执行效率和配置简单性和可定制能力,脚本语言采用类C语言的语法,在脚本中可直接使用’$’前缀访问规则的各种参数;
规则处理引擎流程:1脚本对应参数、2公式对应脚本、同时进入2-1、3公式加载、4公式编译、5可执行公式缓存、6初始化输入缓冲,调用可执行组成缓冲计算,结果写入缓冲、7规则输出;2-1是根据规则类型进入规则、2-2规则加载、2-3规则调用后亦进入6初始化输入缓冲;
规则引擎中数据导换流程:1数据格式及对应关系定义和外部数据、2数据转换、3格式化数据、4计算、5结果输出;2-1同时从规则定义、2-2进入编辑规则、2-3可执行规则、2-4进入4;
规则引擎中数据导换流程:1数据格式及对应关系定义和外部数据、2数据转换、3格式化数据、4计算、5结果输出;2-1同时从规则定义、2-2进入编辑规则、2-3可执行规则、2-4进入4。
规则引擎是一个数据处理平台,主要是处理计算、统计类业务。规则引擎可以根据不同的业务配置不同类型的规则,业务越繁琐,规则引擎起到的作用就越强大,规则处理模块中配置规则公式(公式处理)可以应用于不同的业务要求中,也可以只处理单独一种特殊的业务。
规则引擎处理大批量数据也有自己的优势,所有的常用数据都是常驻共享内存,这样可以更加方便简单的处理大批量的数据,数据的处理速度也会更快。
引入规则组件的目的:应用程序的可定制性(特别是后台计算程序)
数据导换,公式处理,规则处理每个模块构成规则组件;
规则组件包含以下功能:
●规则类型的创建和维护:规则类型数据的输入;
●规则的创建和维护:脚本型规则的定义和编辑;
●用户对应用进行配置的接口:查询符合条件的规则类型、规则;创建和维护规则实例,选择并配置相关规则。
规则组件不包含以下功能:加载数据源纠错的功能;公式脚本纠错的功能;不支持函数解析;实现于规则体中的特定业务逻辑
有益效果:提出一种采用规则引擎:通过灵活配置对复杂数据进行批量处理的方法,提出的规则引擎就是根据以上情况产生的一个数据处理平台,它是提供对后台计算类型的应用逻辑进行灵活定制的一般框架的组件。规则配置非常灵活,可以批量或者根据不同的需要单独配置一套规则。
本发明引入规则组件的目的:应用程序的可定制性(特别是后台计算程序)复杂数据进行高效的批量处理。
四、附图说明
图1是本发明框图, 图2是规则处理引擎流程图,
图3是规则引擎中数据导换流程图, 图4是公式处理流程图,
图5是配置统计主环节图
图6是配置统计附属环节(统计信息来源表)图,图7是统计规则配置图,
图8脚是本配置和规则定义图,第一列树列出了统计流程配置的变量,
图9是配置特殊规则图(用于限定进行公式处理的数据范围),
图10是配置计算流程图, 图11是配置计算规则,如规则定义图,
图12是公式定义图, 图13是脚本配置图,
图14是配置规则参数图
五、具体实施方式
规则是规则的应用领域(分类),如以下的规则域:酬金计算、话费计算、积分计算、友情提醒等。规则域的创建和维护,除定义规则类型的名称外,还包含规则类型的参数维护。规则类型参数是指:区分不同规则所定义的类型。(规则参数定义的是用户对规则的定制参数)。规则类型参数维护只定义参数的名称、类型。
规则的创建和维护,除定义规则的名称、所属规则类型、描述等基本信息外,还包含规则参数的维护。规则参数维护包括定义参数的名称、类型,具体的值公式教本(参数)定义。对于脚本型规则:输入规则脚本正文;对于可执行模块性规则:从已有的模块中选择一个模块
规则引擎由规则部分和公式部分两大块组成。
规则部分是规则引擎组件提供给外部的一个接口,根据不同模块的调用,接口的定义也相对应的进行不同的参数配置。
公式部分是规则引擎组件内部处理的核心内容,根据外部接口传入的参数把符合条件的规则加载到共享内存,通过对公式教本的处理把结果输出到相关的缓存或者结果表。
规则引擎中数据导换流程图如图3所示:
1数据格式及对应关系定义和外部数据、2数据转换、3格式化数据、4计算、5结果输出;2-1同时从规则定义、2-2进入编辑规则、2-3可执行规则、2-4进入4。
规则引擎的数据源是通过规整后的外部数据和接口部分定义的参数组成。
编译规则过滤后得到可用数据,计算后输出计算结果。
公式处理流程如图4所示:公式对应脚本、可执行公式缓存来源于公式处理流程:1公式脚本参数,公式脚本、内部变量定义、外部变量定义进入2、2读取公式、3词组分析、4词组验证、5语法分析、6接口输出、7公式四元式组缓存和公式输出变量缓存。
公式组件是采用类C的编程方式形成脚本,基本的规则如下:
1、支持基本的条件控制
2、支持基本的赋值语句
3、支持复杂公式脚本的注释描述,大大增加了脚本的可读性
4、支持存储过程的调用
主要功能介绍:
变量注册:公式可识别的所有自定义变量在系统中的建权过程;所有以特殊字符($)开头的变量系统均认为是自定义变量,当公式进行初始化时,自动检测公式脚本中的自定义变量是否在系统中已建权,否则初始化失败。
自定义变量不仅是公式所需特殊资料的数据来源,同时也是公式输出计算结果的接口。每一个自定义变量在系统中均独立占用一块存储空间,每次需要调用公式前都需要对该存储空间进行赋值初始化,调用完毕后,再扫描有变化的存储块进行输出操作。
公式词组分析:词组分析即将公式脚本块分解成包含自定义变量、临时变量、系统关键字、常量、及操作符的字符流。
生成四元式:四元式是一种比较普遍采用的中间代码形式。四元式的四个组成成分是:算符op,第一和第二运算对象ARG1和ARG2及结果对象RESULT。运算对象和结果对象有时指用户自己定义的变量,有时指编译程序引进的临时变量。这里生成四元式就是将词组分析后的字符流处理生成便于机器识别的四元式组。
生成可执行公式缓存:四元式组即是简单的机器汇编码,当生成后,存入一块不被更改的缓存中,便于大量调用。
公式脚本规范:
<公式> ::=<语句块>
<语句块> ::=<语句>|<复合语句>
<语句> ::=<赋值语句>|<条件语句>|<空语句>
<复合语句>::=’{’{<语句块>}’}’
<赋值语句>::=<变量>=<表达式>;
<条件语句>::=if(<表达式>)<语句块>|if(<表达式>)<语句块>else<语句块>
<空语句>::=’;’
<表达式>在<赋值语句>中遇到’;’为结尾,在<条件语句>中’)’无’(’可匹配为结尾;
<备注>以“/*”开头,“*/”结尾的语句块.
举例说明:根据渠道类型获取相对应的放号酬金基数,进行放号酬金计算。
/*$渠道类型($放号酬金、$当月放号数同)为自定义变量,由配置变量环节关联到相关表的指定字段*/(相当于流程中规则参数)
if($渠道类刑==102){
/*temp为临时变量;$01($02,$03同)为规则配置的该公式第一个入参,其值由配置决定,若未配置,系统默认为0处理*/
temp=$01;
Else if($渠道类型==101){
temp=$02;
Else {
temp=$03;
$放号酬金=temp*$当月放号数;
例子:与流程的某一步的对应关系,需求描述:
长沙开户业务,商旅套餐、98套餐、家园卡乡镇通、老乡镇通(神州行.家园卡)、$家园卡大灵通在网品牌用户当月通话费在5.00元以上则发放酬金,G001每个奖励2.00元,G001每个奖励1.00元。
环境准备:开户用户资料模板表template_reward_open(数据库实体)
ID | TABLE_NAME | COL_NAME | COL_P | COL_TY | EPARCHY_CODE | STATE |
1035103610371038103910401041104210431044 | TEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OPTEMPLATE_REWARD_OP | STAT_MONTHMONTHCH_NOSTEP_NOUSER_IDCUST_IDACCT_IDBRAND_CODEPRODUCT_IDCITY_CODE | 0123456789 | NUMNUMNUMNUMcharcharcharcharNUMchar | ********** | FOAFOAFOAFOAFOAFOAFOAFOAFOAFOA |
统计及计算结果存放模板表template_chnl_rwd_result(数据库实体)
ID | TYPE | TABLE_NAME | COL_NAME | COL_POS | COL_TYPE | EPARCHY_CODE | STATE |
1082 | P | TEMPLATE_CHNL_RWD_RESUL | STAT_MONTH | 0 | char | * | FOA |
1083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116 | PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP | TEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESULTEMPLATE_CHNL_RWD_RESUL | REPORT_IDEPARCHY_CODECHANNEL_IDCITY_CODECHANNEL_CODECHANNEL_STARCHANNEL_TYPECHANNEL_KINDCHANNEL_LEVELCITY_FLAGDEPART_NAMEAREA_KINDCHANNEL_KIND_NAMAREA_NAMES01S02S03S04S05I1I2I3I4I5I6I7I8I9I1OI11I12I13I14I15 | 12345678910111213141516171819202122232425262728293031323334 | charcharcharcharcharNUMNUMNUMNUMcharcharcharcharcharcharcharcharcharcharNUMNUMNUMNUMNUMNUMNUMNUMNUMNUMNUMNUMNUMNUMNUM | ********************************** | FOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAF0AFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOA |
●配置变量定义(输入、输出统一定义)
a)长沙开户用户变量定义。
PAF) | ID | PARAM_NAME | CODE | SCH_ID | STATE |
367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702 | 103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067 | TEMPLATE_REWARD_OPEN.STAT_MONTHTEMPLATE_REWARD_OPEN.MONTHTEMPLATE_REWARD_OPEN.CH_NOTEMPLATE_REWARD_OPEN.STEP_NOTEMPLATE_REWARD_OPEN.USER_IDTEMPLATE_REWARD_OPEN.CUST_IDTEMPLATE_REWARD_OPEN.ACCT_IDTEMPLATE_REWARD_OPEN.BRAND_CODETEMPLATE_REWARD_OPEN.PRODUCT_IDTEMPLATE_REWARD_OPEN.CITY_CODETEMPLATE_REWARD_OPEN.USER_TYPE_CODTEMPLATE_REWARD_OPEN.SERIAL_NUMBERTEMPLATE_REWARD_OPEN.ACCT_TAGTEMPLATE_REWARD_OPEN.PREPAY_TAGTEMPLATE_REWARD_OPEN.IN_DATETEMPLATE_REWARD_OPEN.OPEN_DATETEMPLATE_REWARD_OPEN.IN_DEPART_IDTEMPLATE_REWARD_OPEN.DEVELOP_DEPARTEMPLATE_REWARD_OPEN.IN_STAFF_IDTEMPLATE_REWARD_OPEN.DEVELOP_STAFFTEMPLATE_REWARD_OPEN.REMOVE_TAGTEMPLATE_REWARD_OPEN.DESTROY_TIMETEMPLATE_REWARD_OPEN.PRE_DESTROY_TTEMPLATE_REWARD_OPEN.FIRST_CALL_TITEMPLATE_REWARD_OPEN.LAST_Stop_TIMTEMPLATE_REWARD_OPEN.OPEN_MODETEMPLATE_REWARD_OPEN.USER_STATE_COTEMPLATE_REWARD_OPEN.PAY_MODE_CODETEMPLATE_REWARD_OPEN.FEE_SUMTEMPLATE_REWARD_OPEN.NUM1TEMPLATE_REWARD_OPEN.NUM2TEMPLATE_REWARD_OPEN.NUM3TEMPLATE_REWARD_OPEN.NUM4 | $用户资料.STAT_MONTH$用户资料.MONTH$用户资料.CH_NO$用户资料.STEP_NO$用户资料.USER_ID$用户资料.CUST_ID$用户资料.ACCT_ID$用户资料.BRAND_CODE$用户资料.PRODUCT_ID$用户资料.CITY_CODE$用户资料.USER_TYPE_CODE$用户资料.SERIAL_NUMBER$用户资料.ACCT_TAG$用户资料.PREPAY_TAG$用户资料.IN_DATE$用户资料.OPEN_DATE$用户资料.IN_DEPART_ID$用户资料.DEVELOP_DEPART_ID$用户资料.IN_STAFF_ID$用户资料.DEVELOP_STAFF_ID$用户资料.REMOVE_TAG$用户资料.DESTROY_TIME$用户资料.PRE_DESTROY_TIME$用户资料.FIRST_CALL_TIME$用户资料.LAST_Stop_TIME$用户资料.OPEN_MODE$用户资料.USER_STATE_CODE$用户资料.PAY_MODE_CODE$用户资料.FEE_SUM$用户资料.当月通话费$用户资料.预存编码$用户资料.入网1月标志$用户资料.入网2月标志 | REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073REWARD_OPEN_073 | FOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOA |
b)长沙开户计算变量计算结果定义
PARAI | ID | PARAM_NAME | CODE | STATE |
355935603561356235633564356535663567356835693570357135723573357935803581358235833584358535863587358835893590359135923593 | 108210831084108510861087108810891090109110921093109410951096110211031104110511061107110811091110111111121113111411151116 | TEMPLATE_CHNL_RWD_RESULT.STAT_MONTHTEMPLATE_CHNL_RWD_RESULT.REPORT_IDTEMPLATE_CHNL_RWD_RESULT.EPARCHY_CODETEMPLATE_CHNL_RWD_RESULT.CHANNEL_IDTEMPLATE_CHNL_RWD_RESULT.CITY_CODETEMPLATE_CHNL_RWD_RESULT.CHANNEL_CODETEMPLATE_CHNL_RWD_RESULT.CHANNEL_STARTEMPLATE_CHNL_RWD_RESULT.CHANNEL_TYPETEMPLATE_CHNL_RWD_RESULT.CHANNEL_KINDTEMPLATE_CHNL_RWD_RESULT.CHANNEL_LEVELTEMPLATE_CHNL_RWD_RESULT.CITY_FLAGTEMPLATE_CHNL_RWD_RESULT.DEPART_NAMETEMPLATE_CHNL_RWD_RESULT.AREA_KINDTEMPLATE_CHNL_RWD_RESULT.CHANNEL_KIND_NAITEMPLATE_CHNL_RWD_RESULT.AREA_NAMETEMPLATE_CHNL_RWD_RESULT.I1TEMPLATE_CHNL_RWD_RESULT.12TEMPLATE_CHNL_RWD_RESULT.I3TEMPLATE_CHNL_RWD_RESULT.I4TEMPLATE_CHNL_RWD_RESULT.I5TEMPLATE_CHNL_RWD_RESULT.I6TEMPLATE_CHNL_RWD_RESULT.I7TEMPLATE_CHNL_RWD_RESULT.I8TEMPLATE_CHNL_RWD_RESULT.I9TEMPLATE_CHNL_RWD_RESULT.I10TEMPLATE_CHNL_RWD_RESULT.I11TEMPLATE_CHNL_RWD_RESULT.I12TEMPLATE_CHNL_RWD_RESULT.I13TEMPLATE_CHNL_RWD_RESULT.I14TEMPLATE_CHNL_RWD_RESULT.I15 | $渠道开户.STAT_MONTH$渠道开户.REPORT_ID$渠道开户.EPARCHY_CODE$渠道开户.CHANNEL_ID$渠道开户.CITY_CODE$渠道开户.CHANNEL_CODE$渠道开户.CHANNEL_STAR$渠道开户.CHANNEL_TYPE$渠道开户.CHANNEL_KIND$渠道开户.CHANNEL_LEVEL$渠道开户.CITY_FLAG$渠道开户.DEPART_NAME$渠道开户.AREA_KIND$渠道开户.CHANNEL_KIND_N$渠道开户.AREA_NAME$商旅套餐全cnt$98套餐全cnt$家园卡乡镇通cnt$老乡镇通神.家cnt$家园卡大灵通cnt$商旅套餐全rate$98套餐全rate$家园卡乡镇通rate$老乡镇通神.家rate$家园卡大灵通rate$商旅套餐全fee$98套餐全fee$家园卡乡镇通fee$老乡镇通神.家fee$家园卡大灵通fee | FOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOAFOA |
●配置统计流程
a)配置统计主环节(结果放置表)图5
b)配置统计附属环节(统计信息来源表)如图6所示
●配置统计规则如图7
a)规则定义
公式定义如图8,第一列树列出了统计流程配置的变量
公式脚本具体如下:
if($用户资料.BRAND_CODE==″G001″&&$用户资料.PRODUCT_ID==31001711)
{
$商旅套餐全cnt=$商旅套餐全cnt+1;
}
if($用户资料.BRAND_CODE==″G001″&&$用户资料.PRODUCT_ID==31001712)
{
$98套餐全cnt=$98套餐全cnt+1;
}
if($用户资料.BRAND_CODE==″G004″&&$用户资料.PRODUCT_ID==31100004)
{
$家园卡乡镇通cnt=$家园卡乡镇通cnt+1;
}
/*预存 */
if($用户资料.BRAND_CODE==″G004″&&$用户资料.预存编码==31000302)
{
$老乡镇通神.家cnt=$老乡镇通神.家cnt+1;
}
if($用户资料.BRAND_CODE==″G011″&&$用户资料.PRODUCT_ID==31000014)
{
$家园卡大灵通cnt=$家园卡大灵通cnt+1;
}
b)配置特殊规则(用于限定进行公式处理的数据范围)如图9
●配置计算流程如图10
●配置计算规则如图11
a)规则定义
b)公式定义如图12
脚本具体如图13:
{
$商旅套餐全rate=$05*$01/100;
$商旅套餐全fee=$05*$01/100*$商旅套餐全cnt;
$98套餐全rate=$06*$01/100;
$98套餐全fee=$06*$01/100*$98套餐全cnt;
$家园卡乡镇通rate=$07*$01/100;
$家园卡乡镇通fee=$07*$01/100*$家园卡乡镇通cnt;
$老乡镇通神.家rate=$08*$01/100;
$老乡镇通神.家fee=$08*$01/100*$老乡镇通神.家cnt;
$家园卡大灵通rate=$09*$01/100;
$家园卡大灵通fee=$09*$01/100*$家园卡大灵通cnt;
}
Claims (3)
1.采用规则引擎对复杂数据进行批量处理的方法,其特征是建立规则引擎:规则引擎由数据导换,规则处理,公式处理三个模块组成,每一个模块都可以单独存在进行数据处理;
规则处理模块中配置规则公式的步骤是:
引入规则概念:用于描述应用中可定制部分的逻辑,引入规则参数概念:定义规则的定制参数;
规则处理引擎流程:1根据脚本对应参数、2公式对应脚本、同时进入2-1、3公式加载、4公式编译、5可执行公式缓存、6初始化输入缓冲,调用可执行组成缓冲计算,结果写入缓冲、7规则输出;2-1是根据规则类型进入规则、2-2规则加载、2-3规则调用后亦进入6初始化输入缓冲;
规则引擎中数据导换流程:1数据格式及对应关系定义和外部数据、2数据转换、3格式化数据、4计算、5结果输出;2-1同时从规则定义、2-2进入编辑规则、2-3可执行规则、2-4进入4;
规则引擎中数据导换流程:1数据格式及对应关系定义和外部数据、2数据转换、3格式化数据、4计算、5结果输出;2-1同时从规则定义、2-2进入编辑规则、2-3可执行规则、2-4进入4。
2.根据权利要求1所述的采用规则引擎对复杂数据进行批量处理的方法,其特征是用于描述应用中可定制部分的逻辑,为适应不同的情形,规则有两种形式:脚本和可执行模块;对于逻辑复杂,使用预先用高级语言(C/C++)编译好的动态链接库;对于逻辑简单,可定制性要求高的,使用脚本。
3.根据权利要求2所述的采用规则引擎对复杂数据进行批量处理的方法,其特征是脚本语言采用类C语言的语法,在脚本中可直接使用’$’前缀访问规则的各种参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101308715A CN101158956A (zh) | 2007-08-21 | 2007-08-21 | 采用规则引擎对复杂数据进行批量处理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101308715A CN101158956A (zh) | 2007-08-21 | 2007-08-21 | 采用规则引擎对复杂数据进行批量处理的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101158956A true CN101158956A (zh) | 2008-04-09 |
Family
ID=39307058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101308715A Pending CN101158956A (zh) | 2007-08-21 | 2007-08-21 | 采用规则引擎对复杂数据进行批量处理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101158956A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763261B (zh) * | 2009-12-28 | 2013-01-23 | 山东中创软件商用中间件股份有限公司 | 数据抽取、转换和加载方法、系统 |
CN103646316A (zh) * | 2013-12-18 | 2014-03-19 | 世纪禾光科技发展(北京)有限责任公司 | 一种分布式金融计算的公式处理方法 |
CN105308558A (zh) * | 2012-12-10 | 2016-02-03 | 维迪特克公司 | 基于规则的数据处理系统和方法 |
CN105913314A (zh) * | 2015-12-30 | 2016-08-31 | 上海钢富电子商务有限公司 | 一种采用规则引擎处理利息结算系统与方法 |
CN107124327A (zh) * | 2017-04-11 | 2017-09-01 | 千寻位置网络有限公司 | Jt808车载终端模拟器反检测的方法 |
CN108279866A (zh) * | 2018-01-24 | 2018-07-13 | 马上消费金融股份有限公司 | 一种业务流程的编排执行方法、装置及介质 |
CN110865804A (zh) * | 2019-09-30 | 2020-03-06 | 天阳宏业科技股份有限公司 | 一种规则引擎的优化方法、装置、系统及存储介质 |
-
2007
- 2007-08-21 CN CNA2007101308715A patent/CN101158956A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763261B (zh) * | 2009-12-28 | 2013-01-23 | 山东中创软件商用中间件股份有限公司 | 数据抽取、转换和加载方法、系统 |
CN105308558A (zh) * | 2012-12-10 | 2016-02-03 | 维迪特克公司 | 基于规则的数据处理系统和方法 |
CN103646316A (zh) * | 2013-12-18 | 2014-03-19 | 世纪禾光科技发展(北京)有限责任公司 | 一种分布式金融计算的公式处理方法 |
CN105913314A (zh) * | 2015-12-30 | 2016-08-31 | 上海钢富电子商务有限公司 | 一种采用规则引擎处理利息结算系统与方法 |
CN107124327A (zh) * | 2017-04-11 | 2017-09-01 | 千寻位置网络有限公司 | Jt808车载终端模拟器反检测的方法 |
CN107124327B (zh) * | 2017-04-11 | 2019-04-02 | 千寻位置网络有限公司 | Jt808车载终端模拟器反检测的方法 |
CN108279866A (zh) * | 2018-01-24 | 2018-07-13 | 马上消费金融股份有限公司 | 一种业务流程的编排执行方法、装置及介质 |
CN110865804A (zh) * | 2019-09-30 | 2020-03-06 | 天阳宏业科技股份有限公司 | 一种规则引擎的优化方法、装置、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101158956A (zh) | 采用规则引擎对复杂数据进行批量处理的方法 | |
CN101339500B (zh) | 基于xml模式的数据绑定应用程序接口生成方法 | |
Paige et al. | The design of a conceptual framework and technical infrastructure for model management language engineering | |
Groenewegen et al. | Webdsl: a domain-specific language for dynamic web applications | |
US20110035725A9 (en) | System and method for automated re-architectureing of legacy systems using object oriented language | |
CN101908015A (zh) | 一种基于构件生成测试案例的装置及方法 | |
CN109241104B (zh) | 决策型分布式数据库系统中aisql的解析器及其实现方法 | |
Cadoret et al. | Design patterns for rule-based refinement of safety critical embedded systems models | |
Singhal et al. | Q# as a quantum algorithmic language | |
CN102541614B (zh) | 基于代码分析的计算模块输入输出数据自动解析方法 | |
CN102123099B (zh) | 报文处理系统及方法 | |
Stein | MATLAB | |
CN202143092U (zh) | 报文处理系统 | |
Akers et al. | Re-engineering C++ component models via automatic program transformation | |
Rieger et al. | Challenges and Opportunities of Modularizing Textual Domain-Specific Languages. | |
Garlan et al. | A transformational approach to generating application-specific environments | |
Weisemöller et al. | 16 development of tool extensions with moflon | |
Kraas | On the automation-supported derivation of domain-specific UML profiles considering static semantics | |
Ostermayer | Seamless Cooperation of Java and Prolog for Rule-Based Software Development. | |
CN111984233A (zh) | 一种AltaRica模型中类的平展化方法 | |
Ivanov et al. | STen: An Interface for Efficient Sparsity in PyTorch | |
Andrzejak et al. | Agile construction of data science DSLs (tool demo) | |
Monpratarnchai et al. | The design and implementation of a role model based language, EpsilonJ | |
Frappier et al. | Combining JSD and Cleanroom for object-oriented scenario specification | |
Sophatsathit | Complexity measure of software composition framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080409 |