项目经验分享概述:海辉有位老总曾经说过,IT行业最值得做的是金融,软件金融行业最好的是银行。本人有幸从毕业就开始做银行项目,至今已有四年之余。经历了银行几个建设性的项目开发,同时也积累了不少银行项目经验,希望与大家分享交流,有不足之处希望大家指正,让我们共同学习进步。下面我以华夏银行国结系统为例,与大家做一个项目经验分享。华夏银行国结系统整体流程介绍华夏银行国际结算系统,简称国结系统。整体分为六个大的模块:融资模块,结算模块,参数模块,接口模块,报表模块,新产品模块。其余涉及到权限设定、系统维护、审批流程、账务流程等。华夏银行以前是有国结系统的,但运作效率比较低。比如某某公司想做一笔出口押汇,第一他要去银行提出申请,银行审计员再进行资产审查做手工登记,如果符合银行的标准再口头告知主管进行正规流程申请;第二银行内部开始通过国结系统做出口押汇操作,记录出口押汇所需基本信息,通知担保行并对发来的报文做手工分析。整体来看以前国结系统的出口押汇操作,基本是以打电话,手工记录以及人工分析为主,严重影响了华夏银行国际结算业务的实施与开展。通过我们公司给华夏银行做完的国结系统,不仅消除了以前业务缓,办事慢,效率低的状态,而且大大提高了华夏银行国际结算系统与其他系统配合协作的能力。下面具体从两个方面与大家分享一下华夏银行国结系统项目经验:华夏银行项目经验分享:一.项目技术分享1.理解整体框架一般来讲,任何一个项目都有几种架构,通过客户需求以及功能要求最后决定采用哪种架构。华夏银行国结系统采用C/S模式EBILLS系统,基于UNIX系统下多用户系统。其中比较重要的工作流的控制,审批流程以及账务处理。EBILLS系统采用jboss进行编译,工具Eclipse或是MyEclipse,数据库为Oracle。整体模式采用EJB分布式开发,系统运行采用webSphere服务器,其中表现层采用Struts,jsp,js技术,业务逻辑控制采用Spring简单配置,写action类通过ebills.jar包具体实现业务控制,底层的数据应用采用ebills.commons.jar包实现,一部分也利用到了hibernate技术。Ebills系统有自己的API,大部分功能实现都已经封装好,比如报文实现有swift.jar包,工作流实现有workFlow.jar包,银行接口有bankAcct.jar包等。EBILLS整体架构以及里面技术的应用,能够做到功能可以实现,具体技术可以搞懂并可以修改利用,这就说明对架构有了很深入的理解。2.熟悉常用技术一般来说,一个项目会用到很多技术,华夏银行国结系统常用的技术有JSP、JS、JAVA、SSH框架使用、tomcat/jboss/websphere服务器应用、oracle数据库应用、UNIX系统操作命令、小型机软件安装使用等。常用到的一些比如文件上传下载、JSP界面显示、业务逻辑编写、JDBC连接数据库、SQL语句实现等。有些我们知道原理并且会应用,比如spring的AOP切面实现,hibernate映射。这些技术熟能生巧,只要我们用心去思考并经常运用,学会总结,没有可以难倒的技术。3.突破关键难点在华夏国结项目中,我们利用了很多技术,包括以前没有用到的或不是很熟悉的。哪怕是我们以前很熟悉的,一旦环境变化或是各种条件改变都有可能跟我们想象的不一样。比如EBILLS系统用Eclipse工具开发,开始也没有具体规定那种工具那个版本比较适合,因为以前EBILLS是一个产品,在其他银行只是安装使用,简单修改一些模块。但在华夏国结系统中有比较大的改动,包括核心工作流的变动,所以导致开始使用Eclipse3.4.1以及Eclipse3.3.0都很不稳定,经常启动不起来,最后经过试验用Eclipse3.5.2很好的与EBILLS系统核心工作流配合,并修改jboss配置使之编译顺利进行。还有一个难点就是维护人员管理系统中,要用图表显示与各个系统之间关联,以及系统之间传输数据量即时显示问题。EBILLS产品中开始有iReport报表工具,但由于维护人员管理系统属于国结系统的子系统,所以在数据查询的时候有些麻烦,通过查询资料与实际操作实验,最后选择了jfreechart通过在action层查询获取数据。这里充分体现了技术的选取取决于效率与实际应用。4.用心沟通协作千人同心,则得千人之力;万人异心,则无一人之用。如果一千个人同心同德,就可以发挥超过一千人的力量,可是,如果一万个人离心离德,恐怕连一个人的力量也比不上了!这,就是团队的力量。任何项目中,都没有英雄主义,我们只有互相协作,发挥团队的力量,把自己工作做好,帮助身边的同事,自己会的技术与同事分享,只有这样我们才能从中学到东西,只有这样我们才能把项目做成功。二.项目业务分享1.国结系统与外围系统关系介绍华夏银行国结系统,其功能是银行的国际结算业务操作,主要关联信贷系统、清算系统、BansLink核心系统、报文系统等。信贷系统主要是保函开立、出口双保理等业务需要信贷系统审批,审批通过后进入国结系统进行业务操作。清算系统主要是融资业务如出口代付、福费廷、打包贷款等业务需要清算系统发报文通知国结系统是否可以做此业务。banslink核心系统主要涉及到账务处理,通过核心系统给出的接口进行操作,账务可以通过banslink查询交易流水。报文系统在各银行与银行系统之间起到纽带作用,swift报文国际通过格式,大额报文中国人民银行专用格式等。2.国结系统业务介绍华夏国结系统主要包括5大业务,其中包括出口业务,进口业务,保函业务,国内证业务,融资业务。其他还有权限设置,账务管理,公共查询,光票托收等。本人属于融资组,对出口押汇,进口代付,出口双保理以及福费廷都有比较深入的了解,下面以福费廷为例,介绍一下华夏国结系统出口福费廷业务。福费廷业务定义为无追索权的融资业务。通过与华夏银行各地分行业务人员了解,福费廷业务南方做的比较多,业务量也比较大。因为他这种融资银行没有追索权,公司的风险会降低,但担保行的风险会很高,所以他的融资利率也是很高的。出口福费廷,首选要办理出口信用证议付寄单,进行电文登记,这笔业务有了国外的承兑行,那我们就可以做出口福费廷。出口福费廷业务中首选要进行额度验证,如果这家承兑行额度不满足这笔业务的金额,那么这笔业务不允许做出口福费廷。如果满足那么在国结系统做出口福费廷开始进行福费廷款项处理,这时说明华夏银行已经把款项放给客户了,等到出口福费廷还款日到期则开始进行出口福费廷清算,这时清算系统收到承兑行报文,并把钱汇入华夏银行账户行,清算系统收到这笔款项则给国结系统发报文,国结系统才可以做出口福费廷清算。福费廷业务按照国际惯例主要分为买断型、转售型、参贷型。一般来说买断型福费廷做的比较多,参贷型涉及到风险参贷行,由于参贷金额以及分配比例没有固定化规则,所以参贷型福费廷还是比较少的。福费廷业务流程比较复杂,涉及到账务处理以及前置业务关联比较多,所以做福费廷业务难度也比较大。华夏银行福费廷记账分录中福费廷的记账分录是最多也是最长的,可见其复杂程度。以下我们继续介绍福费廷账务处理。3.国结系统账务介绍国结系统的账务以融资账务处理为主,以福费廷账务为重点。国结系统账务处理整体思路是核心提供接口,通过接口一笔业务给出一笔流水账,国结系统再开始对这一笔账务进行各种业务操作以及控制分流,出现多笔账务,最后再根据具体业务把每笔帐分别汇入到核心系统的不同结算户。以福费廷为例,出口福费廷业务主要分为两步,一为款项处理,二为收汇清算。在款项处理的时候,国结系统从核心拿到一笔账务,根据具体业务再细分不同账务,如预扣费账务、暂收账务等,并且在界面显示,操作员会根据福费廷利率以及预扣费、当前币种汇率等检查福费廷账务是否正确。在收汇清算过程中,根据清算系统发来的报文,国结系统显示此笔业务的还款详细信息,并根据金额多少自动计算,显示还款账务信息。华夏国结系统的还款原则是多退少补,还款多余的转移到客户帐,如果没有还清还可以再次做还款。4.国结系统测试介绍在开发阶段都是不完整的,只有在测试阶段才能使之更为完善。国结系统也不例外,在测试阶段主要关注两点,一是否符合客户的要求,二系统交互以及账务正确。华夏银行采用分行人员试运行的模式测试,一方面可以更好的账务国结系统操作流程,另一方面可以为国结系统具体业务功能开发起到查漏补缺的作用。在配合分行人员测试阶段也学到了很多有关各种具体业务的知识,比如华夏银行国际结算户账务流水不清导致国结系统账务批量很难查找问题,解决办法是在国结系统自己账务流水做记录再根据核心账务流水对比,重新批量查询。华夏国结系统大致在7月中旬开始SIT(softwareintegrationtesting)测试,为期一个月,到8月开始UAT(useraccepttesting)测试;在测试中又根据分行人员的不同需求对国结系统做修改,以更好的满足客户的要求。银行项目过程问题分享一.项目沟通问题三人行,则必有我师。任何一个项目没有个人主义,我们需要沟通,需要分享。下面从三方面说明项目中沟通的重要性:第一方面就是沟通提高开发效率,一个难点你攻破了,如果别人再碰到我们互相多问问,就不用花费时间再去研究试验,懂得原理方法直接拿来用,一个人少花费两个小时,那十个人就是三天的时间,从某种意义上来说项目的开发效率就提高了。第二方面是沟通有利互相学习,不管是技术还是业务,多学多问多沟通,不懂就问,懂的就说出来,慢慢的任何技术业务难题都会变的简单。从中每个人也学到了很多东西。第三方面是沟通有利团队融洽,项目整体运作的关键就是团队建设,通过项目组成员互相沟通,项目完成以后我们不仅是同事更会成为人生的挚友。二.项目学习问题如果我们用心,任何一个项目我们都可以学到很多东西。我从两点与大家分享,一是封装的产品,二是不封装的通用技术。一般产品类型的项目,有人会抱怨好多核心程序以及经常用的方法都封装起来,作为程序员老是机械的运用封装好的组件,便是浪费自己的时间,于是开始抱怨,产生情绪。其实我们用另一种眼光去看待这件事情,封装是为了提高效率,如果一个产品都是自己写jsp、js函数,那是不是会花费很长时间,其实这样我们也学到了东西,就是产品会封装很多东西,以后我们学着做产品,学着封装。在平时运用中也可以去查看封装的代码,试着自己写并封装起来运用,这样不仅自己写了代码,也学会了封装。不封装的技术在项目中有很多,比如一个项目管理经常用到的CVS、SVN等,我们就应该自己去学习如果运用,并理解为什么这个项目用到CVS而不是SVN。三.项目心态问题有句话说:性格决定心态,心态决定成败。一个项目中我们会碰到很多问题,尤其是给银行做项目,他们是甲方我们是乙方。银行方面会根据他们的上班时间以及上班纪律等要求我们,因为我们在他们场地办公,这时候有些人会感觉不舒服,感觉以前在公司没有那么严格。这就是我们心态是不是摆正了,要记住我们是为银行服务,好多IT公司是没有资格成为银行的供应商,作为程序员很少人会真正做银行项目。我们应该感到庆幸,摆正心态,在严峻的环境中锻炼自己,我们不能改变,那我们就适应吧。只有适应了,才能迈出成功的第一步。四.项目加班问题现在IT行业中的加班已是普遍现象,加班是一种态度。如果你说做IT行你没有加过班,那说明你不是一个尽职的程序员。其实本人不提倡加班,但是真正提到做事,不单单是加班的问题,而是一种心态,一种职业素养。在华夏国结项目由于时间紧迫,2月份开始进入项目也就开始加班,几乎周六不休息,一直到9月份。每天都是8点开始工作,晚上12点以后睡觉,有一个月经常熬到2点。那时候经常感觉全身酸痛,但有一种精神支柱支撑着我,那就是责任。在其职某其事,既然要做就用心把他做好做透,不然就选择离开,但路在前方我不能停留,所以选择了坚持。人生中,总会有一两次令人难忘的项目,如果有机会遇到我们就要去珍惜,我估计大家都一样,不会退缩;这不仅是简单的加班问题,而是对自己意志的磨练,对自己信念的考验。项目经验分享总述每个人都有自己的路,一步一脚印的走,用心去体会。