■楊 柯張 維
(1.沈陽工學院信息與控制學院,遼寧撫順113122;2.遼寧省農(nóng)牧業(yè)機械研究所有限公司,遼寧沈陽110036)
標準是經(jīng)協(xié)商一致制定并由公認機構批準,共同使用和重復使用的一種規(guī)范性文件,是企業(yè)生存發(fā)展的重要物質(zhì)基礎。飼料生產(chǎn)標準的制定和實施,為飼料組織生產(chǎn)提供技術指導,把飼料生產(chǎn)納入標準化的軌道,提高飼料行業(yè)科技含量,適應現(xiàn)代畜牧養(yǎng)殖業(yè)管理體系。同時,為飼料行業(yè)監(jiān)管提供依據(jù),提高飼料產(chǎn)品的市場競爭力,促進畜牧業(yè)健康發(fā)展,最終保證食品安全。我國飼料生產(chǎn)標準較多,截至2012年底,現(xiàn)行有效的國家標準和行業(yè)標準共520項,其中國家標準273項,行業(yè)標準247項,近幾年又制定了許多新的飼料生產(chǎn)標準。這些標準文件的查詢和管理是使用者經(jīng)常遇到的難題。
Android平臺采用整合的策略思想,具有良好的用戶體驗,占據(jù)著全球最大的市場份額,截止2016年第二季度,Android手機的市場份額已經(jīng)達到了86.2%。本系統(tǒng)基于Android平臺設計,為廣大用戶提供移動的飼料生產(chǎn)標準查詢手段,方便用戶使用,提高飼料生產(chǎn)質(zhì)量并促進飼料工業(yè)發(fā)展。
Android是一種基于Linux的移動終端操作系統(tǒng),由Linux內(nèi)核、系統(tǒng)運行庫、應用程序框架和應用程序等四部分構成,所有應用程序都是基于Java的應用程序框架之上,Android架構如圖1所示。各部分簡要說明如下:
①Linux內(nèi)核。Android借助Linux內(nèi)核服務實現(xiàn)硬件設備驅(qū)動。作為硬件和軟件之間的抽象層,隱藏具體硬件細節(jié)并為上層提供統(tǒng)一服務。進一步提升了內(nèi)存管理和進程間通信等方面的安全性。
②系統(tǒng)運行庫。為系統(tǒng)的各個組件提供服務,包括系統(tǒng)類庫和Android運行時。系統(tǒng)類庫是C/C++庫的集合,通過應用程序框架提供給開發(fā)者;運行時包含核心庫和Dalvik虛擬機兩部分,核心庫提供Android的核心應用程序接口,Dalvik基于寄存器。
③應用程序框架。為應用程序提供的各種API接口,核心組件由圖中斜體顯示的5個構成,分別用于管理應用生命周期、訪問另一個程序數(shù)據(jù)、構建用戶界面、提供非代碼資源訪問和顯示提示信息等。
圖1 Android架構
④應用程序。用Java代碼編寫,由應用程序框架提供的供開發(fā)者使用,運行在虛擬機中。包括瀏覽器和即時通訊等,軟件開發(fā)時可將這些應用作為組件使用,軟件用戶通過應有程序使用軟件功能。
現(xiàn)行的飼料生產(chǎn)標準分為綜合標準、方法標準、產(chǎn)品標準、原料標準、添加劑標準、其他相關標準和地方標準等類別,對飼料生產(chǎn)標準進行分類,有利于加強對標準的管理和使用。因此,對飼料生產(chǎn)標準的管理包括對標準分類的管理。
飼料生產(chǎn)標準查詢系統(tǒng)功能由標準查詢、標準維護和系統(tǒng)管理等三個主要模塊構成,功能結構如圖2所示。各模塊功能簡要描述如下:
①標準查詢。標準查詢是系統(tǒng)的核心功能,供Android客戶端使用。為了滿足不同用戶以及對信息需求程度的不同,系統(tǒng)提供三類查詢:標準快速查詢,對用戶輸入的單一查詢條件與標準名稱模糊匹配查詢;標準條件查詢,根據(jù)用戶輸入的多條件組合查詢;標準詳細查詢,對標準進行全文檢索查詢。
②標準維護。標準信息及其相關文件,只有上傳到服務器后,才能被查詢使用。本模塊用于對標準信息的維護以及標準文件的生成和上傳。
圖2 飼料生產(chǎn)標準查詢系統(tǒng)功能結構
③系統(tǒng)管理。為系統(tǒng)管理員提供的保證系統(tǒng)正常運行的功能模塊。為了保證系統(tǒng)安全性,需要對數(shù)據(jù)進行備份;只有對用戶授權后,用戶才能使用。
存儲結構是指存儲數(shù)據(jù)的邏輯結構,邏輯結構是以概念結構為基礎。本系統(tǒng)的概念結構包括“標準分類”和“標準”兩個實體,兩個實體間是“一對多”的聯(lián)系,即一個“標準分類”包含多個“標準”,一個“標準”只屬于一個“標準分類”。邏輯結構是把概念結構的實體及屬性轉(zhuǎn)換為具體DBMS所支持的數(shù)據(jù)模型。本系統(tǒng)DBMS選用SQL Server 2005,邏輯結構設計結果由兩個數(shù)據(jù)表構成,如圖3所示。
在圖3所示的存儲結構中,為了保證實體完整性,每個數(shù)據(jù)表設置一個“主關鍵字”字段,定義為Numeric類型的自動增長;為了保證參照完整性,“標準分類”和“標準”兩個實體間“一對多”聯(lián)系通過外鍵“FK_Classification_Standard”實現(xiàn),關聯(lián)字段是“標準分類代碼”?!皹藴省北碇行枰鎯ord和PDF兩類文件,Word文件是可編輯的飼料標準的原始文件,PDF文件是由Word文件生成供用戶查詢?yōu)g覽的文件。為了提高文件打開速度,文件存儲在磁盤上,“標準”表中僅存儲文件路徑。
在圖2所示的飼料生產(chǎn)標準查詢系統(tǒng)功能結構中,“標準查詢”模塊包括四類具體查詢,“標準條件查詢”是應用最多的查詢,其他查詢設計原理與此查詢類似,本文以此查詢?yōu)槔齺碚f明設計過程。系統(tǒng)在邏輯上分為Android客戶端、應用服務器和數(shù)據(jù)庫服務器等三層,用戶通過Android客戶端的瀏覽器輸入查詢條件,應用服務器生成業(yè)務邏輯并提交給數(shù)據(jù)庫服務器,數(shù)據(jù)庫服務器根據(jù)業(yè)務邏輯查詢匹配結果,查詢結果經(jīng)過應用服務器處理后返回到Android客戶端瀏覽器顯示。時序圖表示的查詢過程如圖4所示。
圖3 系統(tǒng)存儲結構
圖4 查詢過程時序圖
查詢模塊設計主要涉及以下兩項關鍵技術:
①查詢界面設計。Android用戶界面使用布局(LinearLayout、TableLayout、RelativeLayout等)定義,布局可以使用XML資源和Java程序兩種方式,本系統(tǒng)使用XML資源,并使用布局優(yōu)化(Layoutopt)來提高加載速度。查詢界面由條件輸入和結果顯示兩個界面構成,條件輸入界面通過Java Script來檢測輸入條件的正確性;結果顯示界面使用ListView控件來列表顯示多條查詢結果,ListView控件通過XML布局文件的findViewByID方法獲得,通過Dao方法提供數(shù)據(jù)。
②查詢結果本地化。為了使數(shù)據(jù)庫中查詢的結果在Android端重復使用,數(shù)據(jù)需要保存在Android端。SQLite是嵌入式的輕型數(shù)據(jù)庫,是存儲在單一磁盤文件中的完整關系結構型數(shù)據(jù)庫,占用資源非常低。Android系統(tǒng)包含了完整的SQLite,可以直接使用。SQLiteOpenHelper是封裝了數(shù)據(jù)庫的創(chuàng)建、打開和更新的抽象類,通過繼承這個類來完成數(shù)據(jù)庫的創(chuàng)建、打開及各種操作。
飼料生產(chǎn)標準存儲文件包括Word文件和PDF文件兩類,PDF文件用于用戶查詢時在Android屏幕的瀏覽器中顯示。Android原生系統(tǒng)中的Webview不支持直接打開PDF文檔,需要下載到本地Android端后再使用PDF閱讀器打開,下載到本地的PDF文件被閱讀后再無其他用處,缺陷是下載等待時間長且容易產(chǎn)生Android端垃圾,瀏覽器在線打開PDF文件閱讀可以避免這些缺陷。
Android的PDF在線閱讀目前廣泛使用的有兩種方法,一是使用Webview控件,通過pdf.js在服務器端和客戶端分別處理;二是,使用官方的simple PdfRendererBasic,打開PDF讀取器PdfRenderer,傳入指定頁碼,讀取內(nèi)容轉(zhuǎn)換成bitmap圖片設置到ImageView。這兩種方法的優(yōu)點是實現(xiàn)簡單,缺點是不能對PDF顯示進行多種控制。本系統(tǒng)使用開源類庫com.joanzapata.pdfview.PDFView,可以通過手勢滑動PDF文件,并對PDF文件進行放大縮小操作,閱讀PDF文件非常方便。具體實現(xiàn)包括以下兩步:
①在XML資源文件中定義布局,主要設置“android:layout_width”和“android:layout_height”兩個屬性 。 屬 性 值 在“match_parent”、“wrap_content”和“fill_parent”之間選擇其一?!癴ill_parent”強制性地使構件擴展,以填充布局單元內(nèi)盡可能多的空間;“wrap_content”強制性地使視圖擴展,以顯示全部內(nèi)容。Android2.2 中“match_parent”和“fill_parent”兩個參數(shù)意思一樣,match_parent更貼切。
②在Java文件中加載PDF文件并設置屬性。首先,指定文件名稱和文件路徑,需要判斷網(wǎng)絡連接,并檢查文件是否存在。然后,設置常用屬性:enableSwipe設置是否允許翻頁;swipeVertical(true)設置PDF文檔垂直翻頁,默認是左右滑動翻頁;pages設置PDF頁面過濾和排序;defaultPage設置起始顯示默認頁;showMinimap設置是否顯示縮放小地圖;on-PageChange設置頁面切換的頁碼顯示;enableDoubletap設置在放大狀態(tài)下,雙擊是否還原。最后,使用load()實現(xiàn)加載顯示。
Android平臺受到大多數(shù)用戶的青睞,具有開放性、豐富的硬件選擇和不受開發(fā)商限制等特點。針對Android將iOS和Windows Phone遠遠拋在后面的現(xiàn)狀,本系統(tǒng)基于Android平臺開發(fā),為生產(chǎn)企業(yè)和監(jiān)管部門提供快速的飼料工業(yè)生產(chǎn)標準查詢功能,具有廣闊的市場前景和應用價值。本文基于SQL Server 2005數(shù)據(jù)庫管理系統(tǒng)設計了存儲結構,開發(fā)人員可直接創(chuàng)建數(shù)據(jù)庫對象;采用模塊化思想設計了功能結構,使用查詢過程時序圖設計了查詢過程,并使用開源類庫設計了PDF文件在線瀏覽功能,解決了軟件開發(fā)關鍵性技術問題。本設計具有架構合理、安全可靠和易于維護等優(yōu)點,是先進可靠的系統(tǒng)解決方案。開發(fā)人員以此為基礎構建系統(tǒng),對提高系統(tǒng)的開發(fā)質(zhì)量和效率具有重要意義。