职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 642|回复: 1

移动结算系统开发

[复制链接]
木已 发表于 2011-8-22 12:02 | 显示全部楼层 |阅读模式
一、业务需求

1、 实现网间结算、网内结算、SP 业务结算

2、 支持语音、数据、SP 服务的结算

3、 统一维护结算规则

4、 对结算话单进行批价

5、 对结算规则的维护进行权限控制

二、业务规则包的结构

由于每种结算话单的话单格式与结算规则区别较大,并且在进行话单批价时能够明确知道要进行哪些批价规则运算。因此可以设计为3个规则集。即网间结算规则集、网内结算规则集、与SP业务结算规则集。每个规则集都可以进行单独的权限分配,可以进行单独的部署。

并在规则包的元数据模型上增加规则的创建人、生效与失效时间、以及规则状态。在权限的分配上可以确定某些角色只能创建规则、某些角色可以审核规则、某些角色可以发布规则。并且只有审核后的规则才可以被发布到生产系统上。

这些功能通过简单的扩展VisualRules 规则包的结构,并通过定制扩展规则包权限控制方法来实现。

9732edc6-1f92-3be5-aef1-5283b7c9390d.jpg









































三、系统建模与BOM 书写

以结算语音话单为例,对结算话单书写Java类,并把类导入到Rule Builder中创建BOM。编写的Java类如下:

public class AccountOrder implements Cloneable {

//0呼叫类型

public int callType;

//1原始话单呼叫类型

public String s1;

//2话单序号

public String s2;

//3主叫号码

public String s3;

//4被叫号码                  



……

public String s15;

//16入中继群号

public String s16;

//17出中继群号

public String s20;

//21入中继群对端运营商

public int inRelayprovider;

//22入中继群归属地费率区号

public int guessAccessType;

//23入中继群服务类型

public string s23;

//23入中继群对端运营商



public int hostWanderType;

/

//38被叫接入号

public String s38;

… …

//43

被叫号码服务类型

public int payOrient;

//50

结算费用

public double payMoney;

//51

六秒数

public double callSixTime;

//52

分钟数

public double callMinuteTime;

//53

五分钟数

public double callFiveMinuteTime;

//54

文件预处理日期

public String s54;

//55

详单入库时间

public String s55;

… …

//

以下为一些属性get方法

}

然后在工程菜单条的部署设置菜单项中设置BOM对应的业务类路径,然后在BOM话单导入到管理器中把该话单导入到BOM中,然后进行编辑。

在BOM中设置可以应用到规则定义的属性或方法,通过,并设置属性或方法的中文描述,以便业务使用人员可以使用中文来选择属性或方法来定义规则。

并在BOM管理器中创建相关的Domain选择类,以便实现某些值的枚举选择,例如话单类型,运营商列表等,并对话单的某些属性设置为为这些Domain。



四、书写规则

根据定义好的结算话单BOM模型在Rule Builder中书写结算规则,见下图:
5d101067-3926-3f1d-9195-8e98a89ffa60.jpg








































对移动网间语音结算类型根据结算方运营商类型来组织规则,然后在规则编写时可以通过下拉列表来选择属性或有返回值的方法进行条件判定,对符合条件的来设置如何结算。

五、与应用进行集成

与应用集成采用J2SE的方式,创建规则引擎,在运行时把结算话单放入到规则引擎中,执行规则,最后得到批价好的话单。

……

//实例化规则引擎接口

RuleEngine engine = RuleEngineFactory. newInstance().getRuleEngine();

//传入规则包的参数值(传入数据)

engine.put(“accountOrder”,o);

//根据规则包调用名执行规则包

engine.excute (“网通IP落地”);

//取回规则包的参数值(传入数据)

engine.get(“flagleader.rules.firedRulesCount”);

… …
这时accountOrder已经是批价完毕了。

9732edc6-1f92-3be5-aef1-5283b7c9390d-thumb.jpg
大小: 88.7 KB
5d101067-3926-3f1d-9195-8e98a89ffa60-thumb.jpg
大小: 70.4 KB
查看图片附件

Jethro 发表于 2011-8-22 12:02 | 显示全部楼层
按照我的概念,移动的结算应该分网间,漫游,SP 3大块把,其实也差不多。
规则集最重要的还是网间那块,比较复杂,SP这块现在基本规则比较简单。
象批价这块,一般是在后台通过C对文件进行的操作吧,移动一个省一天的结算话单都是个天文数字了,考虑到效率的话,也只有这么做了。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-9 22:41 , Processed in 0.148726 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表