博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
金融资产管理项目-银企直连
阅读量:4605 次
发布时间:2019-06-09

本文共 2753 字,大约阅读时间需要 9 分钟。

  本系统由24个子系统构成,各系统间通过SOA治理平台通信,采用面向服务的体系架构,涉及WebService(UDDI、WSDL、SOAP)相关技术。开发环境为Jboss+Oracle,UAT、SIT、生产环境为weblogic集群、分布式、Linux系统。从开发环境移植到生产环境时出现EL表达式不兼容情况、以及请求银行系统时被weblogic代理的情况、降低了处理交易的效率,需要修改weblogic参数。以下详细介绍银企直连子系统。

银企直连主要是与银行系统、其它子系统交互和为其它子系统提供接口的系统,自身包含两个子系统MS管理系统和SERVER服务系统。

MS管理系统

银行机构管理:维护全国各个银行网点的基本信息,可从Excel导入由财务公司提供的模板,支持页面变更,同时对外提供接口,由其它子系统增量更新。

财银关系管理:维护财务公司和成员单位银行账户上下级的关系,只有维护过的账户才能通过银企直连正常连接银行做交易。

定时任务设置:使用Quartz框架,设置定时任务时需指定类型,存入数据库后有SERVER系统加载执行,系统运行期间修改定时任务时调用SERVER系统进行同步。

归集策略设置:按设定的策略将成员单位的资金归集到财务公司

基础策略:绑定相关类型的定时任务、金额、归集类型(指定金额、按比例、保留余额),每个策略都可以绑定多个成员单位,绑定后即为归集策略。

临时策略:和归集策略为多对一的关系,有生效日期、失效日期,如果生效日期是 当天,冻结相应的归集策略,否则有SERVER系统每日00:05处理。

生效归集策略时临时策略会失效,删除和失效临时策略时归集策略会生效,所有策略的删除都为物理删除,只改变数据库状态,页面不再显示,导出 EXCEL时显示所有。

SERVER系统的定时任务每日00:05会根据临时策略的有效期切换归集策略和临时策略。

weblogic集群环境下,Quartz框架定时任务会出现不执行的情况,需要先启动其它相关的系统,再启动银企直连。存在定时任务的系统上线后,重启时要避开定时任务执行的时间,以免重启后影响相关业务的执行。

  除此之外,MS还包含下拨策略设置、手动归集、支付状态修改、支付失败处理、归集业务入账、归集资金抹账,手工解冻、查余额、查状态、刷明细、查明细、查账户信息等功能。管理系统中部分功能需要走流程,用户角色由用户管理系统管理,本系统只需要提供流程中间表,处理提交、批准、驳回、重申等情况。

 

SERVER服务系统(目前交互的银行系统有中国银行、工商银行、交通银行、建设银行、农业银行,接口文档分别由各银行研发中心提供)

  登录银行,使用QuickServer开源Java库快速创建多线程、多客户端TCP服务器应用程序,设置服务端口port,启动QuickServer,其中包含登录银行的服务SignCommandProcessor。

从.propertiies配置文件读取(ResourceBundle)需要登录的银行(工商银行系统),读取系统支持的银行,通过Socket(127.0.0.1,port)请求登录银行的服务,轮询登录系统支持且需要登录的银行并获取Token。

和银行交互时每个银行都有对应的Client类,通过动态容器(蝴蝶容器)从.bcs文件创建各个银行的客户端,通过前置机和银行系统进行交互。

交易状态刷新轮询任务:归集状态刷新、支付状态刷新,循环刷新各个银行。判断银行客户端是否存在,按银行将库中状态为交易待查的交易向银行查询,因为各银行系统对外部系统请求时间间隔都有限制,所以需要在.propertiies文件中保存刷新时间间隔,根据银行编号、重发类型计算重发时间间隔,若new Date().getTime()>System.currentTimeMills(),则发送 银行。

组装报文,每个银行每种交易都需要配置相应的报文模板,每个.ftl模板文件都由bankCode+transCode命名,本系统采用的FreeMarker模板引擎;同理,每个银行系统返回的报文都需要不同的类解析,实现同一个接口,根据bankCode判断。

每个管理器都是轮询任务,重发部分放到run()方法的while循环中,需要定义volatile(原子变量)变量控制线程状态

lock = new ReentrantLock();

c = lock.newCondition();

c.wait(st,TimeUnit. MILLISECONDS);过st时间执行一次

每个支持银行一个线程,启动线程

ExecutorService es = Executor. newSingleThreadExecutor();

Future f = es.submit(new Runnable ());

如果在执行期间出现了失败而终止了此线程,那么如果需要,一个新的线程会代替它执行后续任务。

       除此之外,还有交易重发轮询任务(将库中待发送银行的交易发送银行),银行接口状态刷新任务(检查各个银行的前置机是否联通),入账管理任务(轮询查询待入账的数据和调核心通讯异常的数据重发核心记账)。

必须有的定时任务

       银行当日明细刷新:循环去银行获取该账号的当日交易明细,解析后进行分类入库,

代理收款的需要掉核心冻结金额,银行端归集的需要掉核心记账,指令归集和支付的需要对比是否有已抹账的数据分别入库或更新状态。

还有账户当日余额刷新、银行历史明细刷新、归集策略切换定时任务,这些都需要在

数据库添加基础数据。

定时任务监控:当部署为集群环境时,为保证只有一台服务器跑定时任务,管理端与服务端的同步接口关闭,管理端有变动定时任务时,修改数据库状态,此类实时监控数据库状态,根据修改的状态来同步服务端的定时任务。

相关接口

       对外提供的接口分三大类:

  1. 信息服务接口:外部系统从银企获取银企维护的基础数据或交易数据
  2. 刷新服务接口:由管理端手动出发触发调银行
  3. 交易服务交口:提供线上支付渠道,调银行接口来进行交易

调用银行接口:

1. 信息查询:主要获取账户的基本信息、余额等

2. 流水刷新:获取指定账号的当日或历史交易流水

3. 支付交易:支付转账、归集等交易接口

  银企与银行系统的通讯都需要通过前置机加密,每个银行都需要部署前置机,交易日志详情都可在前置机下查看,农行的前置机从银行刷回数据不会返回给请求的系统,会以文件的形式保存到前置机指定目录下,由于应用环境和前置机不在同一台机器,可以通过部署ftp的形式共享文件,由银企自行获取。

 

转载于:https://www.cnblogs.com/grow1016/p/8274411.html

你可能感兴趣的文章
JPA、JTA、XA相关索引
查看>>
查询语句的练习
查看>>
快速切题 sgu103. Traffic Lights 最短路 难度:1
查看>>
2010年5月11日日志
查看>>
产品需求文档(PRD)的写作
查看>>
网页高度计算方法
查看>>
Java EE的map
查看>>
webdriver.py--解说
查看>>
windows 下配置Eclipse che
查看>>
SearchSploit
查看>>
2017.3.2
查看>>
关于C语言中的转义字符
查看>>
9-条件测试
查看>>
移植3.4.2内核之韦东山笔记
查看>>
Cocos2d-x学习笔记(20)(TestCpp源代码分析-4)
查看>>
maven pom.xml报错
查看>>
钱多,人傻,快来快来
查看>>
python之haproxy配置文件操作(第三天)
查看>>
【css初始化】统一规范样式 base.css 样式应该怎样写?
查看>>
DB2数据库BACKUP PENDING状态(修改日志模式导致)(转)
查看>>