段輝良
(中南林業科技大學,湖南長沙412000)
加快推進林業信息化,有利于逐步建立起覆蓋各級林業部門的林業信息化體系,對提高林業信息管理和服務水平,促進林業可持續發展具有重要的理論和實際意義。軟件定制開發作為一種軟件開發形式,在我國還是一種新生事物,尚未被廣大用戶所認同。林業信息系統定制平臺是行業內的軟件定制開發,是以林業業務為導向和驅動,無需編寫代碼或只需編寫少量功能擴展代碼即可快速構建林業信息系統的軟件平臺。林業信息系統定制平臺的研建將改變以往林業信息系統的研發方式,通過使用林業軟件定制平臺,開發人員能夠集中精力關注林業信息系統研發的業務需求與管理問題,擺脫技術細節的困擾,以提高林業信息系統研發的效率。
由于自身的歷史和業務狀況,軟件用戶對于軟件系統會有特殊的要求,尤其是在行業個性化需求和行業自身獨有的個性化需求方面顯得格外迫切。通用軟件通常都是利用套裝軟件的管理思路及模式,讓客戶按照軟件的業務流程實現管理的流程化套用,根本不考慮行業及內部個性化需求,這樣就造成了軟件在上線和使用過程中存在著相當嚴重的“水土不服”的現象。如不采用類似通用軟件,將帶來昂貴的軟件開發費用及后期軟件維護與升級投入。
任何一個應用系統,都具備一個最基本的功能,就是對數據進行“增刪改查”的操作。軟件定制平臺就是抽象出這些共性,采用“標準化+行業化+個性化”的應用模式,實現數據、模板資源共享以便節約開發成本,提高開發效率,縮短開發周期。傳統的C/S架構模式已經不適合應用于定制平臺,B/S架構模式以互聯網為基礎,程序、數據、可供利用的所有資源均實現了網絡化。軟件開發的參與者通過網絡形成協作,極大地提高了以往的軟件開發效率。對于基于web的軟件定制開發平臺,應具有如下幾個特點:①以web2.0為基礎,基于互聯網的B/S架構的軟件。Web2.0本身也是一個軟件,只不過不是最終的軟件產品,而是用于二次開發的軟件;②用于實現各類業務系統,web開發平臺不同于傳統的開發工具,需要編寫代碼來完成各個業務模塊,基于web的二次開發平臺只需要設計好自己的數據結構,進行一些簡單的配置、拖拉等操作就可以完成業務系統的開發;③能夠快速的實現各種報表包括復雜的圖表報表的設計制作,傳統的編碼式開發需要自己去編寫想要的各種報表,而運用開發平臺通過配置就應能產生相應的報表。
目前,我國各級林業部門研發的各類信息系統均基于不同的技術架構,由不同的技術單位研制。它們的開發語言平臺、數據結構、運行環境均存在不同程度的差別,提供的業務功能與信息服務也都不盡相同,形成諸多信息孤島,導致不同的業務部門之間無法共享數據,各個林業信息系統之間基本沒有對外開發擴展接口,使得系統無法進行功能擴展。目前,為解決以上問題,業界常用的技術架構有基于WCF與WebService框架及基于面向服務的體系結構(SOA)。
Web Service使用X mL擴展標記語言來表示數據,它使用Soap簡單對象訪問協議來實現分布式環境里應用程序之間的數據交互。WSDL來實現服務接口相關的描述。此外Web services可以注冊到UDDI中心.供其客戶查找使用。
基于面向服務的體系結構(SOA)是近年來軟件項目開發和信息系統構建方法的一個國際性技術趨勢,代表一個開放的、可擴展的、安全的和可組合的軟件架構,SOA是一種松散耦合的應用程序體系結構,在這種應用體系結構中,所有的業務功能被定義為獨立的服務(Service),即在業務層和表現層之間增加了一個服務層,可以獨立完成特定的服務功能,使業務層和表現層相互獨立,從而適應應用程序需求的變化。
自2014年1月1日起,《林業數據庫設計總體規范》已經公布,該規范為實現林業數據大范圍共享提供了堅實基礎。使用Web Service框架及基于面向服務的體系結構(SOA)在一定程度上可以解決數據共享問題,但是依然無法解決業務的快速開發與應用快速步署問題。
ZKOSS是異步的AJAX技術,提供整套的界面的業務邏輯通訊解決方案,是三大主流RIA(Rich Internet Applications)技術之一,多人同時在線時數據通訊比較集中的情況下,可以有效的控制對資源占用,減少服務器的壓力。
Hibernate是一個開源的對象關系映射框架,對JDBC進行了非常輕量級的對象封裝,它為面向對象的領域模型到傳統的關系型數據庫的映射,提供了一個使用方便的框架,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用。同時,該框架是目前公認的JAVA數據持久層技術,對減少程序員開發量,規范化代碼編寫,便于后期維護。尤其是對事務控制方面比其他持久化技術表現更為突出,對數據要求嚴謹性的系統尤顯其重要性。
Spring框架提供了構建 Web應用程序的全功能MVC模塊。MVC作為WEB項目開發的核心環節,嚴格按照分層概念驅動項目開發,控制器將用戶客戶端與業務分開構成了MVC,Spring框架是高度可配置的,而且包含JSP技術,iText和 POI等多種視圖技術。框架分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。
Jquery一個優秀的Java script框架。它是輕量級的js庫,把部分業務放在客戶端處理,減少服務器部分壓力,降低服務器資源占用,能兼容各種瀏覽器,能更方便地處理HT mL documents、events、實現動畫效果,并且方便地為網站提供AJAX交互。
上述技術框架開發語言基于JAVA,所有技術框架、控件都是J2EE領域常用控件。框架中每一項技術至少都有5年以上的歷史,經歷了多個版本更新,是在多個項目實踐中驗證過的成熟技術,同時也是典型的MVC結構。上述框架主要體現了以下幾個特點:邏輯嚴謹,結構清晰,規范化編寫,方便維護;充分發揮客戶端、應用服務器和數據庫服務器的作用,又同時兼顧壓力和負載的均衡;與其他應用系統的接口采用業務標準的技術和通用的做法,使系統具有良好的擴展性;清晰的層次結構,模塊化的設計,方便功能性的擴展;嚴格的層次結構,對整個體系的安全性具有層層的保護作用(圖1)。
基于以上開源框架,軟件定制平臺具備以下功能及特性:支持主流數據庫,實現代碼自動生成,支持多種數據模型,同時代碼生成器的依賴性低,具有方便的擴展能力,可完全實現二次開發;框架的組件耦合度底,便于功能的擴展和修改,通用的SQL查詢無須編寫代碼,通過頁面動態查詢字段、實現查詢自動化定制;工具類實現了共同封裝,文件的導入導出,短信接口等基本能滿足項目需求;集成了簡易報表工具,實現圖像報表和數據方便導出或生成pdf、excel、word等格式報表。該框架的功能框圖及主頁面如圖2所示。

