0引言
農業信息化作為國家信息化戰略的一部分,己成為實現農業生產經營現代化的重要途徑[1]和解決“三農”問題的重要選擇。為此,黨和政府高度重視農業信息化建設,并將其作為一項重要基礎設施加以建設。近幾年來,我國農業信息化建設取得了較大的成績,除了建成大型涉農數據庫和農村信息化網絡平臺之外,出現了大量的農村信息化應用軟件[2-5],如農民專業合作社管理系統、農村財務管理系統、農產品網上交易系統,以及農產品追溯系統等。一系列軟件的應用,有力地促進了我國農業信息化水平的提升。
但是,我國農業信息化依然存在基礎設施薄弱、信息資源共享程度不高、先進技術產業化程度不夠、信息服務能力不強等問題,具體到農業信息化應用軟件,主要表現為軟件研發周期長、建設成本高、可復用資源不多和動態適應性差。為此,設計了農業信息化應用開發平臺,以支持農村信息化應用軟件的快速生成和有效部署。
農業信息化應用開發平臺基于構件和SOA技術,在JavaEE框架下進行開發。該平臺是一個基于構件、支持農業信息化應用軟件配置生成的支撐環境,可為農業信息化應用軟件的快速開發提供公共服務、構件庫管理和使用工具。
1相關技術概述
1.1構件技術
構件的概念是為了解決軟件危機而提出來的,它是可以被復用的軟件實體[6],可以與第三方軟件進行裝配。構件主要由構件模型和構件實現組成。其中,構件模型是對構件的抽象描述,構件實現是指實現構件功能的程序。構件為軟件開發提供了可復用資源,通過構件組裝來構造新的軟件,將軟件開發由“從零開始”的傳統模式轉變為基于己有構件的集成組裝過程[7],極大地提高了軟件開發的質量和效率,同時顯著降低了軟件開發風險。
構件由構件生產者提供,使用者只需要按照自身的業務需求,選擇合適的構件進行組裝,即可生成自己的軟件。目前,構件技術已經得到學術界和企業界的廣泛認同,并在實際中實施了有效的應用;但依然存在缺乏足夠的行業構件及可復用資源少的問題。因此,將構件庫的建設作為農業信息化應用軟件開發平臺的核心。
1.2SOA
SOA[8]指面向服務的體系架構,它以服務為基礎,以流程為核心,全面支持業務的快速變化,從而適應企業業務流程的變更。SOA的核心包括面向構件、軟件治理、流程管理和統一服務。其中,軟件治理包括規劃和政策、管理和監控、服務安全;面向構件包括構件組裝和容器、數據服務對象;統一服務包括動態服務管理、可靠消息服務;流程管理包括業務邏輯、頁面流、工作流和業務流,如圖1所示。通過引入SOA技術,農業信息化應用軟開發平臺可以容易地以構件裝配的形式實現流程驅動下的農業信息化應用軟件開發。
1.3平臺開發技術
在眾多基于B/S模式Web開發技術和框架中,選擇ExtJS、DWR、Spring和iBatis技術框架進行平臺的開發,后臺數據庫選擇Oracle.ExtJS是一個與后臺技術無關的Ajax框架,主要用于實現前端用戶界面的創建,具有界面友好、功能豐富的特點。DWR是一個用于改善Web頁面與Java類交互的遠程服務器端Ajax框架,實現了瀏覽器通過JavaScript語言直接調用后臺業務構件的功能。Spring是一個開源框架,通過采用分層架構來解決企業應用程序開發的復雜性,實現應用程序的配置和依賴性規范與實際的應用程序代碼分離,并支持面向方面的編程。iBatis是一個基于Java的持久層框架,主要完成數據持久化的功能,并為系統的設計提供更大的自由空間。
2平臺的體系結構
本文從農業信息化的實際需求出發,結合構件技術和SOA技術,提出了農業信息化應用軟件開發平臺的體系結構。該體系結構自下向上可分為資源層、基礎框架層、構件層、服務層、流程層和應用層,如圖2所示。
1)資源層。該層提供平臺所需的各種資源,包括數據庫中的數據和其他應用系統提供的數據。平臺在其上封裝了一個統一數據接口,通過統一接口實現不同來源的數據統一處理,做到程序與數據源松耦合。
2)基礎框架層?;A框架層使用JavaEE中間件,提供各種最基礎的公共服務,如命名服務、安全服務、通告服務等,并實現構件間的通信。
3)構件層。該層提供了大量的可復用資源,包括基礎構件和業務構件?;A構件主要實現技術細節的復用,包括字符處理、菜單、日志、日期時間、輸入域、列表、按鈕、樹、表格等構件;業務構件實現平臺較高粒度的復用,包括數據源訪問構件、事務管理構件、權限構件、頁面展示構件、消息構件、圖形化構件、流程構件、查詢構件、報表構件、流程生成構件和數據挖掘構件等。
4)服務層。服務層通過服務裝配的方式,根據服務對象要求,在構件之上進行集成整合。其將功能單元封裝成一個個獨立的服務,將操作方式透明化,使用者只需要錄入入口數據,就可通過其功能要求得到出口數據,且不需要了解具體實現細節;通過服務的大量積累,逐漸形成功能強大、擴展性極強的服務中心。在服務層存在服務管理工具來實現服務注冊與映射、服務查詢和服務評估等功能。
5)流程層。在平臺中,流程體系貫穿其中,無處不見,可包括頁面流、頁面邏輯流、業務邏輯流和工作流,通過流程配置和靈活的流轉模式實現對業務化流程與規則的定制與調整的支持。平臺將流程中分離的功能單元抽象成流程構件,在流程的設計中,只需要對流程構件進行拼裝,即可快速完成對日常業務的流程模擬。平臺的流程不僅支持順序、分支、并發、循環、嵌套子流程、多路選擇和多路歸并等基本流程模式,還支持條件路由、自由流、回退、激活策略、完成策略、并行會簽、串行會簽、指派和多實例子流程等特殊流程模式。
6)應用層。該層又可稱為工具層,其主要功能是提供農業信息化應用軟件開發過程中需要使用的各種工具,并為用戶提供良好的交互界面。用戶可以使用該層的工具,快速進行農業信息化應用的開發。
3平臺部分典型構件的設計
3.1頁面自動生成構件
在基于Web的信息系統中,各個頁面對數據的新增、修改、刪除和保存處理模式基本一樣。此時,若采用單個頁面定制開發,則會浪費大量的時間,因此平臺提供了頁面自動生成構件。該構件接受用戶輸入數據表或數據源,并根據數據表或數據源信息自動生成該數據表的數據處理頁面;生成的數據處理頁面能完成該數據表的增加、修改、刪除和保存等功能。
構件實現時,需要設計客戶端的Web頁面和服務器端的Servlet程序。其中,Web頁面接受用戶輸入的存放欲生成頁面的路徑、文件名、數據表名、頁面標題和每頁記錄數等信息[9];Servlet程序接受客戶端傳遞的相關參數,并根據這些參數處理數據表及相關的控制表,從而生成基于給定數據表的Web頁面,其流程描述如圖3所示。
為了實現頁面自動生成,需要設計兩張數據表,分別為信息表和字段控制表,其結構如表1所示。
3.2查詢構件
查詢作為用戶與信息系統交互的有效手段,是所有信息系統都要使用的功能,因此平臺提供了一個查詢構件。該構件遵循通用和開放的原則,用戶可通過自己設置查詢規則和查詢條件,來實現任意復雜的查詢。該構件構建在數據庫基礎之上,將數據庫連接構件、SQL構造構件、存儲過程構件及數據處理(生成視圖)構件整合到一起而形成。其工作流程分為動態選擇數據表、動態選擇字段、生成動態SQL語句、直接編輯SQL語句、保存SQL文本生成視圖及查詢模板、查詢條件設定和查詢結果格式控制等7個步驟,如圖41為了實現查詢構件,需要設計查詢模板表、查詢模板數據字段表、查詢模板靜態條件表、查詢模板動態條件表和查詢模板用戶類型表,各表結構如表2所示。
3.3樹形動態報表構件
報表是信息系統的重要內容之一,但用戶業務需求的多變性導致在信息系統開發中經常會出現用戶無法確定自身對報表的具體要求的情況;同時考慮到報表數據涉及多表之間的關聯問題,以及數據表各字段之間存在的父子關系,因此平臺提供了樹形動態報表構件。
基于前期研究成果[10],確定樹形動態報表構件的實現流程為:首先輸入欲生成報表的相關信息,包括報表名稱、報表數據的來源數據表和各數據表之間的連接關系;隨后確定樹形報表的各個分支以及葉子節點,并定義審核公式和計算公式。定義計算公式的目的是在形成報表時能夠獲取對應數據表的數據,定義審核公式的目的是為了實現生成報表的合法性檢查。
最后,根據來源數據表的連接關系和輸入的報表信息,確定報表結構,并生成該報表。
為了實現樹形動態報表構件,共設計了指標代碼表、報表數據表、公式表、報表列表頭表、報表表頭結構表和報表結構定義表6張數據表。其中,指標代碼表主要用來存放指標代碼信息;報表數據表主要用來存放報表任務中各指標代碼的數據值及匯總數據值;公式表用于定義公式(計算公式和審核公式);報表列表頭表用于定義報表的樹狀結構列表頭;報表表頭結構表用于定義報表的表頭和樹狀結構的定義;報表結構定義表用于定義報表的結構,及其包含的指標及此指標在報表結構中的位置(行號和列號).限于篇幅,各表的結構不再給出。
3.4數據感知構件
在信息系統開發中,數據感知無處不在,然而Web頁面本身不支持數據感知的功能,因此在借鑒Delphi、PB及VB等開發工具的基礎上,平臺提供了數據感知構件,以解決網頁下的即時數據提交和頁面多次刷新問題。
數據感知構件的主要功能是讀取展示頁面上的數據作為操作頁面上的數據,而無須再從數據庫服務器中獲取,它的存在大大提高了系統的速度,減小了服務器的壓力。數據感知構件可以使存在于展示頁面上的數據能輕易地被賦與輸入框、單選按鈕、多選按鈕等表單元素,在新增或修改時可減少頁面刷新及提高操作速度。平臺的數據感知構件主要是采用JavaS-cript及Ajax來實現的。
3.5數據列表構件
數據列表構件主要用來實現后臺數據庫中的數據在前臺頁面中的展示,開發信息系統時,需要實現頁面數據顯示時均要使用該構件。該構件往往與數據感知構件、查詢構件和圖形化構件結合在一塊使用,從而使構造的數據列表具有更強大的功能和更為友好的展現形式。數據列表構件實現的主要功能包括:
多表數據的分頁展示、SQL查詢結果的展示、存儲過程結果的展示、統計函數的調用結果展示和數據Excel的導出。
3.6流程構件
流程構件中包含眾多子構件,其中主要包括:頁面構件、數據源訪問構件、事務管理構件、數據管理構件和業務邏輯管理構件。該構件還可與其它基礎構件進行整合,如流程流轉過程中需要發送消息,則可集成消息構件;如需統計分析,則可集成查詢報表構件和圖形化構件?;诹鞒虡嫾_發的程序不需要由開發人員去控制流程的走向,流程的走向全部基于配置文件。也就是說,開發人員只需要關心如何實現或裝配業務功能即可。
流程構件的主要功能是實現對流程元模型各個元素的統一管理,提供流程工具的接口,使工作流定義工具能夠方便地生成業務流、邏輯流、工作流及頁面流。流程構件的元模型主要由活動、角色、數據、業務功能和轉換條件構成,模型各要素的關系如圖5所示。
3.7權限構件
權限作為應用系統的基礎功能,在任何信息系統都必不可少,因此平臺將權限封裝成構件供開發使用。權限構件以為業務構件提供服務為目標,因此針對不同類型的業務構件,平臺提供多種權限構件以提供支持。
1)頁面權限構件:該構件主要針對頁面控件、按鈕是否顯示、是否禁用等進行控制。
2)業務訪問權限構件:該構件主要控制平臺構件庫中的構件是否可被訪問3)數據權限構件等構件:該構件主要用于控制數據的操作和數據的展示。
同時,這些權限都可基于角色、部門、崗位和人員等多種實體,以進行交、并、補和差的集合操作方式進行授權,具有功能強大、靈活方便的特點。
4平臺應用效果
農業信息化應用軟件開發平臺集成了軟件設計、開發、調試、裝配、部署、監控和治理等過程,具有標準化規范和代碼自動生成的特點。平臺建立了包括基礎構件和業務構件在內的構件庫,形成了大量的可復用資源;解決了面向構件的信息化應用開發中的界面可配置、業務可配置和流程可配置問題;同時提供了大量的引擎和使能工具,實現了流程驅動下的農業信息化應用軟件的可視化開發。平臺運行界面如圖6所示。
平臺開發成功以來,先后在農業病蟲害遠程診斷系統、人工草地建植適宜性綜合管理系統和牦牛食品安全溯源系統中實施了應用,取得了良好的應用效果?;谄脚_開發的病蟲害遠程診斷系統分為網絡部分和手機客戶端兩部分:網絡部分實現了用戶管理、農作物及病蟲害查詢、智能診斷、專家咨詢、農資推薦、交流論壇和后臺管理等功能;手機客戶端實現了智能診斷、專家會診、農作物百科、病蟲害預警、搜索、農藥推薦和登錄等功能。系統運行界面如圖7和圖8所示。
5結束語
農業信息化應用軟件開發平臺通過提供大量的可復用資源和可視化的集成開發環境,將傳統農業信息化應用軟件的開發方式轉變為流程驅動下的構件裝配方式,極大地提高了軟件的開發效率和質量。平臺具有支持業務主導的信息化軟件研發、減少開發成本、避免開發風險和促進信息化資源積累等特點。下一步的工作是進一步豐富平臺構件和各類工具,并建立面向制造業和氣象的行業構件庫,擴大平臺應用范圍。
參考文獻:
[1]陳誠,袁玲,吳華瑞,等。農業信息服務重點、難點、關鍵點和發展對策[J].農機化研究,2014,36(8):232-236.
[2]高志宏,向學成,周曉超?;诮M件式GIS的農民專業合作社管理系統研究[J].安徽農業科學,2009,37(4):1849-1851.
[3]孫立雙,馬運濤,段磊?;诠ぷ髁骱蚖ebADF的遼寧省農村土地整治項目管理系統[J].國土資源科技管理,2014,31(2):84-89.
[4]吳飛鳴,李宇飛。我國農村信息化技術支撐體系研究[J].科技進步與對策,2014,31(18):56-60.
[5]湯曼,夏建群。農村信息化主要問題研究[J].圖書館理論與實踐,2014,(6):38-41.
[6]楊芙清,王千祥,梅宏,等?;趶陀玫能浖a技術[J].中國科學:E輯,2001,31(4):363-371.
[7]魏樂,李亞玲,趙秋云,等?;谧赃m應構件的工作流流程動態變更模型[J].計算機集成制造系統,2010,36(12):2603-2610.
[8]趙亮,姚青?;赟OA的可變業務流程管理系統[J].計算機工程與設計,2010,31(24):5244-5247.
[9]魏樂。制造公司制造執行系統的設計與實現[D].成都:電子科技大學,2008.
[10]舒紅平,蔣建民?;贘AVA的WEB樹形動態報表設計及應用[J].成都信息工程學院學報,2003,18(3):242-247.