背景是结算员通过BI、report下载商旅机票现付订单的结算数据,然后人工计算返利。通过该项目可以1)从大系统导入现付机票订单 2)对导入的订单根据规则自动计算返利。

项目技术使用有VS2010,SqlServer2008,JobWS,基于SOA的WebService和对原有的SSIS包进行改造。

项目的前期有我们3个人开发,主要技术难点

1. SOA接口,接口是大系统组的人提供,本身有不稳定的因素

2. JobWS技术应用,接口1查询前两天的订单列表。接口2查询每个订单的详细记录。把符合条件记录放入到List的内存中,对List进行循环,1)通过订单号查询其他的一些字段信息2)调用SP保存订单记录

3. 返利计算规则复杂,政策有固定比率和阶梯比率;阶梯有计量的概念;订单又有自己返利的规则

4. 需要对现有的月结订单表记录进行操作,月结订单表数据量在800W左右,查询操作会慢,而且不能通过非聚集索引来解决

5. 之前有酒店返利的项目,机票返利项目是参照酒店返利项目做的,有很多表都是公用的,如实际返利表,预付返利表,返利日志审核表。容易混淆。

项目开发中遇到的主要问题

1.接口不稳定,上生产环境的第一天因为接口查询速度慢,导致了查询异常;接口被其他人修改,产生了一个属性调用的问题,导致了接口报错。

2.JobWS在运行中有的时候出现一些莫名的报错。

3.计算返利的SP超时

4.由于测试的原因,保存的机票字段有些不正确,上线后才发现。主要是调用接口的字段,SP字段类型的定义,取数逻辑本身有问题。

5.上线后没有计算账户返利金额。后来查询的原因是机票返利和酒店返利用的同一张表, 酒店返利SSIS包是后面跑的,把返利周期的机票返利金额给冲掉了。

6.计算的返利金额值有问题,有的情况已经有计算触发点的没有计算

7.转移订单和计算其他费用,需要计算返利,对月结订单表FltOrders操作,导致了操作超时

得到的一些教训和总结

1. 事先对于JobWS增加一些操作日志,方便问题查找

1) 正常的操作日志,如晚上是不是正常跑,正常结束

2) Webservice调用日志,因为WebService返回的错误信息无法通过try,catch获取,所以需要对内部返回的XML信息进行判断和记录

3) 时间监控日志,觉得有效率问题的操作步骤,在前后加一个时间戳,记录它的操作时间

2. 对于大系统提供的接口,自身也要通过页面测试。每一个字段都要在大系统找到对应的页面信息,减少接口产生的bug

3. 表结构定义的时候,遵循扩展的原则,不对原有的表结构进行修改

4. 对现有的系统进行评估,看看是否存在问题

5. 对于执行长的SP,增加日志,查看相关的执行时间

posted on 2013-02-07 13:33  chinaagan  阅读(743)  评论(0编辑  收藏  举报