1.引言?
????網絡服務已經影響到整個社會的方方面面,Web應用程序也變的越來越復雜,近年來,我國農業生產形勢發生了諸多變化,生態環境的改變使得新的病蟲害開始發生,在植物類產品生產過程中因未能及時診斷病蟲害而造成的損失是巨大的,對植物病蟲害診斷工作提出了挑戰。因此,建立和完善植物病蟲害診斷系統是新世紀的一個重要內容,而植物病蟲害的遠程診斷是智能農業的一個重要技術功能,網絡通信技術的快速發展,使植物病蟲害診斷技術突破了時空限制。系統通過使用先進的領先技術Java和XML來提供優秀的診斷服務。
??? 在傳統的小型JSP應用程序中,數據、業務邏輯和用戶界面通常組合在一個代碼模塊中,應用程序通常還包含用來控制應用程序流程的邏輯,這樣由于文件中HTML和Java的強耦合,會有邏輯混亂,調試困難等很多問題。本文介紹的植物病蟲害遠程診斷系統,采用了基于J2EE的分布式應用體系結構和MVC開發模型,是分布在不同地理位置上的數據庫與遠程診斷系統通過Internet互聯在一起。MVC模式將復雜的系統劃分為M(model)、V(view)、C(controller)三層結構。MVC模式不僅實現了功能模塊和顯示模塊的分離,同時它還提高了應用系統的可維護性、可擴展性、可移植性和組件的可復用性。MVC模式是目前基于B/S結構開發的最為有效的一種模式。
2.技術背景?
????J2EE已經成為企業應用開發的標準。平臺為創建、部署和管理企業級類應用以及代碼的可移植性及重用提供了一個安全的、伸縮的和可擴展的環境。基于它,開發者只需要集中精力編寫代碼來表達企業應用的商業邏輯和表示邏輯,至于其他系統問題,如內存管理、多線程、資源分布、垃圾收集等,都將由J2EE自動完成。J2EE方案的實施可顯著地提高系統的可移植性、安全性、可伸縮性、負載平衡和可重用性。J2EE的發展,讓Java語言與MVC模式設計思想達到了完美的結合,使早就提出但一直未能突破語言障礙的MVC模式得以實現。
????由Apache組織開發的Struts框架是一個基于J2EE平臺的Web應用系統框架,它采用MVC模型規范,結合了Servlet、JSP、JavaBean的技術特點,使這些技術合理分工,緊密配合,達到程序結構清晰,易于開發、維護的目的。Struts的主要部件是一個通用的控制組件。這個控制組件提供了處理所有發送到Struts的HTTP請求的入口點。它截取和分發這些請求到相應的動作類(都是Action類的子類)。同時,控制組件也負責用相應的請求參數填充FormBean,并傳給動作類。動作類實現核心業務邏輯,它可以訪問JavaBean或調用EJB。最后,動作類把控制權傳給后續的JSP文件,后者則生成視圖。所有的這些控制邏輯都是利用一個XML文件來配置。
????XML與生俱來的可擴展、跨平臺、開放的特性無疑與Java相呼應,形成了完美搭檔。在Web這樣一個公共的、開放的資源平臺與計算環境上,Java技術提供了豐富的實現機制;XML為信息的有效管理和數據集成提供了強大的功能,它提供了一種人和程序都能閱讀的描述機制。XLST用來把XML文件轉換成HTML文件,其中XML信息可由JSP動態生成,通過將數據庫中的信息檢索轉換成XML數據信息增大數據的通用性。
????在對數據庫的處理時我們采用面向對象的數據持久化技術hibernate,它是現在對數據庫處理的一個非常優秀的O/R Mapping(對象關系映射框架)產品,它對JDBC進行了輕量級的對象封裝,使Java程序員可以隨心所欲的使用對象編程思想來操縱數據庫。Hibernate不僅僅管理Java類到數據庫表的映射,還提供數據查詢和獲取數據的方法,主要包括以下幾個特點:
1.具有開源和免費的License
2.輕量級封裝,避免引入過多復雜的問題,調試容易,減輕程序員負擔
3.具有可擴展性,API開放,當本身功能不夠用的時候可以允許自己遍碼進行擴展
4.開發者活躍,產品有穩定發展的保障
5.具有豐富的文檔資料
6.有成功的項目開發實施案例
7.在開發者當中有良好的口碑
3.系統功能?
????系統利用人工智能技術,在internet上24小時運轉,遠程擁護自助生產中的疑難病蟲,運行成本低,這也是遠程診斷的發展方向。基于對病和蟲診斷的不同特點,在推理機上也采用了不同的方法,對害蟲的診斷上采用了二叉樹推理機,而對病害的診斷采用神經網絡推理機。
????系統主要包括以下功能:
1.?用戶認證。系統所有用戶的密碼采取MD5算法加密,任何人無法從數據庫(或者數據包)中獲取到其他人員的密碼。
2.?系統管理員對系統的維護,包括對用戶的管理和對病蟲害數據的填加、更新、刪除等操作。
3.?用戶對信息的搜索。用戶可以通過站內搜索來查找自己需要的信息內容。
4.?推理與診斷。根據用戶輸入的信息,系統將自動的來推理診斷得出結論,反饋給用戶。
????系統還有一部分其他的附屬功能,但以上是整個系統最為核心的內容。其他功能在此就不再贅述。下面我們以病害診斷為例看一下系統的構成,蟲害診斷基本與病害系統構成相同,就是中間的推理機和數據庫字段設置不同,以下是病害系統的構成圖(圖1)。用戶通過登陸界面經身份驗證確認后進入開始頁面,在此頁面上就可一步一步的按系統的流程來進行診斷,經遠程服務器端推理機推理即可將結果反饋給用戶,這樣用戶不出門就可完成遠程診斷,節約了大量的人力、財力,縮短了診斷時間,減少了因病蟲害延誤而使植物生產中造成大量的損失。在后臺我們可以方便的對數據資料進行適時的管理,保證了診斷信息的時效性,使診斷更為客觀、真實。
????
?圖1 植物病害遠程診斷系統構成
4.系統設計?
????在系統的設計中我們實現松耦合,系統里的所有組件都是服務。整個系統采用Struts結構,圖2是系統的主體框架設計圖,圖3為系統的底層結構。
???
????????????????????????????????????????????????? 圖2 系統主體框架設計
圖3 底層結構
????在Model中,用一個表單Bean來保存HTTP請求傳來的數據,兩個業務邏輯Bean來處理業務邏輯,因為對病和蟲的診斷機理不同,所以才用了兩個業務邏輯Bean,其中一個為進行二叉樹推理,另一個為神經網絡推理,只所以分成兩個也是盡量的讓系統松耦合,隨著系統的升級以后可能采用更為先進的準確的推理機,那么到時我們只需更換相應的業務邏輯Bean就可以了,而對別的都不夠成影響,這對以后的系統升級無疑是一件很好的事。在系統的推理過程中,勢必會有很多的會話信息,這里我們用系統狀態Bean來保存跨越多個HTTP請求的單個客戶的會話信息。
????視圖使用JSP建立,用JSP產生XML文件,再由XLST把XML文件轉換成HTML文件,然后傳送到客戶端。
????控制器處理所有發送到Struts的HTTP請求。根據對病和蟲的不同診斷需求,他截取的請求分發到相應的動作類,負責用相應的請求參數填充FormBean并傳給動作類。在動作類通過訪問Model中的不同業務邏輯Bean實現核心業務邏輯后,根據動作類的返回值把控制權交給相應的JSP文件,生成試圖。
????以上是系統的主體框架設計,在系統的開發中是按圖一的各個模塊來開發,將系統分為前臺和后臺兩部分,在前臺也就是客戶的登陸和推理界面,然后提供系統的搜索功能。后臺則為系統管理員對整個系統的維護功能。在整個系統的開發過程中就是按照系統的主體框架路線和系統的構成圖兩條線來做的,系統整體層次清晰,結構合理,把各個模塊都組件化,使得系統在后續的維護和升級中都變的比較容易。
5.結束語?
????系統基于Web及人工智能,可大大縮小“發現——診斷”的時滯。由于在整個診斷過程中需要對大量數據進行傳遞和處理,而Java和XML的完美組合正使得這一問題得到了很好的解決。系統的松耦合性也使系統以后的升級中得以順利進行,在升級部分只需更換相應組件即可,而對系統的其他部分沒有影響,免去了傳統系統升級中的“牽一發而動全身”之痛。
????現在信息技術的發展使得遠程診斷成為以后的發展趨勢,為了保證診斷的準確性和可靠性,我們還需繼續利用數據挖掘技術,發現蘊涵在歷年病蟲害發生的統計數據中的知識和規則,從而為診斷和決策支持提供服務。隨著數據量的不端增加,全文的檢索速度也慢慢的成為系統的瓶頸,以后將用lucene來完成對大量信息的全文索引/檢索功能,使系統性能更為強大。
參考文獻?
[1] http://www-900.ibm.com/developerWorks/cn/java/j-strutscol
[2] http://gceclub.sun.com.cn/NASApp/sme/controller/teclist?tid=0102
[5] Stephen Asbury,Scott R.Weiner著.王強,田原,王軍,等譯.Java企業級應用開發指南.機械工業出版社,中信出版社,2004
[6] 封傳紅,廖華明,羅林明,涂建華.病蟲生物災害遠程診斷技術探討. 中國植保導刊,2004(5)
?