文/陳軍
南京金保工程二期管理信息系統(tǒng)的建設(shè)涉及公共基礎(chǔ)軟件、社會(huì)保障卡、社會(huì)保險(xiǎn)、就業(yè)與勞動(dòng)關(guān)系、人事人才等相關(guān)的十幾個(gè)子系統(tǒng),各子系統(tǒng)之間獨(dú)立應(yīng)用和數(shù)據(jù)庫(kù),但相互間又存在必然的聯(lián)系和數(shù)據(jù)共享聯(lián)動(dòng),筆者結(jié)合自身工作經(jīng)驗(yàn)總體設(shè)計(jì)規(guī)劃并實(shí)現(xiàn)了統(tǒng)一對(duì)內(nèi)數(shù)據(jù)交互服務(wù)平臺(tái)和統(tǒng)一對(duì)外數(shù)據(jù)交互服務(wù)平臺(tái),解決各系統(tǒng)間數(shù)據(jù)交互的安全性,提升了交換安全性和效率。
定義數(shù)據(jù)交互技術(shù)方案以及三種類型的數(shù)據(jù)交互模式的對(duì)接細(xì)則,適用于南京市人社局各業(yè)務(wù)系統(tǒng)之間及與外部單位的對(duì)接。對(duì)接前根據(jù)子系統(tǒng)的實(shí)際情況和外部需求,選擇適合業(yè)務(wù)的數(shù)據(jù)交互模式。
南京市金保二期信息協(xié)同共享分內(nèi)部共享交換和外部交換。其中內(nèi)部共享交換是在南京市金保二期專網(wǎng)內(nèi)部各級(jí)橫向間的業(yè)務(wù)辦理過(guò)程中信息共享,支持行業(yè)內(nèi)基礎(chǔ)信息和業(yè)務(wù)辦理信息的統(tǒng)一和協(xié)同,實(shí)現(xiàn)關(guān)聯(lián)業(yè)務(wù)的協(xié)同辦理等;外部交換是與其他部門(mén)(或不同網(wǎng)絡(luò))之間的信息雙向交換,支持各自系統(tǒng)的業(yè)務(wù)辦理,基于實(shí)時(shí)信息流的及時(shí)交互支持各自業(yè)務(wù)辦理信息的核實(shí)等。
為了滿足內(nèi)外數(shù)據(jù)的交互需求,提升內(nèi)部數(shù)據(jù)的安全,設(shè)計(jì)統(tǒng)一對(duì)內(nèi)和對(duì)外的數(shù)據(jù)交互服務(wù)平臺(tái),內(nèi)外兩個(gè)平臺(tái)之間進(jìn)行數(shù)據(jù)交互。數(shù)據(jù)交互服務(wù)平臺(tái)提供三種類型數(shù)據(jù)的交互,一是實(shí)時(shí)通信交互,建立數(shù)據(jù)交互調(diào)度服務(wù),通過(guò)實(shí)時(shí)交易模式實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)交互;二是數(shù)據(jù)庫(kù)表交互,通過(guò)數(shù)據(jù)庫(kù)的數(shù)據(jù)表進(jìn)行數(shù)據(jù)交互和共享,主要應(yīng)用于非實(shí)時(shí)的批量數(shù)據(jù)交互,可通過(guò)腳本或數(shù)據(jù)同步工具實(shí)現(xiàn);三是文件服務(wù)交互,建立文件服務(wù)器,通過(guò)FTP的方式實(shí)現(xiàn)文件的共享與交換。
統(tǒng)一內(nèi)部數(shù)據(jù)交互服務(wù)平臺(tái)用于專網(wǎng)內(nèi)部系統(tǒng)間數(shù)據(jù)協(xié)同和共享,各應(yīng)用系統(tǒng)除搭建自身應(yīng)用服務(wù)和數(shù)據(jù)庫(kù)服務(wù)以外,還應(yīng)建立對(duì)外接口服務(wù),各系統(tǒng)的接口服務(wù)是南京金保二期系統(tǒng)建設(shè)中必不可少的一部分。系統(tǒng)間數(shù)據(jù)交互統(tǒng)一通過(guò)統(tǒng)一對(duì)內(nèi)數(shù)據(jù)交互服務(wù)平臺(tái)實(shí)現(xiàn)。
內(nèi)部數(shù)據(jù)交互調(diào)度服務(wù)作為內(nèi)部系統(tǒng)間實(shí)時(shí)交易的總調(diào)度服務(wù),是內(nèi)部系統(tǒng)間數(shù)據(jù)實(shí)時(shí)交互的中樞,其核心為內(nèi)部各應(yīng)用系統(tǒng)的接口服務(wù)提供注冊(cè)和管理,制訂統(tǒng)一的數(shù)據(jù)交互接口規(guī)范,并根據(jù)接口規(guī)范進(jìn)行系統(tǒng)間接口服務(wù)管理和調(diào)度。外部數(shù)據(jù)交互服務(wù)與內(nèi)部原理相似,使用方式由外部單位和具體情況確定。
2.4.1 實(shí)時(shí)通信模式
通訊采用TCP/IP協(xié)議,可選支持Socket、WebService兩種通訊方式(同一類業(yè)務(wù)僅允許選擇一種通訊方式),通訊時(shí)采用短連接,當(dāng)一筆交易完成后,雙方友好斷開(kāi)連接,待下一筆交易發(fā)起時(shí)再建立連接;各子系統(tǒng)建立對(duì)應(yīng)的監(jiān)聽(tīng),提供對(duì)應(yīng)業(yè)務(wù)接口服務(wù);由數(shù)據(jù)交互服務(wù)平臺(tái)建立服務(wù)監(jiān)聽(tīng),外部系統(tǒng)提供接口服務(wù)。此模式應(yīng)用于對(duì)于數(shù)據(jù)實(shí)時(shí)性較高的業(yè)務(wù)場(chǎng)景。如讀寫(xiě)基礎(chǔ)信息庫(kù)數(shù)據(jù)。
2.4.2 數(shù)據(jù)庫(kù)表交互模式
在數(shù)據(jù)庫(kù)交互中,設(shè)計(jì)內(nèi)部共享交換庫(kù)和外部交換庫(kù),內(nèi)部共享交換庫(kù)按照系統(tǒng)類別分別建立數(shù)據(jù)庫(kù)實(shí)例或用戶,交換庫(kù)和共享庫(kù)分庫(kù),共享庫(kù)用于內(nèi)部系統(tǒng)間數(shù)據(jù)實(shí)時(shí)共享,交換庫(kù)用于內(nèi)部交換和對(duì)外交換;外部交換庫(kù)按照部省交換庫(kù)、委辦單位交換庫(kù)、特殊單位交換庫(kù)和互聯(lián)網(wǎng)服務(wù)交換庫(kù)四類,分別應(yīng)用于不同的業(yè)務(wù)場(chǎng)景,不同系統(tǒng)與外部不同單位進(jìn)行數(shù)據(jù)庫(kù)交換時(shí),可采用不用數(shù)據(jù)庫(kù)實(shí)例或用戶進(jìn)行分隔。同時(shí),各交換庫(kù)中可按照數(shù)據(jù)的傳輸方向,分為上行數(shù)據(jù)表和下行數(shù)據(jù)表。使用兩個(gè)數(shù)據(jù)庫(kù)(或?qū)嵗蛴脩簦┑臄?shù)據(jù)表進(jìn)行數(shù)據(jù)交互,可建立DBLink編寫(xiě)腳本或通過(guò)數(shù)據(jù)同步工具實(shí)現(xiàn)數(shù)據(jù)的共享和交換。一般應(yīng)用于數(shù)據(jù)更新實(shí)時(shí)性要求不高且數(shù)據(jù)使用量較高的業(yè)務(wù)需求,如外網(wǎng)的個(gè)人賬戶信息查詢,考試成績(jī)查詢等。
2.4.3 實(shí)時(shí)通信交互
對(duì)于想避免被XML解析器解析的元素信息,必須定義以CDATA段進(jìn)行數(shù)據(jù)存儲(chǔ);例如一些轉(zhuǎn)義字符、文件等。在XML元素中,"<"和"&"是非法的。"<"會(huì)產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿?huì)把該字符解釋為新元素的開(kāi)始。"&"也會(huì)產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿?huì)把該字符解釋為字符實(shí)體的開(kāi)始。CDATA部分由""結(jié)束,CDATA部分中的所有內(nèi)容都會(huì)被解析器忽略。假設(shè)有一節(jié)點(diǎn) 2.4.4 業(yè)務(wù)要素 業(yè)務(wù)要素是消息體的基本組成元素。它對(duì)應(yīng)于業(yè)務(wù)操作中的一個(gè)元素。每一個(gè)業(yè)務(wù)要素都有其XML Tag、業(yè)務(wù)含義、數(shù)據(jù)類型和取值范圍。在消息中,根據(jù)不同的XML Tag來(lái)確定不同業(yè)務(wù)要素。業(yè)務(wù)要素的數(shù)據(jù)類型決定了其取值類型,它的取值范圍可以是一個(gè)集合,任何在此集合外的取值被認(rèn)為是非法取值。數(shù)據(jù)字典部分詳細(xì)定義了取值范圍。業(yè)務(wù)要素可能是一個(gè)簡(jiǎn)單的元素,也可能是一個(gè)復(fù)雜的業(yè)務(wù)組件。 2.4.5 數(shù)據(jù)類型 筆者規(guī)定兩種數(shù)值類:整形數(shù)值和浮點(diǎn)類數(shù)值,整形數(shù)值最大長(zhǎng)度18位,浮點(diǎn)總長(zhǎng)度和精度不限,由接口雙方約定;對(duì)于規(guī)定兩類數(shù)值不滿足的情況下,允許接口雙方擴(kuò)展數(shù)值組件。規(guī)定三類時(shí)間日期:日期、時(shí)間以及日期時(shí)間格式;日期格式只存儲(chǔ)年月日,時(shí)間格式只存儲(chǔ)時(shí)分秒,日期時(shí)間存儲(chǔ)年月日時(shí)分秒;對(duì)于需要更高精度的日期時(shí)間,允許接口雙方擴(kuò)展日期時(shí)間組件。其它為明確定義的日期時(shí)間格式采用文本或者自定義XML Tag表示,格式由各業(yè)務(wù)系統(tǒng)執(zhí)行協(xié)商約定。消息頭,消息頭格式,消息頭要素,版本:消息體版本號(hào),目前為1.0.0。 2.4.6 報(bào)文標(biāo)識(shí) 從技術(shù)上標(biāo)識(shí)一筆報(bào)文,用于異常處理使用,與具體業(yè)務(wù)無(wú)關(guān),業(yè)務(wù)可以選擇采用其作為重復(fù)處理控制。具體組成規(guī)則如下:發(fā)送業(yè)務(wù)系統(tǒng)(XXXXXX)+日期(YYYYMMDD)+8位序列號(hào),例如“I90001201309220000000001”代表編碼為I90001的業(yè)務(wù)系統(tǒng)于2013年9月22日發(fā)起的第1筆交易報(bào)文。接收方應(yīng)原樣返回該字段內(nèi)容。接口類別:標(biāo)識(shí)交互平臺(tái)注冊(cè)的接口功能,一個(gè)業(yè)務(wù)系統(tǒng)可以在交互平臺(tái)注冊(cè)多于一個(gè)接口,但是需要分別申請(qǐng)接口類別,需向交互平臺(tái)申請(qǐng)代碼;固定6個(gè)字符組成:接口網(wǎng)絡(luò)域(1)+序列號(hào)(5)。 2.4.7 接口代碼 標(biāo)識(shí)具體的業(yè)務(wù)功能,每個(gè)接口內(nèi)部不重復(fù),由接口雙方協(xié)商確定。交易發(fā)起方:區(qū)分交易發(fā)起方所在的網(wǎng)絡(luò)域,例如:內(nèi)網(wǎng)還是外網(wǎng)系統(tǒng)。分頁(yè)定義:為提供一致的分頁(yè)格式,對(duì)分頁(yè)組件進(jìn)行定義;分頁(yè)組件以dataSet作為節(jié)點(diǎn)名稱,組件內(nèi)固定部分包含“當(dāng)前頁(yè)碼”、“分頁(yè)大小”、“末頁(yè)標(biāo)志”以及業(yè)務(wù)相關(guān)的“數(shù)據(jù)集”組成,其中“數(shù)據(jù)集”以rowSet作為節(jié)點(diǎn)名稱,內(nèi)部包含各業(yè)務(wù)行,每行以row作為節(jié)點(diǎn)名稱,row內(nèi)部包含由業(yè)務(wù)定義的業(yè)務(wù)組件。 2.4.8 數(shù)字簽名域 為保證傳輸報(bào)文的完整性與安全性,發(fā)送方發(fā)送報(bào)文之前,需使用私鑰按照指定的算法對(duì)傳輸報(bào)文生成簽名,記為“數(shù)字簽名A”,傳輸時(shí)將“數(shù)字簽名A”附加到報(bào)文最后一起發(fā)送;接收方接收到報(bào)文后,使用公鑰按照相同的算法對(duì)報(bào)文與數(shù)字簽名進(jìn)行驗(yàn)簽;只要數(shù)字簽名校驗(yàn)不通過(guò),直接退回交易;約定,以交易消息的消息體域?yàn)殛P(guān)鍵信息,數(shù)字摘要的生成參照“數(shù)字簽名”。為了數(shù)據(jù)傳輸?shù)陌踩?,可以選擇將關(guān)鍵信息加密傳輸;此時(shí)數(shù)據(jù)簽名以加密后的數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù)簽名。要求做數(shù)字簽名的接口統(tǒng)一采用非對(duì)稱加密算法進(jìn)行簽名和驗(yàn)簽。 2.4.9 異常處理 為了解決交易超時(shí)問(wèn)題,對(duì)接口雙方做如下要求:要求接口提供者提供“交易狀態(tài)查詢”、“交易重發(fā)”最少二選一支持。要求接口調(diào)用者對(duì)于經(jīng)辦類交易發(fā)生超時(shí)或者未知錯(cuò)誤后,優(yōu)先采用“交易狀態(tài)查詢”、“交易重發(fā)”來(lái)解決問(wèn)題;對(duì)于采用交易重發(fā)方案時(shí),重發(fā)次數(shù)由接口雙方協(xié)商確定。交互平臺(tái)不處理交易重發(fā),重發(fā)由交易接口雙方處理。 在南京金保二期內(nèi)、外數(shù)據(jù)交互上,設(shè)計(jì)實(shí)現(xiàn)并統(tǒng)一對(duì)外數(shù)據(jù)交互服務(wù)平臺(tái)和統(tǒng)一對(duì)內(nèi)數(shù)據(jù)交互服務(wù)平臺(tái),內(nèi)外兩個(gè)平臺(tái)對(duì)接實(shí)現(xiàn)信息的方便快捷交互,從平臺(tái)架構(gòu)上實(shí)現(xiàn)了金保二期系統(tǒng)數(shù)據(jù)交換集中統(tǒng)一、安全高效管理。3 總結(jié)