圖1 技術框架

圖2 功能框圖
通過讀取表結構和字段屬性,可以生成統一的前臺頁面、頁面表單校驗和規范的后臺代碼(Action、Service、Dao、Entity、Page等)。同時,抽離出框架,實現解耦設計使得 Struts2、Spring MVC 、Hibernate、Mybatis、EasyUI、DWZ、ExtJS等技術可以靈活組合使用,導入模板文件即可生成對應的代碼。
4.3.1 數據獲取及系統配置
在數據庫里建立數據庫表,每個字段加上注釋,代碼生成器會根據注釋去生成頁面字段對應的顯示文本。
代碼生成器有兩個配置文件:一個用于數據源的配置,一個用于代碼生成器的參數配置。這兩個配置文件分別是 database.properties 和 config.properties。該配置文件主要完成WEB應用文件的根目錄、生成器使用的模板文件目錄、項目編碼、自定義主鍵命名等主要內容。
4.3.2 代碼生成
傳統程序設計過程中,通常是根據表字段建立實體類,再編寫程序DAO,然后根據業務完成Service層,action及前臺頁面。也就是說,只要知道了表的結構,增刪改查的前后臺頁面的代碼格式就是固定的,剩下的就是復雜的業務。而代碼生成工具的目標就是自動生成那部分固定格式的增刪改查的代碼。可以把代碼生成分為2個步驟:①讀取數據庫表信息,主要包括表名、字段名稱、字段類型、主鍵、外鍵等。技術:java.sql.DatabaseMetaData;②編寫模板文件,根據模板文件和讀出的數據庫表數據生成相應的代碼。技術:freemarker。打開代碼生成器并輸入相應的參數,如圖3所示。執行“生成”之后,可以在源代碼目錄src中可查看到新生成的java代碼文件,同樣地,可以在 WebRoot/webpage中看到新的自動生成的jsp頁面。

圖3 代碼生成器
以軟件定制平臺為基礎,通過集成各類林業基礎數據,可以快速高效地開發出各類林業信息系統。目前,只實現了框架平臺的主要功能,林業基礎數據的獲取與轉換是需進一步完善和改進。軟件定制開發平臺的功能還需進一步完善。
[1]龐麗峰,唐小明,劉鵬舉.基于WebGIS省級林業信息共享平臺的研發 西北林學院學報[J].2011,26(2):180~184.
[2]曹 丹.森林資源數據共享框架設計初步研究[J].林業調查規劃,2009,34(4):58 ~60.
[3]張習科.林業應用系統定制平臺研究[D].長沙:中南林業科技大學,2013.
[4]彭環珂,劉旭東.面向領域的軟件定制化開發方法研究與應用[J].計算機工程與應用,2005(6).
[5]王忠林,尹寶林.開源軟件定制改造過程中的原型選擇[J].北京航空航天大學學報,2006(3):112.