• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      農(nóng)業(yè)墑情預(yù)警信息實(shí)時(shí)推送系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2018-06-20 07:46:16鄭九鋒姚凱學(xué)
      關(guān)鍵詞:服務(wù)端墑情離線

      鄭九鋒,姚凱學(xué)

      (貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025)

      0 引 言

      農(nóng)業(yè)墑情監(jiān)測(cè)站集成多種氣象傳感器,采集了包括土壤濕度、土壤溫度、光照強(qiáng)度、光合有效輻射、風(fēng)向、風(fēng)速、雨量、雨速、氣溫、空氣相對(duì)濕度、氣壓、海拔、土壤PH值、PM2.5等實(shí)時(shí)數(shù)據(jù)[1],并將這些數(shù)據(jù)經(jīng)過(guò)下位機(jī)以及無(wú)線通信技術(shù)實(shí)時(shí)傳輸至后臺(tái)服務(wù)端,后臺(tái)將這些數(shù)據(jù)通過(guò)制定的協(xié)議解析,將合法的數(shù)據(jù)封裝后存入數(shù)據(jù)庫(kù)相應(yīng)的表中。

      運(yùn)用QLExpress規(guī)則引擎技術(shù)設(shè)定預(yù)警規(guī)則,預(yù)警規(guī)則與實(shí)時(shí)數(shù)據(jù)綁定,規(guī)則內(nèi)容包括大氣溫度報(bào)警、大氣濕度報(bào)警、墑情站離線報(bào)警等。推送系統(tǒng)將使用Spring定時(shí)任務(wù)每分鐘解析規(guī)則一次,滿足預(yù)警條件后就觸發(fā)相應(yīng)的推送方法,將預(yù)警信息及時(shí)地發(fā)送到用戶的手機(jī)終端上,同時(shí)推送系統(tǒng)也支持在Web頁(yè)面手動(dòng)編輯信息進(jìn)行推送。用戶點(diǎn)擊手機(jī)通知欄就能查看消息詳情,在用戶獲取預(yù)警信息后,就可以采取相應(yīng)的應(yīng)對(duì)措施,避免因環(huán)境氣候因素導(dǎo)致農(nóng)作物減產(chǎn),帶來(lái)不必要的經(jīng)濟(jì)損失,因此該系統(tǒng)在農(nóng)業(yè)生產(chǎn)應(yīng)用中意義重大。

      1 關(guān)鍵技術(shù)

      1.1 基于XMPP協(xié)議的長(zhǎng)連接推送技術(shù)

      XMPP(extensible messaging and presence protocol,可擴(kuò)展通訊和表示協(xié)議)是一種基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的近端串流式即時(shí)通訊協(xié)議[2-3]。它是開(kāi)源的,利用它可以實(shí)現(xiàn)簡(jiǎn)單的推送功能,開(kāi)發(fā)者可以修改其源代碼以適應(yīng)自己的應(yīng)用程序。

      AndroidPn就是一個(gè)基于XMPP協(xié)議實(shí)現(xiàn)的開(kāi)源消息推送服務(wù),包含了完整的客戶端和服務(wù)端,其服務(wù)端是在另外一個(gè)開(kāi)源項(xiàng)目openfire的基礎(chǔ)上修改實(shí)現(xiàn)的,其客戶端需要用到開(kāi)源XMPP協(xié)議包asmack[4],這個(gè)包同樣是基于openfire下的另外一個(gè)開(kāi)源項(xiàng)目smack。基于XMPP實(shí)現(xiàn)推送的優(yōu)點(diǎn)就是簡(jiǎn)單,開(kāi)發(fā)者還可以根據(jù)自己的實(shí)際使用需求來(lái)擴(kuò)展XMPP協(xié)議,實(shí)現(xiàn)消息的定制功能。

      基于以上分析,系統(tǒng)采用基于XMPP協(xié)議的AndroidPn框架進(jìn)行設(shè)計(jì)實(shí)現(xiàn)。通過(guò)集成開(kāi)源的JAR包,修改開(kāi)源項(xiàng)目,縮短開(kāi)發(fā)成本,提高系統(tǒng)應(yīng)用的穩(wěn)定性和成熟性[5]。

      1.2 QLExpress規(guī)則引擎技術(shù)

      QLExpress是一個(gè)開(kāi)源的JAVA規(guī)則引擎,它一般作為一個(gè)嵌入式規(guī)則引擎在業(yè)務(wù)系統(tǒng)中使用[6-7]。該規(guī)則引擎技術(shù)不僅支持標(biāo)準(zhǔn)的JAVA語(yǔ)法,而且還支持自定義操作符號(hào)、操作符號(hào)重載、函數(shù)定義、宏定義、數(shù)據(jù)延遲加載等,所以使業(yè)務(wù)規(guī)則定義簡(jiǎn)便并且非常靈活。

      該規(guī)則的原理主要是定義規(guī)則、解析規(guī)則、執(zhí)行規(guī)則幾個(gè)步驟,編譯的過(guò)程類似java class文件的編譯過(guò)程,會(huì)經(jīng)過(guò)詞法分解、詞法分析、語(yǔ)法分析、規(guī)則執(zhí)行等幾個(gè)步驟。系統(tǒng)按照QLExpress語(yǔ)法定義預(yù)警規(guī)則,Spring定時(shí)任務(wù)會(huì)每隔一分鐘解析一次預(yù)警規(guī)則,解析預(yù)警規(guī)則仍是使用QLExpress。

      1.3 Spring定時(shí)任務(wù)

      Spring task是Spring3.0以后自身提供的一種定時(shí)任務(wù)實(shí)現(xiàn)工具,該工具使用起來(lái)非常簡(jiǎn)單,可以將它看作是一個(gè)輕量級(jí)的Quartz[8]。使用該工具時(shí)除了導(dǎo)入Spring相關(guān)的包外不需要再導(dǎo)入其他額外的包,而且支持注解和配置文件兩種形式,在Spring的配置文件中配置定時(shí)器開(kāi)關(guān),在定時(shí)器的實(shí)現(xiàn)代碼中配置@Scheduled注解,@Scheduled(cron="0 0/15 9-23 * * ?")表示每分鐘執(zhí)行一次。該系統(tǒng)使用Spring task定義預(yù)警規(guī)則解析任務(wù),每分鐘解析一次預(yù)警規(guī)則,若滿足預(yù)警條件則將預(yù)警信息推送到用戶手機(jī)端。

      2 系統(tǒng)設(shè)計(jì)

      2.1 服務(wù)端設(shè)計(jì)

      2.1.1 服務(wù)端架構(gòu)

      服務(wù)器端采用B/S架構(gòu),主要是在一個(gè)基于XMPP協(xié)議的開(kāi)源工程openfire和高性能并發(fā)框架MINA基礎(chǔ)上修改實(shí)現(xiàn),運(yùn)用SpringMVC和Hibernate框架[9-10],結(jié)合性能高效的MySQL數(shù)據(jù)庫(kù),服務(wù)器端軟件架構(gòu)如圖1所示。服務(wù)器采用了分層的架構(gòu)設(shè)計(jì),共分為四層,分別為前端表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層、數(shù)據(jù)庫(kù)管理層。

      圖1 服務(wù)端架構(gòu)

      (1)前端表現(xiàn)層。

      前端表現(xiàn)層包括兩個(gè)部分,一部分是農(nóng)業(yè)墑情控制臺(tái),主要是以圖表形式展示墑情監(jiān)測(cè)站發(fā)送過(guò)來(lái)的墑情數(shù)據(jù),預(yù)警規(guī)則管理界面主要用來(lái)進(jìn)行預(yù)警規(guī)則的添加、修改、刪除、查詢等;另一部分是推送管理控制臺(tái),主要是消息推送管理界面。在表現(xiàn)層,系統(tǒng)前端運(yùn)用了jQUeryEasyUI框架,JSP2.0、CSS3、HTML以及Ajax等技術(shù)。

      (2)業(yè)務(wù)邏輯層。

      業(yè)務(wù)邏輯層主要是將表現(xiàn)層所涉及到的前端服務(wù)進(jìn)行相關(guān)的邏輯實(shí)現(xiàn)。該系統(tǒng)業(yè)務(wù)邏輯層主要基于SpringMVC框架開(kāi)發(fā),SoilmoistureManager負(fù)責(zé)墑情數(shù)據(jù)的管理,WarningRuleManager負(fù)責(zé)預(yù)警規(guī)則的管理;客戶端與服務(wù)器端之間的通信使用了AndroidPn,它是一個(gè)實(shí)現(xiàn)了XMPP協(xié)議的開(kāi)源項(xiàng)目,其中SessionManager負(fù)責(zé)管理客戶端App與服務(wù)器端之間的會(huì)話,AuthManager負(fù)責(zé)App用戶認(rèn)證管理,PresenceManager負(fù)責(zé)管理App用戶的登錄狀態(tài),NotificationManager負(fù)責(zé)實(shí)現(xiàn)服務(wù)器向客戶端App推送消息。MINA框架將網(wǎng)絡(luò)通信與應(yīng)用程序隔離開(kāi)來(lái),開(kāi)發(fā)者只需關(guān)心傳輸?shù)臄?shù)據(jù)以及業(yè)務(wù)邏輯即可,做到了高并發(fā)Socket訪問(wèn)的有序管理。

      (3)數(shù)據(jù)訪問(wèn)層。

      數(shù)據(jù)訪問(wèn)層對(duì)數(shù)據(jù)庫(kù)進(jìn)行一些相關(guān)業(yè)務(wù)的操作處理,例如數(shù)據(jù)的添加、刪除、修改、查詢,將業(yè)務(wù)的一系列數(shù)據(jù)操作提交到數(shù)據(jù)庫(kù)中。該系統(tǒng)后臺(tái)服務(wù)器采用Hibernate與SpringMVC框架開(kāi)發(fā),Spring框架本身提供了對(duì)DAO層的支持,可以提高開(kāi)發(fā)者的效率,保證數(shù)據(jù)庫(kù)操作的準(zhǔn)確性和安全性;Hibernate是一種ORM框架,用于將數(shù)據(jù)持久化。

      (4)數(shù)據(jù)庫(kù)層。

      該項(xiàng)目采用開(kāi)源的關(guān)系型MySQL數(shù)據(jù)庫(kù)系統(tǒng)。MySQL用于記錄設(shè)備信息、用戶信息、待推送或已推送的消息內(nèi)容、預(yù)警規(guī)則、墑情信息等數(shù)據(jù)。

      農(nóng)業(yè)墑情預(yù)警信息實(shí)時(shí)推送系統(tǒng)由墑情管理、預(yù)警規(guī)則管理、用戶狀態(tài)管理、會(huì)話管理、通知管理、消息記錄管理6個(gè)模塊構(gòu)成。功能結(jié)構(gòu)如圖2所示。

      圖2 服務(wù)端功能結(jié)構(gòu)

      2.1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)

      系統(tǒng)采用的是MySQL數(shù)據(jù)庫(kù),定義了用戶信息表(tb-user)、客戶表(tb-appuser)、信息表(tb-message)、預(yù)警規(guī)則表(tb-rule)、離線信息表(tb-offmessage)、墑情數(shù)據(jù)表(tb-moisture)。為了使用這些表,在Spring框架中集成Hibernate框架,在Spring配置文件中配置數(shù)據(jù)源、SessionFactory,配置實(shí)體類等實(shí)現(xiàn)表的建立以及數(shù)據(jù)庫(kù)的連接。

      2.2 客戶端設(shè)計(jì)

      Android客戶端使用基于JAVA的開(kāi)源XMPP協(xié)議包asmack,該包是基于openfire下的另外一個(gè)開(kāi)源項(xiàng)目smack,在開(kāi)發(fā)客戶端時(shí),直接將asmack.jar包導(dǎo)入Android studio下的工程項(xiàng)目中即可使用。App利用asmack中提供的XMPPConnection類與服務(wù)器端建立起持久連接,并通過(guò)該連接進(jìn)行用戶注冊(cè)和登錄認(rèn)證,該連接也用于服務(wù)器端發(fā)送的消息通知[11]??蛻舳顺绦蛑蠸erviceManager負(fù)責(zé)管理消息服務(wù)以及加載相關(guān)的配置,ConnectivityReceiver負(fù)責(zé)處理網(wǎng)絡(luò)狀態(tài)的廣播,NotificationReceiver負(fù)責(zé)處理服務(wù)端發(fā)送的推送消息,NotificationService負(fù)責(zé)在后臺(tái)服務(wù)響應(yīng)服務(wù)端的消息,PersistentConnectionListener負(fù)責(zé)監(jiān)控連接關(guān)閉以及重連事件的監(jiān)聽(tīng),PhoneStateChangeListener負(fù)責(zé)監(jiān)聽(tīng)手機(jī)狀態(tài)的事件,ReconnectionThread負(fù)責(zé)重連線程類,Notifier負(fù)責(zé)客戶端發(fā)送通知,NotificationIQ負(fù)責(zé)處理消息的數(shù)據(jù)包[12-13]。

      3 系統(tǒng)實(shí)現(xiàn)

      3.1 墑情管理模塊實(shí)現(xiàn)

      墑情監(jiān)測(cè)站將各傳感器采集到的實(shí)時(shí)數(shù)據(jù)通過(guò)下位機(jī)無(wú)線傳輸至推送系統(tǒng)服務(wù)端,服務(wù)端通過(guò)制定的通信協(xié)議將數(shù)據(jù)解析封裝后存入數(shù)據(jù)庫(kù)。為了更直觀地顯示這些數(shù)據(jù),Web前端視圖層將以圖表形式顯示這些墑情數(shù)據(jù),用戶可以查看實(shí)時(shí)墑情數(shù)據(jù),并且可以根據(jù)條件查詢歷史墑情數(shù)據(jù)。

      3.2 預(yù)警規(guī)則管理模塊實(shí)現(xiàn)

      預(yù)警規(guī)則管理模塊主要負(fù)責(zé)預(yù)警規(guī)則的添加、查看、修改、刪除。規(guī)則內(nèi)容中有的是回調(diào)系統(tǒng)方法,例如“獲取傳感器值(realdata,“大氣溫度”)、判斷是否再次觸發(fā)(rule,生產(chǎn)基地id,180)等”。這些規(guī)則運(yùn)用了QLExpress規(guī)則引擎,它是阿里內(nèi)部的一個(gè)開(kāi)源的java規(guī)則引擎,主要是定義規(guī)則、解析規(guī)則、執(zhí)行規(guī)則幾個(gè)步驟,編譯的過(guò)程類似java class文件的編譯過(guò)程,首先進(jìn)行詞法分解、詞法分析、語(yǔ)法分析、規(guī)則執(zhí)行等步驟。

      例如,規(guī)則內(nèi)容可以定義如下:

      double溫度值=獲取傳感器值(realdata,“大氣溫度”);

      String生產(chǎn)基地id=獲取生產(chǎn)基地id(realdata);

      String生產(chǎn)基地名稱=獲取生產(chǎn)基地名稱(realdata);

      如果 (溫度值大于30)

      {boolean 再次觸發(fā)=判斷是否再次觸發(fā)(rule,生產(chǎn)基地id,180) ;

      if (再次觸發(fā)==true) {String 觸發(fā)規(guī)則id=觸發(fā)規(guī)則(rule,生產(chǎn)基地id,“墑情警報(bào)”);

      發(fā)APP消息(觸發(fā)規(guī)則id,生產(chǎn)基地id,“接收墑情報(bào)警”,“溫度超限報(bào)警”,生產(chǎn)基地名稱+realdata.getGathertime().toString()+“傳感器溫度為”+溫度值.toString()+“超過(guò)上限了”);

      }}

      3.3 客戶狀態(tài)管理模塊實(shí)現(xiàn)

      客戶狀態(tài)管理模塊以列表形式展現(xiàn)已注冊(cè)客戶端的在線/離線、用戶名、姓名、郵件、創(chuàng)建日期等信息。如果客戶處于“在線”狀態(tài),則“在線/離線”列的圖片會(huì)變成藍(lán)色;如果處于“離線”狀態(tài),則圖片會(huì)變成灰色。用戶名是XMPP的地址JabberID中的node identifier,它由32位字母和數(shù)字隨機(jī)生成,用來(lái)唯一標(biāo)識(shí)通信中的客戶端[14]。

      3.4 會(huì)話管理模塊實(shí)現(xiàn)

      會(huì)話管理模塊以列表形式展現(xiàn)當(dāng)前所有客戶端與服務(wù)端建立的會(huì)話連接,“在線/離線”列的圖片全部顯示藍(lán)色,表示該列表的用戶全部在線且可以收到消息,系統(tǒng)可以對(duì)該列表的用戶群發(fā)消息,也可以選擇某個(gè)用戶單獨(dú)發(fā)消息,會(huì)話列表記錄了用戶名、狀態(tài)、客戶端IP等信息。

      3.5 通知管理模塊實(shí)現(xiàn)

      通知管理模塊分為服務(wù)器自動(dòng)推送和Web端手動(dòng)推送,分別介紹如下:

      3.5.1 服務(wù)器自動(dòng)推送

      使用Spring定時(shí)器,定義實(shí)時(shí)墑情數(shù)據(jù)規(guī)則處理任務(wù)類,該類的功能是處理實(shí)時(shí)數(shù)據(jù)報(bào)警規(guī)則,主要是運(yùn)用qlExpress對(duì)規(guī)則表達(dá)式進(jìn)行處理,解析規(guī)則后將實(shí)時(shí)數(shù)據(jù)與規(guī)則進(jìn)行綁定,最后執(zhí)行規(guī)則。執(zhí)行規(guī)則過(guò)程會(huì)執(zhí)行規(guī)則里面的推送方法,即規(guī)則中的“發(fā)送APP消息”方法,該方法實(shí)際上是調(diào)用NotificationManager中的sendNotifcationToUser方法。

      該任務(wù)每分鐘被觸發(fā)并執(zhí)行一次,對(duì)實(shí)時(shí)數(shù)據(jù)報(bào)警規(guī)則進(jìn)行處理,如果實(shí)時(shí)墑情數(shù)據(jù)符合規(guī)則定義要求,系統(tǒng)則會(huì)將預(yù)警信息發(fā)送到用戶手機(jī)端上。

      3.5.2 Web端手動(dòng)推送

      Web端手動(dòng)推送是在推送頁(yè)面編輯推送信息,然后提交信息即可完成推送,用戶點(diǎn)擊手機(jī)通知欄即可查看信息詳情。在該頁(yè)面選擇推送的目標(biāo)用戶,可以選擇所有用戶進(jìn)行推送,也可以指定用戶進(jìn)行推送,還可以只推送給當(dāng)前在線用戶。當(dāng)選擇對(duì)所有用戶或者指定用戶進(jìn)行推送時(shí),離線用戶不會(huì)立即收到消息,服務(wù)端會(huì)把離線消息存入數(shù)據(jù)庫(kù)的離線信息表中,當(dāng)用戶再次在線時(shí),客戶端會(huì)自動(dòng)請(qǐng)求服務(wù)器,服務(wù)器會(huì)將離線信息表中最新的信息發(fā)送到用戶手機(jī)端。標(biāo)題和內(nèi)容用戶可以自己定義,URI則是用戶的地址,不是必填項(xiàng),點(diǎn)擊“提交”后請(qǐng)求執(zhí)行的方法是NotificationManager中的sendBroadcast()、sendNotifcationToUser()或者sendNotifcationToUserOnline(),當(dāng)選擇向所有用戶發(fā)送信息時(shí)會(huì)執(zhí)行sendBroadcast()方法,當(dāng)指定用戶時(shí)會(huì)執(zhí)行sendNotifcationToUser()方法,當(dāng)選擇推送給在線用戶時(shí)會(huì)執(zhí)行sendNotifcationToUserOnline()方法。

      3.6 消息記錄管理模塊實(shí)現(xiàn)

      消息記錄管理模塊是對(duì)所有的推送信息進(jìn)行記錄,每發(fā)送一條信息則會(huì)將該信息的相關(guān)信息存入數(shù)據(jù)庫(kù)相應(yīng)的表中,在該頁(yè)面可以按消息類型、狀態(tài)、開(kāi)始時(shí)間、結(jié)束時(shí)間等條件查詢消息記錄,其中消息類型分為服務(wù)器自動(dòng)推送和Web手動(dòng)推送。點(diǎn)擊“查詢”按鈕,頁(yè)面會(huì)以列表的形式顯示符合該條件下的消息記錄,用戶在該頁(yè)面選中某條信息記錄雙擊可以查看消息詳情,同時(shí),該頁(yè)面也支持消息記錄的刪除。

      3.7 客戶端的實(shí)現(xiàn)

      基于Android平臺(tái)的客戶端運(yùn)用Android Studio進(jìn)行開(kāi)發(fā),開(kāi)發(fā)過(guò)程中在項(xiàng)目目錄下導(dǎo)入基于XMPP協(xié)議的asmack.jar包;客戶端主要進(jìn)行連接信息的管理,例如XMPP協(xié)議的端口、IP、用戶登錄等信息的管理,以及定時(shí)發(fā)送連接請(qǐng)求以保持連接處于有效狀態(tài)。服務(wù)器端和客戶端的通信是一個(gè)session(會(huì)話)過(guò)程。會(huì)話開(kāi)始時(shí)客戶端首先會(huì)通過(guò)指定的服務(wù)器的端口號(hào),把信息發(fā)送到服務(wù)器端,而服務(wù)器發(fā)送消息是通過(guò)根節(jié)點(diǎn)的方式傳遞,在數(shù)據(jù)傳輸過(guò)程中,信息處理采用XML節(jié)的方式傳遞,其中IQ(Info/Query)元素用來(lái)發(fā)送和獲取實(shí)體之間的信息,(消息)元素用來(lái)存儲(chǔ)消息內(nèi)容,(在線狀態(tài)探測(cè))元素用來(lái)傳遞用戶的狀態(tài),當(dāng)服務(wù)器和客戶端關(guān)閉時(shí)會(huì)發(fā)送它的結(jié)束標(biāo)記。客戶端只需要通過(guò)XMPP協(xié)議接收消息,而其他所有的操作都由服務(wù)器完成,這樣的處理機(jī)制大大減輕了客戶端的負(fù)擔(dān)[15]。

      4 運(yùn)行結(jié)果

      文中所研究的推送系統(tǒng)已經(jīng)在試點(diǎn)基地運(yùn)行,目前運(yùn)行情況良好;基地管理員用戶打開(kāi)瀏覽器進(jìn)入系統(tǒng)首頁(yè)后要求輸入用戶名和密碼,用戶名和密碼匹配成功后會(huì)進(jìn)入系統(tǒng)功能頁(yè)面。

      墑情管理模塊以圖表形式直觀地展示農(nóng)業(yè)墑情監(jiān)測(cè)站傳過(guò)來(lái)的各種傳感器的實(shí)時(shí)數(shù)據(jù),在該頁(yè)面能夠查詢歷史數(shù)據(jù)、分析數(shù)據(jù)等。

      預(yù)警規(guī)則管理模塊可以進(jìn)行預(yù)警規(guī)則的添加、刪除、修改、查看詳情等操作,但該頁(yè)面需要專業(yè)人員去維護(hù),否則系統(tǒng)可能會(huì)出現(xiàn)異常,因此對(duì)該頁(yè)面進(jìn)行了權(quán)限控制。

      客戶狀態(tài)管理模塊可以看到所有的已注冊(cè)用戶,在線的用戶頭像顯示藍(lán)色,離線的顯示灰色。新用戶用手機(jī)安裝客戶端并注冊(cè)后,發(fā)現(xiàn)該頁(yè)面會(huì)自動(dòng)添加一行新客戶信息,頭像顯示藍(lán)色,當(dāng)該用戶退出客戶端后,頭像立即變?yōu)榛疑?/p>

      會(huì)話管理模塊完整地顯示了當(dāng)前可與服務(wù)端進(jìn)行會(huì)話的客戶信息,一旦用戶離線,該用戶的信息會(huì)在該頁(yè)面消失,重新上線后又會(huì)顯示。

      通知管理模塊可以進(jìn)行服務(wù)器自動(dòng)推送和Web端手動(dòng)推送,經(jīng)測(cè)試,服務(wù)端能夠在滿足條件的情況下將信息自動(dòng)推送給用戶,手動(dòng)推送則可以按照管理員用戶的需求有針對(duì)性的推送。對(duì)于離線用戶,經(jīng)過(guò)測(cè)試,當(dāng)對(duì)離線用戶發(fā)送信息時(shí),離線用戶不會(huì)立即收到信息,而是當(dāng)用戶再次上線時(shí)會(huì)收到最新的推送信息。

      消息記錄管理模塊記錄了每一次的消息推送信息,管理員可以在該頁(yè)面查看或刪除消息記錄。

      消息推送成功后,用戶手機(jī)端會(huì)接收到相關(guān)信息,手機(jī)通知欄顯示信息如圖3所示,點(diǎn)擊通知欄顯示信息詳情如圖4所示。

      圖3 通知欄顯示信息

      圖4 顯示信息詳情

      5 結(jié)束語(yǔ)

      農(nóng)業(yè)墑情預(yù)警信息實(shí)時(shí)推送系統(tǒng)包含完整的服務(wù)端與客戶端,實(shí)現(xiàn)了墑情信息的服務(wù)端自動(dòng)推送和Web端手動(dòng)推送,能夠及時(shí)地將墑情信息推送至用戶的手機(jī)客戶端上,用戶點(diǎn)擊手機(jī)通知欄即可查看消息詳情。該系統(tǒng)提供準(zhǔn)確及時(shí)的墑情預(yù)警信息給用戶,方便用戶及時(shí)了解農(nóng)作物生長(zhǎng)環(huán)境的突變情況,及時(shí)采取應(yīng)對(duì)措施,避免因環(huán)境變化而造成農(nóng)作物的損失,因而在農(nóng)業(yè)生產(chǎn)上具有很高的推廣價(jià)值,同時(shí)具有廣闊的應(yīng)用前景。

      參考文獻(xiàn):

      [1] 張 宇,張厚武,丁振磊,等.農(nóng)業(yè)小氣候數(shù)據(jù)監(jiān)測(cè)站的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2016,37(8):2072-2076.

      [2] 楊 斌.XMPP協(xié)議分析與應(yīng)用探討[J].微型機(jī)與應(yīng)用,2005,24(8):32-34.

      [3] LI Chengzhe,HSIEH M Y,HSU K H.An extended SOA for distributing workload to service providers using XMPP[J].Frontiers in Artificial Intelligence & Applications,2015,274:1743-1752.

      [4] WAGENER J, SPJUTH O, WILLIGHAGEN E L, et al.XMPP for cloud computing in bioinformatics supporting discovery and invocation of asynchronous web services[J].BMC Bioinformatics,2009,10:279.

      [5] 倪紅軍.基于Android平臺(tái)的消息推送研究與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索,2014,33(5):96-100.

      [6] 陶曉俊,朱 敏.基于規(guī)則引擎的企業(yè)服務(wù)開(kāi)發(fā)模式[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(2):115-118.

      [7] 繳明洋,譚慶平.Java規(guī)則引擎技術(shù)研究[J].計(jì)算機(jī)與信息技術(shù),2006(3):41-43.

      [8] 丁振凡,李馨梅.Spring的任務(wù)定時(shí)調(diào)度方法的研究比較[J].智能計(jì)算機(jī)與應(yīng)用,2012,2(4):55-56.

      [9] 張 宇,王映輝,張翔南.基于Spring的MVC框架設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(4):59-62.

      [10] AHUJA S,YANG J L.Performance evaluation of java web services:a developer’s perspective[J].Communications and Network,2010,2(3):200-206.

      [11] 汪海占,邸 萌,黃祥林.基于XMPP協(xié)議的Android消息推送設(shè)計(jì)與實(shí)現(xiàn)[J].科技廣場(chǎng),2015(2):40-46.

      [12] 黃明恩.基于Android平臺(tái)的云推送服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2015.

      [13] 張克建.基于JavaEE與Android的消息推送系統(tǒng)的研究與實(shí)現(xiàn)[D].北京:華北電力大學(xué),2015.

      [14] JIN J H,LEE H C,LEE M J.Supporting collaborative workspaces over XMPP[M].Berlin:Springer,2014.

      [15] 殷 昊.基于Android平臺(tái)的消息推送能力的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2013.

      猜你喜歡
      服務(wù)端墑情離線
      異步電機(jī)離線參數(shù)辨識(shí)方法
      呼吸閥離線檢驗(yàn)工藝與評(píng)定探討
      墑情會(huì)商,助力備耕春播
      淺談ATC離線基礎(chǔ)數(shù)據(jù)的準(zhǔn)備
      土壤墑情監(jiān)測(cè)的意義與技術(shù)規(guī)范
      云存儲(chǔ)中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
      新時(shí)期《移動(dòng)Web服務(wù)端開(kāi)發(fā)》課程教學(xué)改革的研究
      離線富集-HPLC法同時(shí)測(cè)定氨咖黃敏膠囊中5種合成色素
      中成藥(2018年2期)2018-05-09 07:20:09
      在Windows Server 2008上創(chuàng)建應(yīng)用
      開(kāi)封市土壤墑情監(jiān)測(cè)系統(tǒng)建設(shè)研究
      乌恰县| 滦平县| 关岭| 丹阳市| 巴彦淖尔市| 灵石县| 洛浦县| 顺平县| 康平县| 南陵县| 稻城县| 石台县| 汉沽区| 昌邑市| 乌鲁木齐县| 赤城县| 尼勒克县| 基隆市| 岑巩县| 濮阳县| 建瓯市| 屏南县| 深圳市| 东光县| 韶山市| 洛川县| 武陟县| 岑巩县| 河北区| 上杭县| 松江区| 太和县| 沙田区| 济宁市| 腾冲县| 长汀县| 珠海市| 汝南县| 称多县| 屏山县| 乌苏市|