中国人民银行全国支票影像交换系统(CIS)于2006年12月18日在全国6省市上线,2007年6月底推广到了全国。
CIS综合运用影像技术和支付密码等技术,将纸质支票转化为影像和电子清算信息,实现纸质支票截留,并利用网络技术将支票影像和电子清算信息传递至出票人开户行进行提示付款,实现了支票全国通用。
CIS的总体业务流程分为提出支票影像信息、支票影像信息交换、支票影像信息接收及确认、支票业务回执处理、提出支票业务信息归并五个步骤,如***1所示。
***1影像交换系统的总体业务流程***
与中国人民银行其他支付业务系统(大额、小额支付系统)相比,该系统有一个很大的亮点:在前置机节点采用了BS技术,提出共享前置机的概念,并实现了共享前置机。使用BS模式,任何一台与前置机服务器网络连通、安装浏览器的计算机都可以作为前置机的客户端,无需安装MQ、DB2等客户端即可进行业务操作。
第一批上线时,在河北省石家庄和廊坊票据交换所分别配置了一台前置机,供各自使用;在中国人民银行石家庄支行安装了一台共享前置机,河北省其他110多家县、市级票据交换所共用这台机器进行业务操作。票据交换所只需要安装浏览器,无需安装任何软件,无需配置任何计算机设备。
截至目前,CIS前置机系统已经正常运行了11个多月。
在CIS前置机系统设计时,我们准备把前置机开发成一个具有高水平、高质量的软件,一个易于维护、易于适应变更、可重用性好的系统。因此我们充分考虑到了低耦合和高内聚。
低耦合就是软件在构造的时候,各个模块、各个功能、各个类都不会过度依赖于它周围的环境。只有这样,才能使我们的模块(功能、类)在周围发生变更时不受影响,做到易于维护和易于适应变更,也使它更易于重用到其它功能类似的环境中,可大大提高程序的可重用性。
高内聚则使软件中的各个模块(功能、类)能够各尽其能而又充分合作,也就是对于软件问题空间中需求的各个功能,系统可以合理地把它分配给各个模块(功能、类)来共同完成,而不是由一个或几个八面玲珑、包打天下的超级模块独自完成。对于该系统中的某一个模块(功能、类),具有自己高度相关的职责,即该职责中的几个任务是高度相关的,每一个模块(功能、类)都决不去完成与自己无关职责的任务。
同时,系统采用MVC设计模式,将系统抽象成三层,分别是模型层、视***层和控制层。这三个部件是相互***的,改变其中任何一个都不会影响其他两个,层与层之间通过接口调用,接口和实现类通过配置文件组合,三层之间采用松耦合工作。
每个层在处理程序上都有一项明确的责任,而不在功能上与其它层混合,并且每个层要与其它层分开的,但要给它们之间放一个通信接口。系统将业务规则、数据访问及业务合法性校验等工作放在控制层处理,视***层不直接与数据库交互,而是通过组件与控制层建立连接,再由控制层通过模型层与数据库交互。
综合考虑目前Java各项开发技术,CIS前置机的模型层、视***层和控制层分别用Hibernate、Struts和Spring实现。同时结合了ACEGI、AJAX、eXtremeTable标签、Jasper报表、Log4J日志等技术,不仅实现了MVC,而且可实现低耦合和高内聚。
CIS前置机系统采用的Spring、Hibernate和Struts技术架构***如***2所示。
***2 Spring、Hibernate和Struts技术架构***
模型层
模型层向视***层和控制层提供业务逻辑服务。CIS采用Hibernate实现了模型层设计。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,Hibernate还可以在应用E***的J2EE架构中取代CMP,完成数据持久化。
使用Hibernate使业务逻辑与数据持久化分离,也就是与将数据存储到数据库的操作分离。我们在业务逻辑中只需要将数据放到值对象中,然后交给Hibernate实现数据的保存,或者从Hibernate那里得到值对象,我们无需关心数据库(如DB2、Oracle、MySQL或SQLServer)是如何执行的操作。使用此技术,我们的CIS实现了应用程序与数据库选择无关。
视***层
视***层主要是由Struts负责的,它主要完成了以下工作:
管理用户的请求,做出相应的响应。
提供一个Controller,委派调用业务逻辑和其它上层处理。
处理异常,抛给StrutsAction。
为显示提供一个模型。
UI验证。
Stusts是一个开源的项目,Struts通过ActionForm与JSP页面和Action进行数据传输,可将用户在页面录入的信息传输给Action进行业务处理,也可将Action的处理结果传输给JSP页面显示。
通过Action,Struts可以调用Spring提供的接口程序进行业务处理。同时Struts还提供了Bean、HTML、Logic等多种JSP用到的标签,可方便页面程序的编写;提供validation功能验证用户在页面的录入项,还提供丰富的国际化功能。
控制层
控制层由Spring技术实现,控制层主要完成以下任务:
处理应用程序的业务逻辑和业务校验。
管理事物。
提供与其它层相互作用的接口。
管理业务层级别对象的依赖。
在视***层和模型层之间增加了一个灵活的机制,使得他们不直接的联系在一起。
管理程序的执行。
Spring主要有两个核心技术,分别是依赖注入(IoC)和面向切面的编程技术(AOP)。CIS前置机系统中大量采用了这两个技术,采用IoC技术,降低了业务逻辑中各个类的相互依赖,降低了系统耦合度,提供了程序重用性。
采用AOP技术,前置机系统实现了部分业务权限检查控制;结合Hibernate事务控制,实现了CIS的事务管理;结合Log4J,实现了程序异常错误定位。
CIS前置机系统除了上面介绍的各种技术外还采用了ACEGI、AJAX、eXtremeTable标签、Jasper报表、Log4J等技术。CIS前置机系统充分采用了现在Java技术的一些优秀框架,并采用了目前的一些流行的成熟技术,是中国人民银行支付业务系统的一个大胆尝试。通过这11个月的运行,我们可以说CIS前置机的技术框架是成功的。
在此项目后,我们采用这个框架开发了中国人民银行清算总中心支付系统开发中心网上培训系统,也取得了很好的效果。2008年3月底,中国人民银行计划在全国部署境内外币支付系统,我们在这个框架的基础上增加了MQ、时间触发等功能,作为境内外币支付系统共享前置机的核心框架,目前该项目正在开发中。
转载请注明出处学文网 » CIS前置机系统框架设计