周雪瑩,劉海燕,魏敏丹
(江西省氣象信息中心,江西 南昌 330096)
氣象業(yè)務(wù)部門和管理部門根據(jù)業(yè)務(wù)發(fā)展或日常辦公的需求,通過云MAS或微信公眾服務(wù)平臺,使用短信或微信的方式,將通知類信息、驗證碼和告警信息等時效性和針對性要求高的消息發(fā)送至手機(jī)用戶端[1-3],可以減輕系統(tǒng)維護(hù)與升級的成本和工作量,但是業(yè)務(wù)系統(tǒng)種類繁多,如果都直接接入公眾服務(wù)平臺,容易導(dǎo)致用戶名和密碼管理混亂,職責(zé)梳理不清。為了保證發(fā)送的信息內(nèi)容規(guī)范、安全和有效,確保用戶資料不外泄,杜絕安全隱患[4],開發(fā)了江西省氣象信息管理系統(tǒng),實現(xiàn)信息發(fā)送統(tǒng)一管理,并對其進(jìn)行處理、分析和監(jiān)管,為業(yè)務(wù)部門提供方便快捷的信息傳遞和發(fā)送方法,為管理部門提供全面有效的信息監(jiān)視和管理方式。
氣象綜合業(yè)務(wù)實時監(jiān)控系統(tǒng)(天鏡)構(gòu)建了“全流程、一體化、可視化、開放的”氣象業(yè)務(wù)集中統(tǒng)一監(jiān)控平臺,在省級部署和使用過程中,針對手機(jī)端用戶,通過該系統(tǒng)可以實現(xiàn)把接收的監(jiān)控系統(tǒng)告警信息從本省氣象數(shù)據(jù)業(yè)務(wù)監(jiān)視系統(tǒng)平穩(wěn)過渡到天鏡系統(tǒng),提高業(yè)務(wù)運(yùn)維保障能力。
該系統(tǒng)依托云MAS和企業(yè)微信,將氣象部門自身的業(yè)務(wù)和辦公系統(tǒng)與公眾服務(wù)平臺相結(jié)合,基于云MAS和企業(yè)微信的API接口,對用戶、密碼和局域網(wǎng)地址管理等進(jìn)行封裝,提供簡單通用的接入方式,建立一條安全便捷的信息發(fā)送的通道,不需要管理信息發(fā)送的方式和過程,并且根據(jù)各自業(yè)務(wù)的需求,防止未授權(quán)的用戶調(diào)用信息發(fā)送接口發(fā)送非法信息。同時實現(xiàn)地址管理、用戶管理、信息篩選、信息處理、信息保存和信息監(jiān)管等功能,集中對各個業(yè)務(wù)系統(tǒng)的信息傳輸和發(fā)送進(jìn)行監(jiān)視和管理[5-8]。
根據(jù)公眾服務(wù)平臺信息發(fā)送接口標(biāo)準(zhǔn),以及對實時性、準(zhǔn)確性和有效性的要求,設(shè)計了系統(tǒng)的總體結(jié)構(gòu)。系統(tǒng)主要由信息發(fā)送接口和監(jiān)管系統(tǒng)兩部分組成,結(jié)構(gòu)更加明確,增加了系統(tǒng)的可擴(kuò)展性,極大地降低了后期維護(hù)的成本和時間。系統(tǒng)總體架構(gòu)如圖1所示。
圖1 系統(tǒng)總體架構(gòu)
按照業(yè)務(wù)部門和管理部門的需求,信息發(fā)送接口包括地址篩選、信息篩選、用戶篩選和信息發(fā)送,監(jiān)管系統(tǒng)由前臺顯示和后臺管理組成,前臺顯示包括信息監(jiān)視、綜合查詢和統(tǒng)計分析;后臺管理包括系統(tǒng)登錄、地址管理、參數(shù)配置、用戶管理和關(guān)鍵字管理,如圖2所示。
圖2 系統(tǒng)功能結(jié)構(gòu)
信息發(fā)送接口是調(diào)用云MAS和微信公眾服務(wù)平臺提供的接入方式封裝成的消息型通用接口,同時通過氣象信息管理數(shù)據(jù)庫訪問接口ODBC和存儲過程,將信息發(fā)送返回狀態(tài)、收件人和信息內(nèi)容保存至數(shù)據(jù)庫中。
業(yè)務(wù)系統(tǒng)只需要傳遞信息內(nèi)容和終端用戶等參數(shù),本接口獲取到這些參數(shù)值后,先存入數(shù)據(jù)庫中,再對其進(jìn)行審核,如果因為網(wǎng)絡(luò)地址或者信息內(nèi)容等原因未能通過審核,先更新數(shù)據(jù)庫記錄,再把未通過審核的原因反饋給業(yè)務(wù)系統(tǒng)管理員;如果通過審核,就通過專用網(wǎng)將信息發(fā)送到云MAS或微信公眾服務(wù)平臺[9],根據(jù)返回的值判斷信息是否發(fā)送成功,并把返回的值更新至數(shù)據(jù)庫。數(shù)據(jù)流程設(shè)計如圖3所示。
調(diào)用云MAS平臺是通過HTTP接口的方式,發(fā)送一個HTTP請求消息(請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)四個部分組成)到服務(wù)器,采用GET方法向服務(wù)器獲取資源,在接收和解釋請求消息后,服務(wù)器返回一個HTTP響應(yīng)消息(狀態(tài)行、消息報頭、響應(yīng)正文)。業(yè)務(wù)系統(tǒng)只需要傳遞信息內(nèi)容和用戶手機(jī)號等參數(shù),本接口接收到參數(shù)后,先存入數(shù)據(jù)庫中,再對信息進(jìn)行審核。如果因為網(wǎng)絡(luò)地址或者信息內(nèi)容等原因未能通過審核,先更新數(shù)據(jù)庫記錄,再把未通過審核的原因反饋給業(yè)務(wù)系統(tǒng)管理員;如果通過審核,就通過專用網(wǎng)將信息以xml流的方式把需要發(fā)送的內(nèi)容和手機(jī)號封裝傳遞到云MAS,通過云MAS將信息發(fā)送到手機(jī)用戶端,根據(jù)返回的值判斷信息是否發(fā)送成功,并把返回的值更新至數(shù)據(jù)庫,如果有任何一步?jīng)]有通過審核,則把信息未發(fā)布成功以及導(dǎo)致發(fā)布失敗的詳細(xì)原因反饋給系統(tǒng)用戶,流程如圖4所示。
圖3 數(shù)據(jù)流程設(shè)計
圖4 短信發(fā)布接口流程
前臺監(jiān)視模塊是實時顯示調(diào)用信息發(fā)送接口的監(jiān)視情況,根據(jù)接口的調(diào)用情況和反饋的狀態(tài)信息展現(xiàn)信息發(fā)送情況,為業(yè)務(wù)人員提供及時的發(fā)送狀態(tài)。
⑤采用多級導(dǎo)航模板定義。通過改變模板方案調(diào)整頁面整體布局,使網(wǎng)站頁面布局設(shè)計方便靈活,隨意組合,所見即所得。
前臺監(jiān)視模塊主要包括實時監(jiān)視、綜合查詢、信息詳情和信息統(tǒng)計:
(1)實時監(jiān)視:顯示最新的發(fā)送信息,內(nèi)容主要包括單位名稱、業(yè)務(wù)名稱、信息內(nèi)容、發(fā)送時間及完成狀態(tài)。
(2)綜合查詢:提供系統(tǒng)名稱、發(fā)送狀態(tài)、發(fā)送時間等綜合查詢方式,查看信息發(fā)送的歷史情況。
(3)信息詳情:顯示選中發(fā)送信息的詳細(xì)信息,主要包括信息內(nèi)容、發(fā)送時間、發(fā)送狀態(tài)、發(fā)送條數(shù)、接收用戶、業(yè)務(wù)信息和網(wǎng)絡(luò)地址等。
(4)信息統(tǒng)計:采用表格和圖形相結(jié)合的方式,分析氣象業(yè)務(wù)系統(tǒng)使用信息發(fā)送接口的發(fā)送量、發(fā)送質(zhì)量和使用頻率等情況。
后臺管理模塊包括用戶管理、地址設(shè)置、權(quán)限設(shè)置和關(guān)鍵字管理等功能:
(1)用戶管理:該系統(tǒng)設(shè)有系統(tǒng)用戶、終端用戶和管理用戶三類用戶,細(xì)化了功能性需求,賦予不同的用戶不同的系統(tǒng)使用職責(zé)。
(3)權(quán)限設(shè)置:對氣象業(yè)務(wù)系統(tǒng)進(jìn)行權(quán)限設(shè)置,授權(quán)是否同意接入本系統(tǒng)進(jìn)行信息發(fā)送和監(jiān)管。
(4)關(guān)鍵字管理:可以根據(jù)各個業(yè)務(wù)系統(tǒng)的需求設(shè)置信息的篩選內(nèi)容,并且及時反饋給系統(tǒng)用戶及接入的業(yè)務(wù)系統(tǒng)。
氣象信息管理系統(tǒng)提供參數(shù)配置功能,可以根據(jù)不同的需求對系統(tǒng)進(jìn)行動態(tài)調(diào)整,靈活的參數(shù)配置提高了系統(tǒng)的通用性,控制發(fā)送信息的來源和終端。參數(shù)配置項主要包括五個部分:公眾平臺配置、業(yè)務(wù)系統(tǒng)、網(wǎng)絡(luò)地址、手機(jī)號碼、數(shù)據(jù)庫。
(1)公眾平臺配置:配置云MAS的IP地址,端口,賬號和密碼,微信公眾服務(wù)平臺提供的CorpID & Secret等。
(2)業(yè)務(wù)系統(tǒng)配置:配置接入的業(yè)務(wù)系統(tǒng)的名稱、單位、地址和發(fā)送權(quán)限等參數(shù)。
(3)網(wǎng)絡(luò)地址配置:根據(jù)內(nèi)網(wǎng)網(wǎng)絡(luò)安全的要求,配置網(wǎng)段和IP地址,控制發(fā)送信息的網(wǎng)絡(luò)地址。
(4)手機(jī)號碼:設(shè)置白名單和黑名單,授權(quán)手機(jī)號碼是否可以接收本系統(tǒng)發(fā)送的信息。
(5)數(shù)據(jù)庫配置:配置數(shù)據(jù)庫的IP地址、用戶名、密碼和數(shù)據(jù)庫名稱。
在專用網(wǎng)的基礎(chǔ)上,基于C/S架構(gòu)的方式[10],采用MySQL數(shù)據(jù)庫、C#和Python等計算機(jī)技術(shù),設(shè)計和實現(xiàn)了氣象信息管理系統(tǒng),提供了便捷的信息發(fā)送接口,建立了氣象信息管理數(shù)據(jù)庫,并以Web的方式實現(xiàn)用戶管理、參數(shù)配置、信息篩選、查詢、統(tǒng)計和反饋等功能,為業(yè)務(wù)部門提供了有力的技術(shù)服務(wù),為管理部門提供了有效的數(shù)據(jù)支撐。
氣象信息以參數(shù)的形式推送至本系統(tǒng),為了防止終端用戶收到的信息含有亂碼,氣象信息的字符串編碼與發(fā)送信息的服務(wù)器的編碼需要一致,即使用UTF- 8編碼。由于不同的業(yè)務(wù)系統(tǒng)或者同一個業(yè)務(wù)系統(tǒng)同時發(fā)送多個信息,采用單線程順序處理無法滿足接收信息對時效的要求,為此采用多線程處理方式,根據(jù)接入的信息類別和線程數(shù),將全部處理的信息分配到各個線程同步處理[11-12],極大地提高了篩選前置處理效率。
信息分析、地址識別和信息傳輸發(fā)送分別采用不同的處理線程來提高系統(tǒng)處理效率。信息分析線程對氣象信息的內(nèi)容和格式進(jìn)行檢查,根據(jù)關(guān)鍵字?jǐn)?shù)據(jù)表對需要發(fā)送的信息內(nèi)容進(jìn)行篩選,禁止出現(xiàn)亂碼、不符合要求和泄露敏感信息的內(nèi)容出現(xiàn),并把提取的信息寫入數(shù)據(jù)庫中;地址識別線程自動獲取接入的業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)地址,通過和地址管理數(shù)據(jù)表的對比,審核該業(yè)務(wù)系統(tǒng)是否授權(quán)使用本系統(tǒng)的信息發(fā)送接口,根據(jù)審核結(jié)果更新數(shù)據(jù)庫;信息傳輸發(fā)送線程通過專網(wǎng)調(diào)用公眾服務(wù)平臺提供的API接口發(fā)送信息,并且把反饋的結(jié)果更新至數(shù)據(jù)庫。
本系統(tǒng)采用關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL來存儲信息,為了提高數(shù)據(jù)讀寫性能、數(shù)據(jù)庫訪問速度和數(shù)據(jù)查詢速度,保證數(shù)據(jù)入庫的及時性,采用視圖、索引、主鍵或復(fù)合主鍵等技術(shù)對數(shù)據(jù)庫進(jìn)行優(yōu)化設(shè)計,不同的要素分開存儲在不同的實體數(shù)據(jù)表中[13]。根據(jù)業(yè)務(wù)需求,系統(tǒng)設(shè)計了用戶信息數(shù)據(jù)表、終端信息數(shù)據(jù)表、系統(tǒng)信息數(shù)據(jù)表、地址管理數(shù)據(jù)表、機(jī)構(gòu)信息數(shù)據(jù)表、關(guān)鍵字?jǐn)?shù)據(jù)表和信息記錄數(shù)據(jù)表等。用戶信息數(shù)據(jù)表用于存儲系統(tǒng)用戶和管理用戶的基本信息;終端信息數(shù)據(jù)表用于存儲接收短信的用戶基本信息;系統(tǒng)信息數(shù)據(jù)表用于存儲使用本系統(tǒng)發(fā)送信息的業(yè)務(wù)系統(tǒng)基本信息;地址管理數(shù)據(jù)表用于存儲網(wǎng)段、IP地址和系統(tǒng)名稱等信息;關(guān)鍵字?jǐn)?shù)據(jù)表用于存儲篩選氣象信息內(nèi)容的符號、數(shù)字和文字等信息;信息記錄數(shù)據(jù)表用于存儲通過本系統(tǒng)發(fā)送的基本信息,包括內(nèi)容、時間、系統(tǒng)名稱和發(fā)送結(jié)果等。
氣象信息管理系統(tǒng)將信息發(fā)送和信息監(jiān)管分開,信息發(fā)送接口作為獨(dú)立模塊,起到氣象業(yè)務(wù)系統(tǒng)與云MAS和微信公眾服務(wù)平臺中間連接的作用,采用前端控制模式維護(hù)信息規(guī)范和有效,提供方便快捷的接入方式,不會影響信息處理和發(fā)送的效率,同時讓用戶方便查詢信息發(fā)送的情況進(jìn)行總結(jié)分析。
信息發(fā)送接口發(fā)送信息至云MAS是基于HTTP協(xié)議的接口,是建立在TCP協(xié)議基礎(chǔ)之上,支持客戶/服務(wù)器模式,但是限制每次連接只處理一個請求,當(dāng)調(diào)用該接口的時候,就是發(fā)出一次HTTP請求,HTTP通過TCP與服務(wù)器建立一個連接通道,允許傳輸任意類型的數(shù)據(jù)對象,服務(wù)器處理完客戶端的請求,并且收到客戶端的應(yīng)答后,即本次請求需要的數(shù)據(jù)傳輸完畢后,HTTP會立即斷開TCP連接。采用這種方式是一種短連接,通信速度和應(yīng)答速度較快,可以節(jié)省傳輸?shù)臅r間。
HTTP協(xié)議工作于客戶端-服務(wù)端的架構(gòu)之上,瀏覽器作為HTTP客戶端可以直接通過URL向HTTP服務(wù)端即Web服務(wù)器發(fā)送所有請求。URL由三部分組成:資源類型、存放資源的主機(jī)域名、資源文件名。URL的一般語法格式為(帶方括號[]的為可選項):protocol :// hostname[:port] / path / [;parameters][?query]#fragment,氣象業(yè)務(wù)系統(tǒng)直接調(diào)用接口http://10.116.32.237/messagein.aspx?tel=....& message=.... (見表1)發(fā)送短信,其中tel參數(shù)賦值電話號碼,多個電話號碼可以用逗號分隔,message參數(shù)賦值要發(fā)送的信息。
表1 接口規(guī)范
目前該系統(tǒng)已經(jīng)投入業(yè)務(wù)應(yīng)用中,不需要管理信息發(fā)送的方式和過程,并且根據(jù)各自業(yè)務(wù)的需求,設(shè)置內(nèi)容模板和批量發(fā)送短信等,網(wǎng)段設(shè)置限制,防止未授權(quán)的用戶調(diào)用本系統(tǒng)的信息發(fā)送接口發(fā)送非法信息[14-15]。系統(tǒng)根據(jù)關(guān)鍵字的設(shè)置和傳遞的參數(shù),對手機(jī)用戶和信息內(nèi)容進(jìn)行篩選,保障發(fā)送的信息格式標(biāo)準(zhǔn)和語言規(guī)范(見圖5),為氣象業(yè)務(wù)系統(tǒng)供了方便快捷的信息發(fā)送接入方式。
圖5 手機(jī)接收信息截圖
根據(jù)業(yè)務(wù)部門和管理部門的需求,設(shè)計了氣象信息管理系統(tǒng),實現(xiàn)網(wǎng)絡(luò)地址審核、信息篩選發(fā)送、信息監(jiān)管和數(shù)據(jù)存儲管理等功能,并且對信息的審核、篩選、發(fā)送和監(jiān)管進(jìn)行了詳細(xì)的闡述。
(1)信息發(fā)送接口是氣象業(yè)務(wù)系統(tǒng)和公眾服務(wù)平臺的紐帶,利用云MAS服務(wù)平臺將氣象部門業(yè)務(wù)系統(tǒng)和辦公系統(tǒng)與移動網(wǎng)絡(luò)相結(jié)合,實現(xiàn)短信三網(wǎng)合一,依托微信企業(yè)公眾服務(wù)平臺實現(xiàn)氣象信息自動發(fā)送至指定收件人,減少維護(hù)成本。
(2)該平臺實現(xiàn)了信息發(fā)送接口和監(jiān)管功能,建立了氣象信息管理數(shù)據(jù)庫,為其他業(yè)務(wù)系統(tǒng)和辦公系統(tǒng)提供統(tǒng)一的信息發(fā)送接口,實現(xiàn)經(jīng)濟(jì)實惠、便捷安全的信息發(fā)送方式。前臺顯示為管理部門提供了直觀的數(shù)據(jù)分析和可靠的決策依據(jù),為業(yè)務(wù)部門提供了及時的使用情況和詳細(xì)的接入狀態(tài),后臺管理主要是用于對系統(tǒng)進(jìn)行配置、維護(hù)和管理,使得信息發(fā)送接口和前臺內(nèi)容得到及時的更新和調(diào)整,保證發(fā)送的信息格式規(guī)范和內(nèi)容文明有效,并且方便設(shè)置和管理本系統(tǒng)。
(3)系統(tǒng)投入業(yè)務(wù)運(yùn)行后,提高了工作效率,能快速查詢發(fā)送的記錄, 解決了不易定位和難以確定職責(zé)的問題,使得氣象業(yè)務(wù)能更好地為社會公眾服務(wù),對促進(jìn)氣象服務(wù)業(yè)的可持續(xù)發(fā)展有一定的意義。