劉奕君,邢如意,駱鵬傲
(1.徐州醫(yī)學院醫(yī)學信息學院,江蘇 徐州221009;2.徐州市財經(jīng)高等職業(yè)技術(shù)學校信息技術(shù)系,江蘇 徐州221004)
物流信息在物流活動中具有十分重要的作用,物流信息平臺對物流信息進行收集、傳遞、存儲、處理和輸出等,對物流活動起著指揮、協(xié)調(diào)、支持和保障的作用,為物流參與方提供決策依據(jù)。物流信息化平臺有助于提高物流參與方的工作效率,進而促進整個社會工作效率的提高,讓物流服務需求方可以享受到更快速、更便宜的物流服務。
當前大多物流信息平臺采用C/S或B/S結(jié)構(gòu)進行開發(fā),車主、發(fā)貨企業(yè)、物流公司等物流參與方需在計算機上打開軟件或使用瀏覽器瀏覽才能獲取物流相關(guān)信息。隨著物流業(yè)的快速發(fā)展、商品流通速度的加快,車主、發(fā)貨企業(yè)等需要更快捷、方便地獲取和發(fā)布物流信息的渠道,準確及時地獲取數(shù)據(jù)能夠提高企業(yè)決策的速度、提升企業(yè)的競爭力。本文所提出的基于Android的物流信息平臺移動終端目標即利用移動終端(智能手機、平板電腦)的便攜性,通過移動網(wǎng)絡使移動終端與物流信息平臺實現(xiàn)對接,讓物流參與方能夠隨時隨地獲取和發(fā)布物流信息,物流配送更加迅速、高效和易于控制。
Android[1]是一種基于Linux內(nèi)核的開源的嵌入式操作系統(tǒng),是近幾年在嵌入式領(lǐng)域和移動領(lǐng)域應用最廣泛的系統(tǒng)之一。Android平臺的開源、開放的特性使其在短時間內(nèi)大量應用在手機、平板電腦等移動和嵌入式設備上,各大移動設備廠商紛紛推出了基于Android操作系統(tǒng)的智能手機等設備。Android系統(tǒng)基于Linux2.6版本內(nèi)核進行改進,具有極高的穩(wěn)定性和安全性。
物聯(lián)網(wǎng)、互聯(lián)網(wǎng)技術(shù)的快速發(fā)展和智能移動終端的普及,使得Android平臺在其他行業(yè)也大放光彩,基于Android的智能家居平臺、醫(yī)療監(jiān)控平臺、移動教育平臺等。對于開發(fā)者而言,開發(fā)者可以選擇使用Java和C++語言進行開發(fā)移動應用,Android平臺為Java和C++語言提供了大量的函數(shù)庫供開發(fā)人員調(diào)用。從開發(fā)效率和易用性來比較,大多數(shù)開發(fā)者選用Java語言,Eclipse平臺進行開發(fā)。
XMPP[2]的全稱是可擴展通訊和表示協(xié)議,是一個開放的基于XML的數(shù)據(jù)模型和協(xié)議,是即時通信的Internet標準。XMPP的核心思想是在網(wǎng)絡中對XML流的分片段發(fā)送。由于XML具有跨平臺、易于解析等特性,因此XMPP協(xié)議具有極強的可擴展性,經(jīng)過擴展后的消息可以用于處理系統(tǒng)業(yè)務相關(guān)的請求,使得用戶與用戶之間、用戶與服務端之間可以互相通信,可廣泛應用在互聯(lián)網(wǎng)應用上。XMPP基于C/S結(jié)構(gòu),客戶端之間消息通過服務端進行轉(zhuǎn)發(fā),消息傳遞時采用TLS機制進行加密和采用SASL協(xié)議對XML流進行認證,保證了傳輸過程中的安全性。
在物流信息平臺移動終端上,為實現(xiàn)信息平臺向終端實時推送信息,服務端與移動終端之間采用XMPP協(xié)議進行數(shù)據(jù)傳輸,一方面提高了數(shù)據(jù)傳輸?shù)姆€(wěn)定性和高效性,另一方面服務端能夠并發(fā)支持更多的移動終端進行連接。
物流信息平臺移動終端是方便車主、發(fā)貨企業(yè)、物流公司、快遞公司、搬家公司等物流參與各方及時獲取、發(fā)布和查找關(guān)于車源、貨源、配貨站、物流公司等信息的移動應用軟件。移動終端相當于運行于互聯(lián)網(wǎng)上的物流信息平臺的移動版本,其具有移動、便攜、隨時隨地查看等特點。
移動終端從功能結(jié)構(gòu)上可以劃分為6個模塊,分別是實時信息接收模塊、車源信息管理模塊、貨源信息管理模塊、物流和快遞公司信息管理模塊、用戶信息管理模塊、系統(tǒng)設置和幫助模塊。在服務端包括用于與移動端進行信息交換的接口,此接口可分為3個模塊,分別為實時信息推送模塊、業(yè)務信息查詢及維護模塊、用戶信息維護模塊。功能結(jié)構(gòu)如圖1所示。
服務端實時信息推送模塊用于向移動端推送線上最新的物流供需信息、天氣預警、高速公路路況等信息;業(yè)務信息查詢及維護模塊用于處理移動端發(fā)送的車輛信息、貨源信息和物流及快遞信息的查詢和信息發(fā)布請求;用戶信息模塊用于處理移動端發(fā)送的用戶信息注冊、登錄認證、信息維護等請求。由于服務端與移動端采用具有跨平臺的XMPP協(xié)議和JSON數(shù)據(jù)格式進行數(shù)據(jù)傳輸,因此無論物流信息平臺服務端采用何種語言進行開發(fā),都可以方便地開發(fā)接口與移動端進行集成。
移動終端中實時信息接收模塊與服務端信息推送模塊對應,當移動端打開時自動連接服務端,服務端通過此連接向移動端進行信息推送;車輛信息管理、貨源信息管理、物流和快遞信息管理模塊與服務端業(yè)務信息查詢接口連接,統(tǒng)一采用JSON格式進行數(shù)據(jù)傳輸;用戶信息管理與服務端用戶信息維護接口連接。系統(tǒng)設置與幫助模塊用于方便用戶設置個人資料、推送信息接收喜好設置和提供幫助文檔等。
移動端與服務端之間的用戶和業(yè)務消息傳遞采用JSON格式組織,JSON具有可讀性高、跨平臺、解析效率高等優(yōu)勢。由于移動終端與服務端消息種類較多,為便于統(tǒng)一分類管理,每一條消息設置了類型編號和描述。在本例中消息編號以10開頭表示用戶類消息,20開頭表示業(yè)務類消息。并且在消息數(shù)據(jù)中添加了令牌Token用于標識消息的安全性。此令牌的計算方法為:在第一次與服務端交互時,服務端向移動端下發(fā)的會話編號,加上消息數(shù)據(jù)的數(shù)據(jù)指紋和消息類型編號混合加密而成。服務端收到消息數(shù)據(jù)后首先對令牌進行驗證判斷數(shù)據(jù)的正確性和完整性。通過此種機制保證了消息在傳遞時安全性,避免消息傳輸時截獲篡改等操作。以下展示了用戶認證消息和業(yè)務消息JSON格式示例。
用戶登錄認證消息格式
移動終端的代碼架構(gòu)設計如圖2所示。
圖2 移動終端代碼架構(gòu)設計
在圖2中XMPPService基于Android Service開發(fā),其作為一個后臺應用保持與服務端的長連接,用于接收推送信息。UserInfo Manager、CarInfo Manager和Goods Manager類則用于處理用戶信息、車輛信息和貨源、物流信息的查看和發(fā)布。
移動終端XMPP實現(xiàn)選擇asmack類庫,其是smack在Android上的構(gòu)建版本,smack則是完整實現(xiàn)了XMPP協(xié)議的開源API庫。在asmack類庫中提供了XMPPManager類來管理連接信息,包括XMPP協(xié)議的端口、服務端IP、登錄名和密碼和連接的維護,XMPPConnection類創(chuàng)建至服務端的連接等多個類簡化開發(fā)者底層的XMPP協(xié)議處理,從而提高開發(fā)效率。
物流信息平臺服務端推送模塊接口采用AndroidPN搭建,AndroidPN是一個基于XMPP協(xié)議的Java開源推送通知實現(xiàn),其包含了完整的Android客戶端示例和Web管理端。使用AndroidPN搭建推送服務端,不需修改原有物流信息平臺代碼,可將AndroidPN提供的Web服務管理端安裝、啟動后,將其頁面嵌入即可,同時AndroidPN也可方便地通過引用的形式嵌入至原有系統(tǒng)中。Android-PN服務端默認占用5222端口處理客戶端的XMPP請求,其功能包括用戶信息的認證和消息的推送。服務端與客戶端的通信基于會話Session,客戶端通過指定端口連接服務端后,將連接信息發(fā)送到服務端,然后等待服務端推送信息,消息以stream節(jié)點作為開始和結(jié)束。在連接上,使用asmack能夠完成與服務端的連接、消息的解析、斷開重連等功能。
首先搭建基于Eclipse+ADT的移動終端開發(fā)環(huán)境,分別下載 Android2.2、4.0和4.2版本模擬器用于適配測試,在手機屏幕適配上主要考慮適配四寸屏及以上手機,分辨率為480×800及以上,其次是創(chuàng)建Android項目,編譯級別選擇4.0,向項目中添加asmack-jse.jar和gson.jar文件分別用于實現(xiàn)XMPP協(xié)議通信和JSON文本的解析。向項目“中\res\raw”文件夾中添加“androidpn.propeties”文件,用于配置XMPP服務端連接參數(shù),并添加AndroidPN客戶端源碼至項目源文件夾中。與XMPP服務端連接的主要代碼如下:
在業(yè)務信息處理上,因為采用了JSON統(tǒng)一了格式,因此代碼中創(chuàng)建了JsonMessage類用于封裝這類信息,JsonMessageDelegate類用于業(yè)務消息的分發(fā)處理和與服務端的交互,其作用如圖3所示。
圖3 業(yè)務消息處理流程
服務端通過HTTP或TCP協(xié)議向客戶端發(fā)送業(yè)務消息JSON文本,移動終端收到后交由Json-MessageDelegate進行解析為JsonMessage對象,然后抽取中消息中MessageId屬性的值,判斷該值的含義,然后將此對象傳遞給對應的處理器Manager對象進行處理。Manager對象在收到后,首先獲取MessageData屬性的值進行數(shù)據(jù)一致性的校驗,然后再進行處理(顯示、丟棄)。對應代碼如下所示:
在界面設計上使用最多的控件為ListView,其以列表的方式顯示信息,并可以靈活配置布局。List-View的數(shù)據(jù)需由Adapter提供。以車輛違章信息查詢?yōu)槔?,為實現(xiàn)列表可拖動效果,自定義了 My-ScrollView類和MyListView類。自定義Query-ResultItemAdapter類提供數(shù)據(jù)。代碼結(jié)構(gòu)如圖4所示。
圖4 違章查詢代碼結(jié)構(gòu)
重寫ScrollView和ListView類主要解決了用戶在屏幕滑動查看數(shù)據(jù)時的沖突問題,同時實現(xiàn)了下拉刷新等效果。
基于Android的物流信息平臺移動終端,向物流參與方提供了可隨時隨地查看和發(fā)布物流信息的移動辦公平臺,通過使用消息推送機制可實時獲取最新的物流信息,且參與方可通過移動終端管理自身相關(guān)業(yè)務信息。移動終端采用AndroidPN作為服務端,asmack作為Android端開發(fā)庫,方便應用的擴展,移動終端作為物流信息平臺的補充,在移動互聯(lián)網(wǎng)快速發(fā)展的今天,其重要性愈加凸顯。
[1]姚昱曼,劉衛(wèi)國.Android的架構(gòu)與應用開發(fā)研究[J].計算機系統(tǒng)應用,2008(11):110-113.
[2]周文瓊,王樂球,周桐.基于XMPP的企業(yè)即時通信系統(tǒng)研究與應用[J].吉林大學學報:信息科學版,2010(1):106-111.