朱利妍 牛鵬
摘要:針對(duì)金融自助終端軟件報(bào)文通信需求復(fù)雜多變的情況,在綜合分析業(yè)務(wù)交易本質(zhì)的基礎(chǔ)上,提煉關(guān)鍵業(yè)務(wù)要素,抽象為解析器、模板和業(yè)務(wù)報(bào)文3層系統(tǒng)模型,提出了一種靈活可配置的交易報(bào)文通信系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)方法,包括通信鏈路設(shè)計(jì)、報(bào)文協(xié)議格式、動(dòng)態(tài)組解包方法、報(bào)文數(shù)據(jù)加工存取及通信完成事件通知等,為終端交易軟件的開(kāi)發(fā)提供技術(shù)支持和方案參考。
關(guān)鍵詞:交易報(bào)文;自助終端軟件;通信鏈路;報(bào)文協(xié)議
中圖分類(lèi)號(hào):TP391文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2018)16-66-3
Research on Financial Self-service Terminal Message Communication System
ZHU Liyan1, NIU Peng2
(1. He爺nan Police College, Zhengzhou He爺nan 450046, China; 2. Inspur Financial Information Technology Co., Ltd, Ji爺nan Shandong 250101, China)
0引言
隨著近年來(lái)互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,基于金融自助終端交易平臺(tái)的業(yè)務(wù)形態(tài)在不斷發(fā)生改變,以適應(yīng)新形勢(shì)下技術(shù)的不斷進(jìn)步和變革。2015年以來(lái),隨著國(guó)有各大銀行加速推進(jìn)網(wǎng)點(diǎn)服務(wù)轉(zhuǎn)型升級(jí),對(duì)高度集成銀行業(yè)務(wù)的新型智能設(shè)備的需求日益劇增。大量新型智能設(shè)備的引入對(duì)交易軟件的要求也越來(lái)越高,在報(bào)文通信層面,要能夠接入更多的后端業(yè)務(wù)系統(tǒng),適配不同的通信協(xié)議。本文提出一種完全配置化的通信報(bào)文設(shè)計(jì)方案,在實(shí)際應(yīng)用中,通過(guò)實(shí)現(xiàn)其定義的模塊接口,配置不同的報(bào)文模板,即可滿足不同業(yè)務(wù)場(chǎng)景下的報(bào)文通信需求,從而屏蔽底層處理細(xì)節(jié),簡(jiǎn)化應(yīng)用開(kāi)發(fā)的復(fù)雜度。
1總體設(shè)計(jì)
未來(lái)幾年,金融智能設(shè)備市場(chǎng)預(yù)計(jì)仍將保持10%左右的年均增速[1],大量新業(yè)務(wù)的遷移和開(kāi)發(fā),要求軟件的報(bào)文通信方案要足夠靈活、可配置、穩(wěn)定和可靠,這樣才能滿足未來(lái)系統(tǒng)的擴(kuò)容和新業(yè)務(wù)的無(wú)縫融入。
傳統(tǒng)實(shí)踐中,終端軟件的通信方案設(shè)計(jì)往往與特定業(yè)務(wù)類(lèi)型緊密耦合,抽象度低、復(fù)用性差。當(dāng)后端的業(yè)務(wù)接口發(fā)生變更時(shí),必須編寫(xiě)新的通信模塊,修改調(diào)用者代碼,或者擴(kuò)展原有通信模塊的功能,然后再經(jīng)過(guò)編譯、打包及測(cè)試等一系列流程進(jìn)行發(fā)布和上線,效率低下、維護(hù)不便,不利于業(yè)務(wù)系統(tǒng)的快速迭代更新。從項(xiàng)目實(shí)施的角度看,如何簡(jiǎn)化報(bào)文通信過(guò)程的復(fù)雜度、加快開(kāi)發(fā)效率及保證系統(tǒng)健壯與高復(fù)用性是一項(xiàng)亟待解決的問(wèn)題。如圖1和圖2所示,當(dāng)后端系統(tǒng)接口發(fā)生變更時(shí),傳統(tǒng)的通信系統(tǒng)設(shè)計(jì)并不能快速適應(yīng)新需求的變化,需要對(duì)基礎(chǔ)通信模塊和業(yè)務(wù)邏輯模塊同時(shí)進(jìn)行升級(jí)改造,工作量大、維護(hù)不便。
基于上述問(wèn)題,提出一種靈活可配置、高度參數(shù)化和業(yè)務(wù)無(wú)關(guān)的通信報(bào)文設(shè)計(jì)方案。內(nèi)置常用的鏈路通信協(xié)議,設(shè)計(jì)一種通用的報(bào)文模板,遵循“高內(nèi)聚,低耦合”的設(shè)計(jì)原則[2],真正達(dá)到“對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉”的目標(biāo)。
基于上述問(wèn)題,提出一種靈活可配置、高度參數(shù)化和業(yè)務(wù)無(wú)關(guān)的通信報(bào)文設(shè)計(jì)方案。內(nèi)置常用的鏈路通信協(xié)議,設(shè)計(jì)一種通用的報(bào)文模板,遵循“高內(nèi)聚、低耦合”的設(shè)計(jì)原則[2],真正達(dá)到“對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉”的目標(biāo)。
2詳細(xì)設(shè)計(jì)
系統(tǒng)設(shè)計(jì)一個(gè)開(kāi)放式的框架,它抽象出協(xié)議模塊和鏈路模塊,并定義好各自的接口形式。在功能上劃分為鏈路管理器、報(bào)文解析器、自動(dòng)化模塊、數(shù)據(jù)字典和事件模塊5個(gè)模塊。
①在鏈路定義上,設(shè)計(jì)支持TCP和HTTP兩種通信方式;②在報(bào)文協(xié)議上,支持銀聯(lián)8583報(bào)文格式,XML格式、分隔符以及其他自定義形式的報(bào)文;③自動(dòng)化模塊提供腳本的動(dòng)態(tài)加載和執(zhí)行功能,增強(qiáng)系統(tǒng)可擴(kuò)展性,以便定制化開(kāi)發(fā)不同報(bào)文的組解包函數(shù);④數(shù)據(jù)字典提供統(tǒng)一平臺(tái)化的數(shù)據(jù)管理、存儲(chǔ)和訪問(wèn)能力,提供系統(tǒng)各模塊間的數(shù)據(jù)交互能力;⑤事件[6]模塊提供對(duì)外通知接口,通知在整個(gè)發(fā)送接收過(guò)程中可能產(chǎn)生的各類(lèi)系統(tǒng)狀態(tài),如圖3所示。
2.1接口設(shè)計(jì)
基于開(kāi)放的系統(tǒng)設(shè)計(jì),不同模塊之間功能邊界清晰,保持松散的耦合關(guān)系。本文提出的設(shè)計(jì)方案將接口劃分為對(duì)外服務(wù)接口、鏈路模塊接口和報(bào)文協(xié)議模塊接口3類(lèi),如表1、表2和表3所示。
2.2模板設(shè)計(jì)
報(bào)文模板設(shè)計(jì)上遵循規(guī)則清晰、易于理解和配置方便的原則,涵蓋報(bào)文通信中的兩大要素是鏈路屬性和數(shù)據(jù)應(yīng)用協(xié)議。①在鏈路屬性中,定義鏈路傳輸協(xié)議及其相應(yīng)參數(shù);②在報(bào)文協(xié)議中,將報(bào)文視為一組原子字段的組合,每個(gè)字段有其固定的屬性,將不同的字段組合在一起即定義出了一條特定的報(bào)文,這二者綁定在一起構(gòu)成了一個(gè)完整的通信方案。
2.3關(guān)鍵算法
2.3.1組包算法
若干字段構(gòu)成一個(gè)虛擬的字段組,若干字段和字段組構(gòu)成一條報(bào)文,若干條報(bào)文和一些統(tǒng)一的規(guī)則構(gòu)成了一個(gè)應(yīng)用協(xié)議的完整定義。
在實(shí)現(xiàn)報(bào)文數(shù)據(jù)組包功能時(shí),總體過(guò)程是通過(guò)字符串連接的方式將每個(gè)字段串起來(lái)。首先要進(jìn)行數(shù)據(jù)準(zhǔn)備,解析模板文件,提取每個(gè)字段定義的屬性;其次根據(jù)規(guī)則分別對(duì)不同的字段進(jìn)行處理。若是普通數(shù)據(jù)字段則直接提取數(shù)據(jù),而特殊字段則按字段屬性進(jìn)行自動(dòng)賦值或編碼轉(zhuǎn)換。
在配置報(bào)文模板的過(guò)程中,字段的數(shù)據(jù)來(lái)源分為3類(lèi):①直接指定的字面值常量:在報(bào)文配置過(guò)程中指定;②由數(shù)據(jù)字典模塊提供的特定名稱變量:數(shù)據(jù)內(nèi)容在運(yùn)行時(shí)確定;③根據(jù)字段屬性自動(dòng)賦值:對(duì)于第一種數(shù)據(jù),在解析模板文件的過(guò)程中直接獲??;對(duì)于數(shù)據(jù)字典變量,根據(jù)運(yùn)行時(shí)該變量對(duì)應(yīng)的內(nèi)存數(shù)據(jù)來(lái)獲??;第3種則根據(jù)此字段當(dāng)前的上下文環(huán)境來(lái)自動(dòng)賦值,本系統(tǒng)的組包流程如圖4所示。
2.3.2解包算法設(shè)計(jì)
數(shù)據(jù)解包的過(guò)程,本質(zhì)上就是按照模板中定義的返回報(bào)文格式,將收到的字節(jié)流劃分為一個(gè)個(gè)獨(dú)立有序的字段,并按照?qǐng)?bào)文定義的規(guī)則進(jìn)行下一步處理的過(guò)程。而在將一串?dāng)?shù)據(jù)劃分為報(bào)文定義的字段時(shí),最關(guān)鍵的是確定當(dāng)前字段的長(zhǎng)度,本系統(tǒng)解包流程如圖5所示。
3系統(tǒng)測(cè)試
本系統(tǒng)作為一個(gè)獨(dú)立通用的平臺(tái)性模塊,封裝為單獨(dú)的動(dòng)態(tài)鏈接庫(kù)以供應(yīng)用程序調(diào)用。測(cè)試時(shí)主要關(guān)注2個(gè)方面:①應(yīng)用程序作為客戶端與后臺(tái)通信時(shí),處理結(jié)果是否正確;②應(yīng)用程序作為服務(wù)端,接收后臺(tái)發(fā)送的主動(dòng)報(bào)文時(shí),處理結(jié)果是否正確。
測(cè)試時(shí),應(yīng)用程序按序調(diào)用對(duì)外服務(wù)接口,加載數(shù)據(jù)字典模塊和模板解析模塊,并自動(dòng)生成報(bào)文數(shù)據(jù),不需要調(diào)用程序處理底層的各種技術(shù)細(xì)節(jié)。當(dāng)接收完返回?cái)?shù)據(jù)后,自動(dòng)執(zhí)行解包過(guò)程,全部操作成功后,接口函數(shù)返回成功,發(fā)出事件通知,應(yīng)用程序調(diào)用者使用數(shù)據(jù)存取接口獲得需要的數(shù)據(jù)。
4結(jié)束語(yǔ)
互聯(lián)網(wǎng)、人工智能等新技術(shù)的高速發(fā)展,為傳統(tǒng)行業(yè)的業(yè)務(wù)形態(tài)帶來(lái)了巨大的沖擊,變革迫在眉睫,流程復(fù)雜、效率低下的人工柜面業(yè)務(wù)終將被各類(lèi)終端應(yīng)用軟件所取代。本文提出的通信系統(tǒng)設(shè)計(jì)方案,高度內(nèi)聚,又具備極強(qiáng)的靈活性,易于擴(kuò)展,從理論及實(shí)踐來(lái)看,幾乎可以滿足金融終端軟件的各種通信需求。
本系統(tǒng)高度參數(shù)化,所依賴的模板文件為通用的XML格式,在實(shí)現(xiàn)上選擇跨平臺(tái)語(yǔ)言開(kāi)發(fā),因此可以滿足不同操作系統(tǒng)上的使用要求。由于系統(tǒng)自身的業(yè)務(wù)無(wú)關(guān)性,因此也可以應(yīng)用在社保、交通等行業(yè)軟件中,作為獨(dú)立的通信模塊使用。
參考文獻(xiàn)
[1]前瞻產(chǎn)業(yè)研究院.2018-2023年中國(guó)ATM機(jī)行業(yè)市場(chǎng)前瞻與投資戰(zhàn)略規(guī)劃分析報(bào)告[R].北京:前瞻產(chǎn)業(yè)研究院,2017.
[2] Gamma E,Helm R,Johnson R,et al.設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2007.
[3] Blanchette J,Summerfield M.C++GUI Qt 4編程[M].北京:電子工業(yè)出版社,2013.
[4] Nicholas C Z.JavaScript高級(jí)程序設(shè)計(jì)(第2版)[M].北京:人民郵電出版社,2010.
[5]蒲松濤.金融自助服務(wù)設(shè)備國(guó)產(chǎn)化現(xiàn)狀研究[J].中國(guó)信息化周報(bào),2017(32-33):23.
[6] JeffreyR.Windows核心編程[M].北京:機(jī)械工業(yè)出版社,2008.