专利名称:一种快速费率配置和查找方法
技术领域:
本发明涉及互联网增值业务技术领域,具体涉及一种快速费率配置和查找方法。
背景技术:
随着互联网业务的发展,各种基于Internet的增值业务层出不穷,相应的需要有计费系统来对这些业务进行计费管理,保证业务的顺利进行。计费系统很关键的一点就是针对各种业务制定相应的计费费率,并根据费率进行计费。比如打电话是需要计费的,但是拨打本地号码、异地长途或国际长途,需要遵循的计费费率是不同的,如何在各种费率中找到匹配的费率是计费系统的关键。为了解决上述问题,当前大多数计费应用系统采取的方法是遵循被叫号码最长匹配的原则,利用正则表达式的方法在众多的费率中依次遍历匹配查找,最后找到符合规则长度的号码及其对应的费率,这样该业务的计费费率就找到了 。
现有技术计费系统基于话音、数据、多媒体内容等不同类型的业务体系纵向并行发展而来,造成业务间计费孤立,没有形成一个整体。在具体业务需要产生计费行为的时候,查找费率的方法有很多局限性 1)只能适用于单一业务的计费需求,计费费率之间没有联系,没有统一的配置原则,对多业务计费支持不够好; 2) —旦系统内配置的费率复杂多样,则整个系统查找效率低下,随着费率的增加,查找费率的性能将呈指数级别显著下降; 3)难以响应业务变更或业务增加,一旦新增业务需新的费率,就要修改计费程序。
发明内容
本发明要解决的技术问题是提供一种快速费率配置和查找方法,克服现有技术的费率查找方法查找效率低下、难以响应业务变更或业务增加的缺陷。
本发明为解决上述技术问题所采用的技术方案为
—种快速费率配置和查找方法,包括步骤 Al、将业务按类型进行分类,将分类后的所述业务及其对应的费率存储到配置文件中; A2、将所述配置文件读取到内存中并按不同类型所述业务的查找规则缓存所述费率; A3、根据所述查找规则在内存中查找所述费率。 所述的快速费率配置和查找方法,其中所述业务按照流量类和租金类进行分类。
所述的快速费率配置和查找方法,其中所述流量类包括非号码匹配流量类和号码匹配流量类。 所述的快速费率配置和查找方法,其中以键-值方式缓存所述租金类的费率和所述非号码匹配流量类的费率。 所述的快速费率配置和查找方法,其中以键树方式缓存所述号码匹配流量类的费率。 所述的快速费率配置和查找方法,其中所述查找规则包括键-值查找规则和键树查找规则。 所述的快速费率配置和查找方法,其中采用Hash函数确定所述键_值查找规则。 本发明的有益效果本发明快速费率配置和查找方法对所有的业务按类型进行
分类并将业务和对应的费率存储到配置文件中,查找费率时将配置文件中的费率信息读取
到内存中并按查找规则进行缓存,在业务变更或业务增加时无需修改计费程序,只要将变
更或增加的业务及其相应的费率存储到配置文件中即可,因此大大提高了计费程序的兼容
性,而且本发明在内存中直接查找费率,大大提高了查找费率的效率,是费率查找方法的重
大进步。
本发明包括如下附图 图1为本发明业务分类方式示意图; 图2为本发明将费率信息进行缓存的流程图; 图3为本发明以键树方式存储号码匹配流量类费率示意图; 图4为本发明在内存中查找费率的流程图; 图5为本发明键_值查找规则流程图; 图6为本发明在键树中查找号码费率的流程图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明 如图1所示,各种业务的计费规则多种多样,但仔细分类可以分为两类,流量类例如电话按时长、短信按条数、下载按流量大小、上网按时长等等都可以归为这一类,这类业务一般具有计费单位会在消费过程中产生变化的特点;租金类例如各种月租,年租,这类业务一般固定在每个周期的一个时间点进行收费操作,具有计费周期固定费率固定的特点。 费率配置文件 针对图1的分类,确定如下的数据结构(以C语言设计结构说明) typedef struct rule{ Int Rule—id ; Int Rule_Flag ; Int Rule_unit ; Int Rule_Base_fee ; Int Rule_SectionPoint ; Int Rule_Extra_fee ; } RULE ; 其中 Rule」d :计费规则流水号;
Rule—Flag:计费类型,取值范国是園定的,0表示租金类,l表示非号码匹配流量类,2表示号码匹配流量类; Rule_unit :计费单位,这里要分情况取值。 如果是流量类型计费规则,按时长的话单位就是秒,短信类单位就是条,下载类单位就是GB(计算机容量单位,1GB = 1024MB); 如果是租金类型计费规则,取值范围是固定的,0表示月,1表示年;Rule_Base_
fee:标准计费单价。根据计费单位,每个计费单位该计费多少(精确到人民币分); Rule—SectionPoint :计费分段点;针对流量计费,以秒为单位,如为0则代表不分
段,统一按基础单价收取,如大于0,则按分段收费,超出部分按扩展单价收取 Rule_EXtra_fee :扩展计费单价,根据计费单位,每个计费单位该计费多少(精确
到人民币分)。 无论是什么样的费率都可以按照上述的字段描述进行配置。基本上每个业务都对
应一种费率,但对于电话或传真业务,不同的被叫对应不同的费率的情况,这时配置的就是
每种被叫匹配一种费率。新增业务的费率都按照上述原则进行增加。 例如对表1和表2所示的计费业务及费率信息 表1
计费业务业务类型费率ID
固话月租租金类业务1
发短信流量类业务(非号码匹配)2
打网络电话(0755前 缀)流量类业务(号码匹配)3
打网络电话(0086前 缀)流量类业务(号码匹配)4 表2
费率ID计费类型计费单位标准计费单 价计费分段 点扩展计费单 价
10月2000
21秒100
32分120
42分300 相应的配置文件如下
5
[Business] 〃业务信息及对应费率IDBusinesslnfo = {〃 TelRent" ,O,l) ;〃{业务名称,业务类型,费率ID} Businesslnfo = {〃 SMS" ,1,2}; Businesslnfo = {〃 IPP(" 0755〃 )〃 ,2,3}; Businesslnfo = {〃 IPP(" 0086〃 )〃 ,2,4}; [BillingRate]〃费率信息 Ratelnfo = {1,0, 〃月〃 ,2000, NULL, NULL}; Ratelnfo = {2, 1, 〃条〃 ,10,0, NULL} ;〃{费率ID,业务类型, 计费单位,标准单价,计费分段点,扩展单价} Ratelnfo = {3, 2, 〃分〃 ,12, 0, NULL}; Ratelnfo = {4,2, 〃分",30,0NULL}; 新增任何业务只要在上述配置文件里按照格式,分别在Business项加入业务及对应费率ID,在BillingRate项加入费率信息即可。
查找费率 整个处理流程分为两个阶段 如图2所示,第一阶段是读取费率配置文件,并将不同类型业务的费率按照查找规则形成缓存。具体来说,对于租金类的费率和非号码匹配流量类的费率以键-值方式进行缓存,对于号码匹配流量类的费率以键树方式进行缓存。 租金类和非号码匹配流量类的业务都对应一个费率ID,而需要通过号码匹配规则来确定费率的号码匹配流量类业务则每种号码匹配规则对应一个费率ID。从Business项读出具体的业务名称、业务类型和业务对应ID,每一项Businesslnfo都表示一个具体的业务,以其中一个来说明,Businesslnfo = {〃 TelRent" ,0, 1)表示业务名称是TelRent对应固话月租,0表示该业务是租金类业务,1表示该业务对应的费率ID是1 ;从BillingRate项读出每条费率具体的信息。每一项Ratelnfo都表示一条具体的费率信息,Ratelnfo ={1,0, 〃月〃 ,2000,NULL,NULL}表示该费率信息对应费率ID为l,O表示对应该费率的业务类型是租金类,"月"表示该业务的计费周期是按月来计算,2000表示该业务的计费单价是需要收取20元费用(精确到人民币分),最后两个NULL表示无计费分段点,无扩展计费单价。 首先按照键-值方式(key-value)的方式,将所有租金类的费率和非号码匹配流量类的费率信息保存到键-值数据结构里。即以费率ID为关键字(键,key),表2中的其他费率信息为(值,value)进行存储。在具体实现上可以采用Hash函数确定键-值查找规则,在键_值对的存储地址和键_值对中的key之间,通过Hash函数建立一种映射,使得每一个key,都有一个确定的存储地址与之对应。在查找时,通过Hash函数,算出和key对应的存储地址,从而找到相应的键_值对。这样就不需要遍历了 ,相对于通过遍历整个键_值对列表来进行查找,利用Hash函数的查找效率要高得多,理想的情况下算法复杂度仅为o(l)(遍历查找的复杂度为o(n))。 紧接着将号码匹配流量类的费率以键树方式进行缓存,键树如图3所示,键树的最后一个节点保存号码对应的费率ID和表2中的其他费率信息。键树结构假如要缓存号码匹配规则"0086"及"0755",按下列步骤进行
a)首先获取号码匹配规则第一个数字"O",在键树结构的第一层节点里查找到节点键为"0"的,假如没有节点键为"0"的就新建一个节点; b)然后获取号码匹配规则第二个数字"0",沿之前确定的第一层节点向后在第二层节点里查找节点键为"0"的,同样的,假如没有节点键为"0"的就新建一个节点,并与第一层已确定的节点相关联; c)接着获取号码匹配规则第三个数字"8",之前确定的第二层节点向后在第三层节点里查找节点键为"8"的,同样的,假如没有节点键为"8"的就新建一个节点,并与第二层已确定的节点相关联; d)再接着获取号码匹配规则第四个数字"6",之前确定的第三层节点向后在第四层节点里查找节点键为"6"的,同样的,假如没有节点键为"8"的就新建一个节点,并与第三层已确定的节点相关联; e)最后,因为该号码匹配规则只有四个数字,这样只需要查找节点到第四层就够了,在最后确定的第四层节点处,保存值为4和其他费率信息(其他费率信息未示出),即该号码匹配规则对应费率ID为4,该号码匹配完毕。 按同样的上述操作及原则,重复从a)步到e)步就可以缓存号码匹配规则"0755",并在最后一个确定的节点处保存值为3和其他费率信息(其他费率信息未示出),即该号码匹配规则对应费率ID为3。进行完上述两步后,将费率加载到内存形成缓存的操作完成,第一阶段流程完成。 如图4所示,第二阶段是开始计费后根据需要计费的业务类型,在加载到缓存中的费率中查找匹配的费率。例如业务A :固话月租,这项业务是每月固定在某一个时间点收取费用的业务,而且收取的费用固定,所以是租金类业务。业务B :发送短信,这项业务是按发送的短信条数来计费,每条短信要收取的费用都是固定的,不需要考虑接收方的号码,所以是非号码匹配流量类业务。业务C :打网络电话,这项业务典型的是打本地号码与打外地号码收取的费用是不一样的,并且是按照通话时长进行计费,所以是号码匹配流量类业务。 上述三类业务分别对应三种计费费率,在配置文件内进行对应,在处理流程的第
一阶段已经将这些信息读进内存中形成缓存。下面是第二阶段具体流程。
用户使用业务触发消费行为,计费系统开始查找对应的费率信息 1)图4步骤[1]中,首先获取触发计费行为的业务信息,并得到该业务的业务类
型,根据业务流程判断是租金类业务还是流量类业务。假如是业务A,是租金类业务则处理
流程走流程图上的租金类业务流程分支,即图4步骤[2];如果是业务B或C,是流量类业务
则处理流程走流程图上的流量类流程分支,即图4步骤[3]。 2)租金类业务如业务A,在图4步骤[4]中,根据配置文件的信息,可直接查找到对应费率关系,找到该业务对应的费率ID,即费率ID为1。 3)以费率ID为key,在键-值数据结构中查找对应的value,即可得到想要的费率具体信息,业务类型为租金类,计费周期为月,计费单价为20元。查找流程如图5所示。首先在键(Key)集合里查找ID为1的键,这个集合里包含了从配置文件里读取的费率ID1、2、3和4 ;在找到费率ID为1的键后,获取该键对应的值(Value),该值保存的就是从配置文件中读取到的具体费率信息,返回该费率信息,整个键_值查找流程结束。
4)如果是流量类的业务,走图4步骤[3]这个流程分支,根据配置文件的配置信息判断是否号码匹配业务,如果不是号码匹配业务,比如说业务B,则走图4步骤[5]这个流程分支,并在图4步骤[6]中,可以直接通过配置文件配置的业务对应费率关系,找到该业务对应的费率ID为2。 5)对业务B来说,在获取到费率ID后,按步骤3)来查找到对应的费率具体信息。
6)如果是流量类业务,同时又是号码匹配业务,比如说业务C,则走图4步骤[3]到图4步骤[7],再到图4步骤[8],在这里需要按被叫号码最长匹配原则,对需要匹配的号码从头开始向后遍历,例如要拨打"075582970731"这个号码,这个查找流程如图6所示,从数字"0"到"7",再到"5",最后到"5",通过键树查找规则,找到最后一个节点,因为最后一个数字"5"之后没有节点了,即数字"8"没有匹配的对象,"0755"是可以达到的最长匹配,满足最长匹配原则,这时只要直接获取最后一个匹配的节点保存费率ID,这个费率ID就是满足要求的。 7)最后对业务C来说,在获取到费率ID后可以按步骤3)查找到对应的费率具体
信息。其他类似的有号码匹配的流量类业务查找费率都可以参考业务C的方式进行。 得到具体的费率信息后,查找费率流程完成,第二阶段流程完成。 无论费率信息的规模有多大,整个查找费率的复杂度都是常数。 本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,
以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本
发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。
权利要求
一种快速费率配置和查找方法,其特征在于,包括步骤A1、将业务按类型进行分类,将分类后的所述业务及其对应的费率存储到配置文件中;A2、将所述配置文件读取到内存中并按不同类型所述业务的查找规则缓存所述费率;A3、根据所述查找规则在内存中查找所述费率。
2. 根据权利要求1所述的快速费率配置和查找方法,其特征在于所述业务按照流量类和租金类进行分类。
3. 根据权利要求2所述的快速费率配置和查找方法,其特征在于所述流量类包括非号码匹配流量类和号码匹配流量类。
4. 根据权利要求3所述的快速费率配置和查找方法,其特征在于以键-值方式缓存所述租金类的费率和所述非号码匹配流量类的费率。
5. 根据权利要求4所述的快速费率配置和查找方法,其特征在于以键树方式缓存所述号码匹配流量类的费率。
6. 根据权利要求5所述的快速费率配置和查找方法,其特征在于所述查找规则包括键-值查找规则和键树查找规则。
7. 根据权利要求6所述的快速费率配置和查找方法,其特征在于采用Hash函数确定所述键-值查找规则。
全文摘要
本发明公开了一种快速费率配置和查找方法,包括步骤A1、将业务按类型进行分类,将分类后的所述业务及其对应的费率存储到配置文件中;A2、将所述配置文件读取到内存中并按不同类型所述业务的查找规则缓存所述费率;A3、根据所述查找规则在内存中查找所述费率。本发明快速费率配置和查找方法对所有的业务按类型进行分类并将业务和对应的费率存储到配置文件中,查找费率时将配置文件中的费率信息读取到内存中并按查找规则进行缓存,在业务变更或业务增加时无需修改计费程序,只要将变更或增加的业务及其相应的费率存储到配置文件中即可,因此大大提高了计费程序的兼容性,而且本发明在内存中直接查找费率,大大提高了查找费率的效率。
文档编号H04L12/14GK101753324SQ20091018909
公开日2010年6月23日 申请日期2009年12月22日 优先权日2009年12月22日
发明者张代军, 谢坚 申请人:深圳市汇海科技开发有限公司