畢業(yè)論文-基于Android平臺的簡易的移動OA辦公室自動化系統(tǒng)設計_第1頁
畢業(yè)論文-基于Android平臺的簡易的移動OA辦公室自動化系統(tǒng)設計_第2頁
畢業(yè)論文-基于Android平臺的簡易的移動OA辦公室自動化系統(tǒng)設計_第3頁
畢業(yè)論文-基于Android平臺的簡易的移動OA辦公室自動化系統(tǒng)設計_第4頁
畢業(yè)論文-基于Android平臺的簡易的移動OA辦公室自動化系統(tǒng)設計_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

摘要開放性移動平臺Android強勢的異軍突起,不僅帶動了基于該平臺的移動終端特別是智能得到全面的開發(fā)和使用,而且收獲了良好的市場反響和開展前景,促進了相關領域的不斷創(chuàng)新和相關產業(yè)的快速開展。如今我們不得不成認已經跨入了移動時代,移動應用開發(fā)方興未艾,其中Android平臺上的應用程序開發(fā)以其獨特優(yōu)勢從中脫穎而出,成為了一個重要的熱門研究領域。由于Android系統(tǒng)的靈活性和穩(wěn)定性,越來越多的傳統(tǒng)的應用程序逐漸從計算機移植到上。眾所周知,傳統(tǒng)的OA〔OfficeAutomation辦公自動化〕已取得了長足的開展并漸趨成熟,如通訊錄、文件管理、公文處理、日程管理、通知等功能已得到完美實現,Android平臺的高效與智能結合OA系統(tǒng),將傳統(tǒng)的OA系統(tǒng)具備的功能移植到智能上,讓用戶能夠隨時隨地進行掌上移動辦公,對提高企業(yè)的辦公效率,減少不必要的消耗具有重要意義和實用價值。在本文中,運用Java相關技術,結合Android平臺的特點,對移動OA的實際需求和業(yè)務流程進行了分析,主要完成了一個基于Android平臺的移動OA的設計工作,重點探討了開發(fā)流程和詳細的實現方法,同時也闡述了實現移動OA系統(tǒng)所涉及的根底知識和關鍵技術。關鍵詞:Android;移動辦公;Java;開發(fā)方法;ServletABSTRACTWiththerapiddevelopmentofanopenmobileplatformAndroid,makingtheplatformbasedonmobileterminals,especiallysmartphoneshavealsobeenalotofdevelopmentanduse,andgetagoodmarketresponse,andpromotetheinnovationanddevelopmentofrelatedindustriesrelatedfields.Nowwehavetoadmitthathasenteredthemobileera,mobileapplicationdevelopmentintheascendant,wheretheapplicationontheAndroidplatformfromwhichtodevelopitsuniqueadvantagesemergedasanimportanthotresearchfield.DuetotheflexibilityandstabilityoftheAndroidsystem,moretraditionalapplicationsgraduallymigratefromthecomputertothephone.Asweallknow,thetraditionalOA(OfficeAutomationOfficeAutomation)hasmadegreatprogressandmature,suchascontacts,documentmanagement,documentprocessing,scheduling,notificationsandotherfunctionshavebeenperfectlyrealized,efficientandintelligentcombinationoftheAndroidplatformOAsystem,OAsystemwiththetraditionalfunctionsportedtosmartphones,allowinguserstocarryhandheldmobileofficeanywhere,toimproveofficeefficiencyandreduceunnecessaryconsumptionofgreatsignificanceandpracticalvalue.Inthispaper,theuseofJava-relatedtechnologies,combinedwiththecharacteristicsoftheAndroidplatformformobileOA’sactualneedsandbusinessprocessesareanalyzed,mainlytocompletethedesignofamobileOAbasedontheAndroidplatform,focusingonthedevelopmentprocessanddetailedimplementation,butalsodescribesthebasicknowledgeandkeytechnologiesinvolvedinmobileOAsystem.Keywords:Android;mobileoffice;Java;developmentmethodology;Servlet目錄1緒論 11.1研究背景和意義 11.2課題研究現狀 21.3研究內容與目標 31.4本章小結 32相關知識及開發(fā)環(huán)境搭建 42.1Android系統(tǒng)概述 4平臺簡介 4系統(tǒng)架構 4課題相關Android技術介紹 62.2tomcat及servlet簡介 9與JavaWeb 9技術簡介 102.3MySQL簡介 112.4開發(fā)環(huán)境搭建 12客戶端的搭建 12效勞器端的搭建 122.5本章小結 133系統(tǒng)分析與設計 143.1MVC設計模式簡介 143.2可行性分析 153.3系統(tǒng)總體架構設計 153.4系統(tǒng)功能設計 16系統(tǒng)功能模塊概述 16移動OA客戶端設計 17移動OA效勞器端設計 183.5數據庫相關設計 193.6本章小結 214移動OA系統(tǒng)的具體實現 224.1Android運行及開發(fā)環(huán)境 224.2關鍵技術的實現 224.2.1activity與intent 22解析簡介 23與效勞器交互 26文件上傳和下載 284.3本章小結 295已實現的功能模塊及其測試 305.1概述 305.2系統(tǒng)登錄 315.3任務審批 335.4客戶資料 355.5文件上傳及附件下載 365.6提醒通知 375.7本章小結 376總結與展望 38參考文獻 39翻譯局部 40外文原文 40中文譯文 52致謝 631緒論1.1研究背景和意義OA(OfficeAutomation,辦公自動化)系統(tǒng)的一般定義:在實現了網絡互聯(lián)的前提下,利用Internet或Intranet,在工作流理念指導下實現的滿足用戶方便快捷地共享企業(yè)內部信息需求,從而實現高效協(xié)同辦公的軟件系統(tǒng)。OA系統(tǒng)將先進的管理思想、管理模式與軟件技術、網絡技術等信息技術相結合,為用戶提供了低本錢、高效能的絕佳管理工具。移動通信技術和互聯(lián)網技術的高速開展、用戶需求的全面深化、綜合性能要求的逐漸提高,使得辦公自動化系統(tǒng)也在向多元化、大規(guī)模的方向開展,而且不斷地被賦予新的定義,不僅局限于傳統(tǒng)的PC機應用終端,辦公自動化系統(tǒng)的概念也在不斷地更新和延伸。當然,用戶希望更快捷和透徹地獲取企業(yè)內部的各種信息、動態(tài)、實時處理結果和運營情況,而且面對日益繁雜的業(yè)務數據和管理流程,對傳統(tǒng)的辦公自動化更提出了嚴峻的挑戰(zhàn)。通過PC機接入網絡來實現辦公的方式顯然已經力不從心,不僅限定了用戶的辦公地點和時間,而且也造成不必要的時間和精力的損耗,毫無疑問已難以適應現代企業(yè)的開展趨勢和辦公需求,打破這種效率瓶頸已迫在眉睫。所謂的智能〔smartphone〕,是如同PC一樣,運行在基于獨立、開放的操作系統(tǒng)和運行空間之上的移動設備,用戶可以根據需要隨心所欲地安裝使用和卸載諸如導航等的第三方效勞商發(fā)布的程序或開發(fā)的軟件,并能夠由移動通訊網絡來連接到無線網絡的這一類。隨著科學技術和社會經濟的開展,當前我國智能產業(yè)開展迅猛,據中國電子信息產業(yè)開展研究院預計,2021至2021年是我國智能更新?lián)Q代的頂峰期,在未來一段時期內,我國智能產業(yè)將繼續(xù)保持高速開展。圖1.1顯示了2021年至2021年全球智能操作系統(tǒng)市場份額的變化情況。圖1.1全球智能操作系統(tǒng)市場份額的變化情況Android系統(tǒng)是Google公司主導,并由OHA〔OpenHandsetAlliance,開放聯(lián)盟〕開發(fā)的一個操作系統(tǒng),它是由Google公司于2007年11月5日公開發(fā)布,運行在Linux內核之上的開源操作系統(tǒng)。最初它主要應用于設備,由于在設計之初就表現出了完全的開放性和強大的可擴展性,因此已經成為最為流行的嵌入式系統(tǒng)設備操作系統(tǒng)之一,應用于如上網本、機頂盒、全球定位設備、車載設備、電視機等之上。據有關資料顯示,時至2021年8月2日,Android已占據全球智能機市場48%的份額,而且在過去不久的幾年也保持著較高的市場占有率。由于Google在推出Android系統(tǒng)時果斷地開放源代碼,所以世界大多數生產商愿意追隨Google公司而生產Android系統(tǒng)智能,而且Android操作系統(tǒng)在各個方面表現出的綜合性能也非常優(yōu)秀,使得Android成為世界上具有巨大影響力的智能操作系統(tǒng)。歸功于近年來迅速開展的無線通信技術,使得基于Android平臺的移動終端已經融入到了人們日常生活和工作中的方方面面,促使各種移動應用程序如雨后春筍般涌現,這就使得將OA系統(tǒng)移植到Android智能并產生實際效用成為可能,將移動辦公應用程序安裝到Android智能上,將使OA脫離PC的束縛,這意味著用戶不必在固定的辦公地點和專門的PC設備上進行辦公,用戶可以在任何地點、任何時間實現辦理公務的設想,這不僅對于處置企業(yè)內發(fā)生的突發(fā)性事件具有重要影響和積極意義,而且在降低企業(yè)辦公消費支出的同時大幅度提高了企業(yè)的辦公效率,從而使企業(yè)的信息化水平有質的飛躍,由此增強了綜合競爭力。本文討論了在Android智能終端上實現移動OA系統(tǒng)的過程及所涉及的技術,在基于Android開發(fā)環(huán)境的根底上,運用軟件開發(fā)的相關方法,借助于面向對象的思想使用Java程序設計語言設計和實現一個簡易的移動OA系統(tǒng),詳細闡述了所實現的移動OA的設計和開發(fā)過程,對于進一步研究和完善移動OA具有一定參考價值。1.2課題研究現狀移動OA的出現并不是偶然的,而是社會文明和科學技術開展到一定階段的產物,是組織管理工作在移動時代充分利用信息化技術而實現自動化辦公以減少人在辦公過程中的不必要勞動。是利用移動通信技術延伸傳統(tǒng)的基于PC的OA的使用平臺,是為了滿足企業(yè)內部人員隨時保持靈通的信息交流而應運而生的。進入3G移動時代,移動辦公有了新的含義和延伸。新一代的移動OA,以專網和無線通訊網絡為依托,綜合運用如3G移動技術、Webservice等多種技術手段,涉及移動通訊、信息處理和計算機網絡等領域的前沿科技,從而該系統(tǒng)在平安性和交互能力方面的表現有了質的飛躍,可以為用戶提供一種平安完整、方便快捷的現代化移動辦公機制。就國內而言,得益于企業(yè)對信息化的持續(xù)重視,有很多企業(yè)已經部署了移動OA系統(tǒng)。但總體來說,辦公自動化最終實現效果大都達不到預期設想,根據我國當前移動OA實施和開展的實際效果和程度大致可以概括為以下三種情況:〔1〕擁有自己的Intranet網絡,但沒有使用相應的OA應用系統(tǒng)開展協(xié)同性質的工作,企業(yè)網絡在大局部時間中處在閑置狀態(tài),實質上仍然是個人辦公,企業(yè)的投入根本上沒有產生效益?!玻病硴碛凶约旱腎ntranet網絡,并且使用了應用系統(tǒng),內部人員可以通過應用系統(tǒng)在企業(yè)內部進行交流信息,可以實現有限的協(xié)同工作,但是由于應用系統(tǒng)和企業(yè)的業(yè)務流程結合得不夠緊密,產生的效益不明顯?!玻场硴碛凶约旱腎ntranet網絡,使用專門為企業(yè)業(yè)務流程定制的辦公自動化系統(tǒng),而且能較好地支持企業(yè)日常信息的共享和協(xié)同工作,在順暢地獲取外部信息的同時還可以通過Internet對外發(fā)布企業(yè)的信息,系統(tǒng)投入使用后產生了一定的效益[1]。上述三種情況中,移動辦公系統(tǒng)功能的實現、用戶推廣的程度均不夠,而且智能在其中實現的功能和扮演的角色都比擬單一,導致OA系統(tǒng)不能發(fā)揮應有的積極作用,而且還存在著諸多缺陷和問題,還在一定程度上增加了企業(yè)日常運營本錢[13]。隨著不斷推陳出新的通訊技術日趨全面和成熟,在科技開展和市場需求這兩大動力不斷地推動下,該領域中的技術研究組織和軟件開發(fā)公司肯定會加快研發(fā)的腳步,并以盡可能快的速度完善和改良移動OA,早日設計出更完美的移動OA并付諸實用[12]。1.3研究內容與目標本文的目標是采用面向對象的思想,基于Android平臺以及OA相關技術,綜合運用效勞器及數據庫知識,探討、研究實現一個靈活高效并易于進行功能性和結構性擴展的移動OA系統(tǒng),主要工作內容集中在該移動OA的客戶端和效勞器端的開發(fā)方法和流程,主要工作內容如下:簡單說明實現移動OA過程中運用到的Android知識,簡要介紹Android系統(tǒng)的總體框架,探討在開發(fā)移動辦公系統(tǒng)的過程中涉及的其他有關技術。通過對Android系統(tǒng)根底知識的了解和對Android軟件開發(fā)的理解,探索在windows系統(tǒng)環(huán)境下搭建移動OA開發(fā)的客戶端及效勞器端環(huán)境,最后,論述了設計和實現移動OA系統(tǒng)的關鍵技術和使用的工具。以傳統(tǒng)OA為參照,對移動OA系統(tǒng)進行分析和設計,由此設計出一個簡單的移動OA設計方案,借助于Android系統(tǒng)的優(yōu)異性能,實現一個簡易的基于Android移動平臺的OA系統(tǒng)。根據實際需求,分別實現各功能模塊,通過在模擬器上進行測試來驗證相關模塊的正確性和合理性。最終綜合測試系統(tǒng)確定是否實現預期要求。1.4本章小結本章主要分析了完成課題的實際背景和意義,論述了課題的研究及開展現狀,簡要討論了移動OA系統(tǒng)的特點,最后明確該移動OA系統(tǒng)的主要內容和最終目標。2相關知識及開發(fā)環(huán)境搭建2.1Android系統(tǒng)概述2.1.1Android平臺簡介Android一詞本義指“人形機器人〞,是Google公司發(fā)布的基于Linux內核且開放源碼的移動設備操作系統(tǒng),與諸如Symbian、iOS等在市場上或生存已久或具有巨大影響力的其他操作系統(tǒng)一樣,已經得到了大量的用戶支持。我們通常所說的Android平臺由Android操作系統(tǒng)、中間件、用戶界面和應用軟件組成,被認為是首個真正兼具開放性和完整性,且為移動終端量身定制、具備諸多其它平臺難以企及的優(yōu)點的系統(tǒng)應用軟件。運行于Android平臺之上的應用程序通過Java程序設計語言來進行開發(fā),這使得從接口到功能,都可以進行無窮無盡的改變,Java語言適合進行網絡應用開發(fā)的特性與生俱來,它不僅是很優(yōu)秀的編程語言,而且具有廣泛的應用根底和開發(fā)團隊,這非常有利于Android的開展和Android用戶群的壯大[2]。Google公司積極開展與軟、硬件開發(fā)商、相關設備生產廠商及電信運營商、其它利益相關行業(yè)或組織的深層次合作關系,企圖通過這種方式建立一個具備開放性和具有統(tǒng)一標準的智能軟件平臺,從而能在移動行業(yè)內形成開放的系統(tǒng)產業(yè)鏈。2.1.2Android系統(tǒng)架構圖2.1所表示的為Android系統(tǒng)框架結構的組成。圖2.1Android系統(tǒng)架構圖從圖2.1上可以看出,Android系統(tǒng)體系架構分為四層,分別是內核層〔LinuxKernel〕、系統(tǒng)運行庫層〔Libraries〕、應用框架層〔ApplicationFramework〕、應用層〔Application〕。下面分別作簡要介紹:〔1〕內核層〔LinuxKernel〕Android平臺的系統(tǒng)內核是基于增強版本的內核Linux2.6來提供核心系統(tǒng)效勞,主要有:平安、內存管理、進程管理、網絡協(xié)議堆棧、硬件驅動等。Linux內核作為連接硬件和軟件的抽象層,搭建起了軟件與硬件之間的橋梁,使得軟件開發(fā)者不必分散注意力在內核的具體底層實現工作上,可以全神貫注地投入到上層軟件的開發(fā)之中。而底層的如驅動的編寫和更新的工作那么由Google公司或是生產商來完成,除了支持Linux內核本身所支持的一些設備驅動外,它還提供了用于支持Android平臺的諸如AndroidBinder的設備驅動?!玻病矨ndroid運行時環(huán)境〔AndroidRuntime〕Android應用程序使用Java程序設計語言來開發(fā),但編譯和執(zhí)行卻不是用原有的J2ME來實現,只因Android自身帶有AndroidRuntime。AndroidRuntime由CoreLibraries〔即核心庫〕和DalvikVirtualMachine兩個核心庫組成。其中前者實現了Java編程語言核心庫的大局部功能,而后者那么是Android相對于Java虛擬機〔JVM〕而實現的虛擬機,與JVM所屬的堆棧結構機器〔stackmachine〕不同,Dalvik屬于存放器結構機器〔registermachine〕,依賴于Linux內核的一些功能,它具有在當下主流硬件架構下,易于與系統(tǒng)優(yōu)化與整合且所需的資源相對較少。Dalvik虛擬機不能直接執(zhí)行Java類,執(zhí)行的中間代碼是通過轉換工具將Java字節(jié)碼轉換為特有的dex〔DalvikExecutable〕格式〔dx是一套工具,可以將Java.class轉換成dex格式,一個dex文件通常會有多個.class〕。在同一個Android設備上可以同時運行多個應用程序,即虛擬機?!玻场澈瘮祹鞂印睱ibraries〕Android包含了一些根底的C/C++庫,它們可被Android系統(tǒng)的不同的組件使用。它們通過Android的應用程序框架〔applicationframework〕來提供相關效勞。此外,Android還提供一個硬件抽象層〔AndroidHardwareAbstractionLayer,AndroidHAL〕用于保護硬件提供商對其驅動程序的所有權?!玻础硲贸绦蚩蚣軐印睞pplicationFramework〕應用程序框架層是Android在編寫隨系統(tǒng)一起發(fā)布的核心應用時所使用的API框架,這個框架提供開放的開發(fā)平臺供開發(fā)人員訪問,因此開發(fā)人員同樣可以在遵循框架的開發(fā)原那么的前提下使用這些框架來開發(fā)自己的應用程序,以此簡化應用程序開發(fā)的架構設計。借助于Android提供的這個開放的開發(fā)平臺,開發(fā)人員能根據需要開發(fā)出標新立異的應用程序,支撐應用程序正常運行的是一系列的效勞和系統(tǒng),具體包括如下幾種:ViewSystem〔視圖系統(tǒng)〕——提供了豐富且可擴展的視圖組件,它們可以用于構建應用程序的視圖,包括列表〔lists〕、網格〔grids〕、文本框〔textboxes〕、按鈕(buttons),甚至是嵌入式的web瀏覽器〔webview〕。ContentProviders〔內容提供者〕——該效勞能訪問由其它應用程序所維護的數據,或向其他應用程序共享自己的數據資源。ResourceManager〔資源管理器〕——提供給用程序對非代碼資源訪問。NotificationManager〔通知管理器〕——使應用程序可以在系統(tǒng)狀態(tài)欄中顯示提示信息。ActivityManager〔活動管理器〕——用于管理應用程序生命周期,提供通用的導航回退功能?!玻怠硲贸绦驅印睞pplications〕這一層通常是指伴隨Android平臺一起發(fā)布的一系列核心應用程序,包括常用的智能必備的一些應用程序,而所有的這些應用程序都是由Java程序設計語言實現的。2.1.3課題相關Android技術介紹在Android應用開發(fā)中,Activity〔活動〕是所有程序中最常用的模塊之一,Android應用程序的跳轉都是通過Activity來實現的,應用程序中的每一個Activity都具有自己的生命周期,交由系統(tǒng)來實現統(tǒng)一管理,一般來說應用程序是無法改變Activity的生命周期的,只可以通過onSaveInstanceState來保存其當前的狀態(tài)[14]。Android的Activity生命周期如圖2.2所示。圖2.2Android活動的生命周期圖Activity是Android應用程序生命周期中最重要的局部之一。在系統(tǒng)中的所有Activity都由一個執(zhí)行當前任務的Activity堆棧來進行統(tǒng)一管理。如果一個Activity處于啟動狀態(tài),那么它將被置于堆棧頂,從暫?;蛲V範顟B(tài)轉化為運行狀態(tài),而之前運行的Activity那么失去焦點,被保存在堆棧中,不再處于前臺運行狀態(tài),直到新置于棧頂的Activity退出才有可能恢復前臺運行狀態(tài)。Activity有四種本質區(qū)別的狀態(tài):〔1〕當其在前臺運行〔即其在Activity當前任務的堆棧頂〕,即為活動〔running〕狀態(tài)〔或運行狀態(tài)〕?!玻病钞擜ctivity已失去焦點但是對用戶依然可見時即為暫停〔Paused〕狀態(tài)。此時該Activity依然保持活力,只是在堆棧中其他的Activity保存在該Activity之上,一個暫停的Activity仍然是處于活動狀態(tài)的,在系統(tǒng)內存極端低下時被強制殺死。〔3〕當一個Activity被另一個Activity所完全覆蓋時,它的狀態(tài)即為停止狀態(tài)〔Stopped〕,可是系統(tǒng)仍然會保存著它運行時的相關信息,但由于窗口被隱藏,用戶已不可見,當系統(tǒng)內存極端低下的時候,處于停止狀態(tài)的Activity將會被殺死?!玻础钞擜ctivity處于暫停狀態(tài)或者停止狀態(tài)時,系統(tǒng)可能會在必要時從系統(tǒng)內存中將該Activity去除,系統(tǒng)可能采用兩種方式之一來對該Activity進行終止,可能會使該Activity結束,或者直接殺死它的進程。如果需要將其再次恢復并顯示出來,系統(tǒng)會重新運行并加載之前終止它時所保存的狀態(tài)信息。在圖2.2中,Activity有三個關鍵的循環(huán):

〔1〕Activity的完整生命周期,從onCreate(Bundle)方法第一次調用開始到onDestroy()方法被調用結束。Activity在onCreate()方法中設置初始化所有的“全局〞狀態(tài),在onDestory()方法中釋放所有的資源。例如:Activity可以在onCreate()方法中創(chuàng)立運行于后臺的線程而效勞于Activity,而在onDestory()方法中停止該線程[21]。〔2〕Activity的可見生命周期,從onStart()方法被調用開始到onStop()方法被調用時結束。在此期間,Activity對用戶來說始終是可見的,但它可能未處于當前任務的堆棧頂〔即不可交互〕。在這個周期中可以通過前述兩個接口來獲取UI數據和資源等并顯示給用戶,Activity隨時可能會在可見狀態(tài)和隱藏狀態(tài)之間進行轉換,所以onStart()方法和onStop()方法都可能被任意屢次的調用執(zhí)行?!玻场矨ctivity的前臺生命周期,從onResume()方法被調用時開始到onPause()方法被調用時結束。對于一個Activity來說,它可以頻繁的調用onResume()方法和onPause()方法從而實現在resumed狀態(tài)和paused狀態(tài)之間實現切換,在此周期中該Activity始終處于當前任務堆棧中的頂端并可以與用戶進行交互。例如:當Android設備進入休眠狀態(tài)或是當前Activity調用了新的Activity,而且實現這些接口方法的都是屬于十分輕量級的代碼。

Activity的生命周期涉及下面列出的接口方法,開發(fā)者可以根據實際來重寫這些方法,從而在Activity生命周期的適當階段對其進行需要的管理和操作。例如,通常Activity通過重載onCreate()方法去進行初始化操作設置,通過重寫onPause()實現Activity狀態(tài)的保存、提交更改正的數據和設置,很多時候Activity也可能需要通過重寫onFreeze()接口方法恢復在onCreate(Bundle)里面保存的狀態(tài)和數據。Android中通過使用Intent〔意圖〕組件配合IntentFilter〔意圖過濾器〕來實現協(xié)助應用程序或各組件〔Activity、Service和BroadcastReceiver〕之間的交互或通信,Intent是對一個Android即將要執(zhí)行的Action及其涉及的相關數據的抽象性描述,通常將其作為參數來使用[15]。一般來說,Intent包含Action和Data兩個最根本的數據,前者用來指明要實施什么動作,后者一般是由一個URI確定的具體數據。除了包括Action和Data兩個最根本的數據元素外,Intent還包括Category(類別,指定將要執(zhí)行的action的其他一些額外的信息)、Type〔類別,顯式指定Intent的數據類型〕、Component〔組件,指定Intent的目標組件〕、Extras〔附加信息,其他所有附加信息的集合〕元素。Intent在應用程序或是各組件之間起著媒介作用,很好地完成了調用者與被調用者之間的松耦合的工作。至于Intent屬性的設置,可以在相關XML文件中定義,也可以通過調用Intent類的相關方法來設置和獲取,通常包括以下幾個方面:〔1〕Action,也就是要執(zhí)行的動作。SDK中定義了一些常用的如ACTION_MAIN、ACTION_CALL等的一系列標準的動作供開發(fā)者直接使用。當然,我們可以通過自定義動作〔注:需要加上包名作為前綴來使用自定義的動作〕,并可根據應用需要編寫相應的Activity來響應自定義動作?!玻病矰ata,一個URI確定的要操作的具體數據?!玻场砊ype〔數據類型〕,用于強制顯式指定Intent的數據類型〔MIME〕而不必根據數據來判定類型。〔4〕Category〔類別〕,用于指定將要執(zhí)行的Action的其他一些額外的附加信息。例如:假設類別指定為LAUNCHER_CATEGORY那么表示Intent的接收者應該在Launcher中作為頂級應用出現。

〔5〕component〔組件〕,指定Intent的目標組件的類名稱。通常Android會根據Intent中包含的其它如action、data/type等屬性的信息來查找匹配的目標組件。如果指定了component屬性,Intent將不再查找數據直接使用指定的組件同時所有其他屬性都將成為可選。〔6〕extras〔附加信息〕,是其它所有附加信息的集合。通常Android使用extras屬性來為component屬性提供擴展信息。Intent按表現形式可以分為兩大類:顯式的Intent〔ExplicitIntent〕和隱式的Intent〔IntentFilter〕,顯式的Intent在構造時就指定接收者,主要用于應用程序內部組件之間傳遞消息;隱式的Intent,Intent的發(fā)送者在構造時并不需要指定目標組件,因此用于多個應用程序之間的交互,但隱式的Intent需要對動作〔action〕、數據〔data〕、以及類別〔Type〕三要素進行匹配。隱式的Intent實現了請求和響應之間的松耦合。顯式的Intent由于目標組件已經指定,所以Android系統(tǒng)不需要再對它進行解析。Android系統(tǒng)通過解析隱式的Intent并將其映射給可以處理這個Intent的Activity、IntentReceiver或Service對象進行相應處理和響應[3]。下面再簡要介紹一下AndroidView的體系結構。應用程序的用戶界面屬于用戶接口〔UI,UserInterface〕的一種,Android的用戶界面是由一系列的視圖〔View〕和視圖群組〔ViewGroup〕對象所組合而成的。在Android中的View和ViewGroup對象都屬于andriod.view包且繼承自View基類,而View和ViewGroup又衍生了很多的子類。作為像按鈕之類的與用戶交互的widgets小部件的父類,View對象是Android平臺用戶界面的根本對象。作為提供各種布局結構的layouts的父類,ViewGroup具有多種布局方式且可以嵌套。view對象可視為一種數據結構,可用來存儲布局參數和界面特定矩形區(qū)域的顯示內容。View對象可以用來處理它所處區(qū)域的布局、測量、繪制、焦點改變、滾動和按鍵手勢等交互事件。一個view對象也可以作為用戶與系統(tǒng)的交互工具并接收交互事件[16][17]。Android平臺通過用View或ViewGroup對象來實現一個Android用戶界面,如圖2.3所示的層次結構樹可以根據實際需求改變其結構使其更簡單或者更復雜??梢灾苯邮褂肁ndroid系統(tǒng)現成的用戶界面控件或者不同經典布局,也可以自己定義。Activity調用setContentView〔Viewview〕方法并且傳遞一個根節(jié)點對象的引用來讓view層次結構實現的用戶界面在屏幕上合理顯示。Android系統(tǒng)解析用戶界面的配置信息,根據它們來進行測量繪制這個樹形的視圖結構。視圖結構的根節(jié)點要求其子節(jié)點進行自我繪制,而子節(jié)點會在父節(jié)點那里請求尺寸和位置,但最終還是由父節(jié)點決定子節(jié)點大小。Android按順序解析布局文件上的所有元素,從根元素開始,實例化view對象并且把他們繪制在實例化的父節(jié)點對象上。由于它們都是按順序被繪制的,如果某些view子對象超出父節(jié)點對象定義的范圍,那么后來繪制的view對象將會覆蓋原來的view對象而顯示[18]。圖2.3viwe和viewgroup的樹狀層次圖2.2tomcat及servlet簡介2.1.1tomcat與JavaWebTomcat是在Sun公司的JSWDK〔JavaServerWebDevelopmentKit,是Sun公司推出的小型Servlet/Jsp調試工具〕根底上開展起來的一個完全用Java語言編寫,免費而且開放源代碼的Web應用效勞器軟件。因為Tomcat具有技術先進、運行可靠、性能穩(wěn)定、完全免費等諸多優(yōu)秀特性,而且由于得到了廣闊的開放源代碼志愿者的大力支持,它可以和目前大局部的主流web效勞器〔如IIS和Apache效勞器〕一起工作,Tomcat已經深受Java應用開發(fā)者和喜愛者的推崇并已經被許多軟件開發(fā)廠商應用于許多軟件開發(fā)中并獲得了廣泛的關注。由于tomcat屬于輕量級應用效勞器,所以大多應用于開發(fā)中小型系統(tǒng)和并發(fā)訪問用戶數量有限的企業(yè)JavaWeb應用情形中。Tomcat除了能夠充當運行Servlet的優(yōu)秀容器外,還提供了作為web效勞器的一些使用功能,如Tomcat管理和控制平臺、平安域管理等。Java中有三種“官方〞技術可以用來開發(fā)web應用程序:Servlet、JavaServerPages〔JSP〕和JavaServerFaces〔JSF〕,其中Servlet是核心技術,JSP和JSF都是以它為根底的。在Servlet之后出現JSP,并沒有淘汰Servlet,而是在現代Javaweb應用程序中共用。圖2.4表示Tomcat與Servlet工作流程。

(1)客戶發(fā)出訪問特定Servlet的請求;(2)Servlet容器接收并解析接收到的客戶請求;(3)Servlet容器創(chuàng)立一個ServletRequest對象,將客戶請求及其他關于客戶的信息封裝到其中;(4)Servlet容器創(chuàng)立一個ServletResponse對象;(5)Servlet容器調用客戶請求的Servlet對象的service〔〕方法,并且把ServletRequest對象與ServletResponse對象作為參數傳給

service〔〕方法;(6)Servlet從ServletRequest對象獲取客戶請求信息;(7)Servlet利用ServletResponse對象來生成響應結果;(8)Servlet容器把Servlet生成的響應結果發(fā)送給客戶。圖2.4Tomcat與Servlet工作時序圖JavaWeb應用程序運行在Servlet容器之中,Servlet容器可以動態(tài)地調用JavaWeb應用中的所有Servlet組件。而且由SUN公司的Servlet標準對JavaWeb應用的定義可以看出,JavaWeb應用不僅可以在Tomcat中運行,還可以在其他符合Servlet標準的Servlet容器中運行,JavaWeb應用中可以包含Servlet組件、JSP組件、相關的Java類、靜態(tài)文檔、客戶端類Web.xml文件等內容。2.1.2servlet技術簡介Servlet根本上就是一個Java程序,是一種運行在支持Java語言的效勞器上并擴展JavaWeb效勞器功能的程序組件。一個Servlet應用程序由一個或多個Servlet組成。Servlet應用程序是在Servlet容器中運行的,它不能在自己里面運行。Servlet容器也叫Servlet引擎,它可以將用戶的請求傳遞給Servlet應用程序,并將Servlet應用程序的響應傳回給用戶。Servlet技術的核心是Servlet接口,所有的Servlet實例都必須直接或間接實現這個接口。這個接口定義了Servlet和Servlet容器之間的一個契約。每個Servlet類型只有一個實例,它由Servlet的所有請求共享。在Servlet接口中定義了5個方法,其中3個方法都由Servlet容器來調用,容器會在Servlet的生命周期的不同階段調用特定的方法:Init〔ServletConfigconfig〕方法:負責初始化Servlet對象。容器在創(chuàng)立好Servlet對象后,就會調用該方法;Service〔ServletRequestreq,ServletResponseres〕方法:負責響應客戶的請求,為客戶端提供相應效勞。當容器接收到客戶端要求訪問特定Servlet對象的請求時,就會調用此方法傳遞ServletRequest對象和ServletResponse對象;Destroy〔〕方法:當Servlet對象結束生命周期時,負責釋放Servlet對象占用的資源。圖2.5Servlet接口及其實現類的類框圖Servlet接口還定義了以下兩個返回Servlet的相關信息的方法。JavaWeb應用中的程序代碼可以訪問這兩個方法來獲得Servlet的配置信息及其他相關信息[4]。getServletConfig〔〕:返回一個ServletConfig對象,在該對象中包含了Servlet的初始化參數信息;getServletInfo〔〕:返回一個包含Servlet創(chuàng)立者、版本和版權等信息的字符串。2.3MySQL簡介MySQL是一個關系型數據庫管理系統(tǒng),由瑞典MySQL

AB公司開發(fā),后被Oracle公司接管。在Web應用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:關系數據庫管理系統(tǒng))應用軟件之一,MySQL效勞器既可以作為前臺效勞程序運行,也可以作為后臺效勞程序運行。它將紛繁復雜的數據分門別類地保存在不同的數據表中,而不是把全部的數據完全在混亂的保存一起,故此增加了數據操作的速度并提高了應用的靈活性。MySQL是一個多用戶、多線程的強壯的關系型數據庫效勞器,它使用最常用且標準化的SQL語言來訪問數據庫,而且由于其具有體積小、速度快、總體擁有本錢低,開放源碼等優(yōu)點,所以成為具有廣闊用戶支持和追隨,適用于開發(fā)中小型系統(tǒng)的優(yōu)秀數據庫軟件。2.4開發(fā)環(huán)境搭建2.4.1客戶端的搭建從官網:://java.sun/javase/downloads/index.jsp下載JDK1.7,從下載:///downloads下載適宜版本的Eclipse。JDK(JavaDevelopmentKit)是整個Java開發(fā)中的核心,它包括了Java運行環(huán)境,Java工具和Java根底的類庫,所以首先必須安裝JDK,點擊JDK安裝程序之后,需要配置系統(tǒng)環(huán)境變量。

(1)右鍵"我的電腦",依次選擇"屬性"—>"高級"—>"環(huán)境變量";(2)選擇系統(tǒng)變量"path",將JDK安裝bin目錄添加到后面,比方JDK安裝目錄為:C:\ProgramFiles\Java\jdk1.6.0_14\bin,那么將該值添加到path末尾,如果前一個系統(tǒng)變量值末尾沒有分號,注意在C:\ProgramFiles\Java\jdk1.6.0_14\bin前添加一個分號;(3)新建系統(tǒng)變量,命名為:classpath,依次將C:\ProgramFiles\Java\jdk1.6.0_14\lib\tools.jar;C:\ProgramFiles\Java\jdk1.6.0_14\lib\dt.jar;兩個值添加進去,確定;(4)翻開cmd.exe,輸入java-version,如果顯示出JDK的版本,那么表示安裝成功。Eclipse直接解壓之后就可以使用。Eclipse解壓之后,需要下載用到的相關插件才能進行應用相關Android開發(fā),可以通過下載安裝和在線安裝兩種方式。如果之前下載的Eclipse是標準版的,不含開發(fā)Android工程需要的插件,最簡單的安裝方法是在線安裝。至于AndroidSDK和JDK可以直接下載安裝,也可以在Eclipse中進行在線安裝〔其它使用到的插件也可用相同方法來安裝〕。(1)啟動Eclipse,選擇help—>installnewsoftware;(2)選擇AvailableSoftwaresites,找到開發(fā)相應的如的IP地址或自己輸入相關插件下載的地址,選擇將其enable使其可用;(3)然后在地址欄里選擇該IP地址,等待片刻;(4)選擇需要安裝的插件,然后進行下載安裝即可。安裝完畢之后會提示重新啟動Eclipse。之后在Eclipse中創(chuàng)立所需版本的虛擬機以便于用于開發(fā)過程中調試程序。2.4.2效勞器端的搭建MyEclipse企業(yè)級工作平臺〔MyEclipseEnterpriseWorkbench,簡稱MyEclipse〕是對EclipseIDE的擴展,它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調試、測試和發(fā)布功能,利用它我們可以在數據庫和JavaEE的開發(fā)、發(fā)布以及應用程序效勞器的整合方面極大的提高工作效率。MyEclipse是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclipse插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產品的支持十分不錯??梢哉fMyEclipse是幾乎囊括了目前所有主流開源產品的專屬eclipse開發(fā)工具。MyEclipse的安裝:從官網上下載1.0版本的MyEclipse直接解壓安裝即可。對于安裝版的tomcat直接進行安裝(一些設置都采用默認設置),安裝好tomcat之后,在開始菜單里選擇"monitortomcat",啟動tomcat,在瀏覽器里輸入://localhost:8080,如果顯示出tomcat的歡送界面,那么表示安裝成功。下載并安裝MySQL后在Myeclipse中進行相關配置以便整合MyEclipse+Tomcat+MySQL三個工具來進行效勞器端的開發(fā)。2.5本章小結本章首先對開發(fā)中所涉及的知識進行了簡單的論述,介紹了開發(fā)所用到的工具,接著對開發(fā)環(huán)境的搭建進行了描述,包括客戶端和效勞器端。得到了一個完整的開發(fā)環(huán)境,為下一步進行程序設計奠定了根底。3系統(tǒng)分析與設計3.1MVC設計模式簡介MVC是Model-View-Controller的縮寫,即模型-視圖-控制器的英文縮寫。MVC是XeroxPARC在20世紀80年代為編程語言Smalltalk-80創(chuàng)造的一種軟件設計模式,至今已被廣泛認同和使用,最近幾年被推薦為Sun公司JavaWeb平臺的設計模式并且受到越來越多的Web開發(fā)者歡送,它通過將業(yè)務邏輯、數據、視圖別離以減少耦合來協(xié)同工作。MVC強制性地把應用程序的數據顯示、數據處理和流程控制分開。MVC設計創(chuàng)立Web應用程序的模式:〔1〕Model〔模型〕表示應用程序核心〔比方數據庫記錄列表〕?!玻病砎iew〔視圖〕顯示數據〔數據庫記錄〕?!玻场矯ontroller〔控制器〕處理輸入〔寫入數據庫記錄〕。Model〔模型〕是應用程序中用于處理應用程序數據邏輯的局部。通常模型對象負責在數據庫中存取數據。View〔視圖〕是應用程序中處理數據顯示的局部,通常視圖是依據模型數據創(chuàng)立的。Controller〔控制器〕是應用程序中處理用戶交互的局部。通??刂破髫撠煆囊晥D讀取數據,控制用戶輸入,并向模型發(fā)送數據。MVC分層有助于管理復雜的應用程序,因為可以在一個時間內專門關注一個方面。例如,可以在不依賴業(yè)務邏輯的情況下專注于視圖設計。同時也讓應用程序的測試更加容易。MVC分層同時也簡化了分組開發(fā),不同的開發(fā)人員可同時分別開發(fā)視圖、控制器邏輯和業(yè)務邏輯[8]。圖3.1MVC模式圖采用MVC軟件設計模式來設計軟件具有耦合性低、重用性高、生命周期本錢低、部署快、可維護性高、有利軟件工程化管理等優(yōu)點。這些優(yōu)點無疑使得軟件設計更加事半功倍,而且使軟件開發(fā)過程更加靈活快捷[19]??傊琈VC設計思想將一個應用分成了Model〔模型〕、View〔視圖〕Control〔控制〕三個獨立局部。按這種模式設計程序,多個視圖可以對應一個模型,模型返回的數據與顯示邏輯別離,使得程序結構清晰,易于維護[5]。3.2可行性分析一般而言,軟件工程工程是復雜的涉及多方面人力和物質資源的工程,而且過程大多是不可逆的,必須有具體的解決方案,做詳細的可行性分析,否那么容易造成不必要的損失和浪費??尚行苑治隹梢跃C合現有資源,提高預見性,為工程決策提供強有力的依據。技術條件方面:本文實現的移動OA系統(tǒng)運用Java語言,結合Android程序設計,以技術先進、性能穩(wěn)定,而且免費的Tomcat作為效勞器端,以體積小、速度快、總體擁有本錢低,尤其是開放源碼的MySQL作為數據庫,綜合了Javaweb應用技術和Android開發(fā)的相關技術來實現,它們都具有良好的性能和成熟的技術,使得本文討論的移動OA的實現具有很全面的技術支持。市場因素方面:本文實現的基于Android平臺的移動OA,可將傳統(tǒng)OA所具有的功能移植到智能上實現,不僅可以不受時間和空間的限制而隨時隨地辦公,而且操作方便靈活,可以滿足用戶的各種效勞需求,因此具有巨大的市場潛力,具有市場可行性。操作可行性:Android操作系統(tǒng)作為一款成熟而優(yōu)秀的操作系統(tǒng),具有良好的用戶體驗和廣泛的市場根底,不管從用戶還是開發(fā)商的角度都具有很強的可操作性[20]。經濟可行性:雖然該系統(tǒng)可實現諸多的功能模塊,但正如前文所述,所采用的Java編程語言具有面向對象、解釋型、分布式、可靠、平安、平臺獨立等特點[6]。使用技術先進、性能穩(wěn)定,而且免費的Tomcat作為效勞器。開放源碼的MySQL作為數據庫,所以可以最大程度的節(jié)約本錢,故具有良好的經濟可行性。綜上所述,本次開發(fā)的移動OA從結構到功能都具有良好的可維護性,而且易于改變和添加子功能模塊,本文目前涉及到的幾個功能模塊只是OA系統(tǒng)中較常用的幾個模塊,在后期可以添加更多的模塊,本文在設計的時候考慮到了整個系統(tǒng)的可擴展性。3.3系統(tǒng)總體架構設計本文采用MVC模型來對系統(tǒng)進行總體設計,系統(tǒng)中將Tomcat部署為效勞器,利用Javaweb技術與客戶端進行連接和交互,具有良好的可擴展性可移植性,通過相應的接口或解析技術進行數據和信息的耦合處理,將傳統(tǒng)的“任務審批〞、“客戶資料共享〞、“提醒通知〞等功能從PC應用擴展到智能上,實現方便快捷的移動辦公,大幅提高企業(yè)的辦公效率。系統(tǒng)總體框架如圖3.2所示:圖3.2系統(tǒng)框架圖3.4系統(tǒng)功能設計3.4.1系統(tǒng)功能模塊概述前已述及,本文實現的移動OA系統(tǒng)主要由效勞器端和智能客戶端組成。客戶端的主要功能為提供用戶交互界面,提供表現層的處理功能。而效勞器端的主要功能為實現數據的后臺處理,提供數據的交換、效勞處理功能。圖3.3系統(tǒng)實現時序圖移動OA客戶端設計與傳統(tǒng)的OA系統(tǒng)不同,移動OA客戶端利用了移動通信技術,主要實現如圖3.4所示的幾大主要功能??蓪崿F不同權限的用戶的隨時隨地的需求,提高工作效率,減少不必要的人力和物力的浪費。本文初步設計的移動OA客戶端功能架構如下圖:移動OA客戶端移動OA客戶端公文管理工作流管理通訊錄郵件管理通知公告輔助管理圖3.4移動OA客戶端功能架構圖〔1〕公文管理模塊該模塊主要實現公文流轉的管理功能,即辦理公文的流轉、審批和發(fā)送。主要子模塊有公文申請、公文狀態(tài)查詢和公文審批等。該模塊利用效勞器端的工作流引擎實現公文的自動化處理,公文管理流程圖如圖3.5所示。公文處理公文處理閱讀公文處理公文附件處理部門人員選擇并且發(fā)送公文流轉處理公文督辦處理附件上傳附件上傳公文發(fā)送部門人員選擇公文審批新建公文圖3.5公文管理流程圖〔2〕工作流轉管理模塊該模塊主要是實現用戶〔如工作人員〕工作方案的上報,以及具有相應權限的用戶〔如領導〕對工作方案安排的審批及其它操作。當工作人員在外出差或因故未能及時到公司時,可以按照一定的標準擬定未來一段時間的工作方案或實施方案,上傳至由領導審批。同理,當領導無法在固定時間和空間進行辦公時,也可通過登錄該系統(tǒng)并審批員工提交的工作請示并選擇部門及相關工作人員發(fā)送。該模塊還提供了各種附件處理及交互功能?!玻场惩ㄓ嶄浤K該模塊實現按照公司部門組織結構查詢、編輯、修改和刪除相關聯(lián)系人的各項資料,使用戶可快速協(xié)調工作方案和快速聯(lián)系相關人員。〔4〕郵件管理該功能模塊實現在智能上實現郵件撰寫、發(fā)送及接收。通過添加多郵箱地址實現郵件群發(fā)。〔5〕通知公告該功能模塊主要實現接收通知或提醒功能。企業(yè)管理層可以通過效勞器端來給所有員工或某特定員工發(fā)送企業(yè)最新動態(tài)。如企業(yè)調整方案、企業(yè)經營狀況,或對員工工作進度進行提醒?!玻丁齿o助管理該功能模塊主要實現綜合管理的功能,通過該模塊,用戶可以使用OA系統(tǒng)客戶端進行各種申請、匯報及批閱〔需權限〕。方便加班、請假、培訓、出差、合同審批等申請工作的高效率進行。3.4.3移動OA效勞器端設計移動OA效勞器端主要負責“根底效勞支撐〞、“終端訪問管理〞、“數據庫連接〞、“系統(tǒng)管理〞、“接口配置〞等工作,效勞器端系統(tǒng)以頁面分析技術或數據協(xié)議接口與內部系統(tǒng)相連接,進行數據的交互和通信,系統(tǒng)初步設計主要功能架構如圖3.6所示。根底效勞支撐根底效勞支撐移動OA效勞器端終端訪問管理數據庫管理系統(tǒng)管理接口配置圖3.6移動OA效勞器功能架構圖〔1〕根底效勞支撐該模塊主要實現“文件下載效勞〞、“數據推送效勞〞、“文件解析效勞〞、“業(yè)務橋接效勞〞等功能來支撐整個系統(tǒng)運行。其中“文件下載效勞〞實現與效勞器的數據處理和交換;“數據推送效勞〞將客戶端請求數據推送到客戶端,實現OA系統(tǒng)客戶端和內部效勞器間的數據交換;“文件解析效勞〞主要負責將常用的文檔解析成智能終端可識別和處理的數據流格式,以利于傳輸;“業(yè)務橋接效勞〞預留空間而作為后期系統(tǒng)的擴展,以實現將幾個不同的應用系統(tǒng)簡單的橋接在同一效勞器平臺上,便于統(tǒng)一的數據處理?!玻病辰K端訪問管理主要實現終端訪問的許可效勞和權限控制,只有得到許可、獲得權限的用戶才允許訪問OA效勞器,同時對傳入的數據進行處理和認證。〔3〕數據庫管理該模塊主要負責OA系統(tǒng)與數據庫的交互,連接訪問數據庫并將客戶端傳入的且已經過處理的數據保存至數據庫,或將需要的數據從數據庫中取出,準備發(fā)送到客戶端等所需的對數據庫諸如“增〞、“刪〞、“改〞、“查〞的操作并為系統(tǒng)效勞?!玻础诚到y(tǒng)管理主要實現“用戶管理〞、“參數配置〞、“接入管理〞、“日志管理〞、“運行監(jiān)管〞等功能。其中,“用戶管理〞配置接入系統(tǒng)的用戶的詳細信息;“參數配置〞為效勞器運行設置根本的諸如是否記錄運行日志、開機后效勞器是否自動運行等參數;“接入管理〞用于無線網絡接入效勞的配置;“日志管理〞負責系統(tǒng)運行日志數據的記錄、查看及管理;通過“運行監(jiān)管〞可查看系統(tǒng)的運行狀態(tài)。〔5〕接口配置實現OA效勞器的配置和管理,或者其它管理系統(tǒng)如“郵件接口〞等的通信接口的配置和管理。3.5數據庫相關設計智能客戶端向效勞器發(fā)送數據請求,效勞器接受到數據請求后在數據庫中進行相應的數據可操作,將得到的數據返回到客戶端。本文實現的OA系統(tǒng)以MySQL作為數據庫,下面簡要的列出建立數據庫及數據表的SQL語句及數據表。createdatabasemy_db;usemy_db;createtableusers(idintAUTO_INCREMENTprimarykey,accountvarchar(45)notnull,passwordvarchar(45)notnull,namevarchar(45)notnull,permissionintnotnulldefault0,remarkvarchar(128)null);usemy_db;insertintousersvalues('1','1','123','admin','1','部門經理');insertintousersvalues('2','2','123','employer','0','員工');insertintotasksvalues('1','畢設','employer1','admin1','0','加快進度');insertintotasksvalues('2','編程','employer2','admin2','0','注重方法');insertintotasksvalues('3','論文','employer3','admin3','0','拒絕抄襲');insertintotasksvalues('4','辯論','employer','admin','0','軟件演示');表3.1登錄信息表序號字段名稱中文說明數據類型大小是否為空描述1Id員工id號Int默認Notnull主鍵、自動增長id號2Account員工賬號Varchar12Notnull具備唯一性3Password員工密碼Varchar16Notnull密碼4Name員工姓名Varchar12Notnull5Permission員工權限Varchar11Notnull默認值是0,即普通員工6Remark備注信息Text默認Null表3.2任務信息表序號字段名稱中文說明數據類型大小是否為空描述1Id任務idInt默認Notnull主鍵、自動增長2Name任務名稱Varchar12Notnull3Applyer任務執(zhí)行人Varchar12Notnull4Examer任務審批人Varchar12Notnull5Station任務狀態(tài)Int默認Notnull默認值是0,即未審批6Remark任務備注Varchar128Null表3.3通訊錄信息表序號字段名稱中文說明數據類型大小是否為空描述1Id通訊錄idInt默認Notnull主鍵,自動增長2Department部門名稱Varchar20Notnull3Name員工姓名Varchar12Notnull4Number號碼Int默認Notnull表3.4通知信息表序號字段名稱中文說明數據類型大小是否為空描述1Id通知idInt默認Notnull主鍵、自動增長2Title通知標題Varchar200Notnull3Content通知正文Text默認Null3.6本章小結本章完成了對基于Android平臺的移動OA的系統(tǒng)分析與設計,主要內容包括系統(tǒng)總體架構設計、可行性分析、系統(tǒng)功能設計,也簡單探討了數據庫簡要設計,為下一章基于Android平臺的移動OA系統(tǒng)的實現奠定了根底。4移動OA系統(tǒng)的具體實現4.1Android運行及開發(fā)環(huán)境2.4節(jié)已經詳細論述過開發(fā)環(huán)境的搭建,在系統(tǒng)環(huán)境為windows7的前提下要進行Java相關開發(fā)及運行Java程序語言編寫的代碼,首先必須安裝windows平臺的JDK。JDK(JavaDevelopmentKit)是整個Java開發(fā)的核心和根底,只有在安裝了與PC平臺兼容的JDK的前提下才能安裝其他擴展開發(fā)軟件,從而進行基于Java語言程序的編譯和運行。開發(fā)環(huán)境如下:系統(tǒng)環(huán)境:windows7開發(fā)語言:Java開發(fā)平臺:2.2版本以上Android系統(tǒng)開發(fā)工具:Eclipse〔+ADT+SDK〕+MyEclipse+Tomcat+MySQL4.2關鍵技術的實現4.2.1activity與intent在2.1.3節(jié)已討論過activity和intent的相關知識,android應用程序開發(fā)中,從一個Activity〔界面〕跳轉到另一個Activity時,需要使用到Intent來啟動Activity[10]。在Intent使用時,分為顯式調用和隱式調用2類,顯式調用就是直接調用另一個Activity的class類,隱式調用需要通過調用另一個Activity的action來啟動另一個Activity,詳細如下:Intent在android中的定義為:publicIntent(ContextpackageContext,Class<?>cls);〔1〕顯式調用一般直接調用Activity的Class類例如Activity1調用Activity2,代碼如下:Intentintent=newIntent(this,Activity2.class);startActivity(intent);〔2〕隱式調用Activity1隱式調用Activity2時需要在AndroidManifest.xml文件中配置Activity2的action和category,而且需要添加下面作為配置信息的代碼到Activity2的定義中。<intent-filter><actionandroid:name="myaction2"/><categoryandroid:name="ent.category.DEFAULT"/><categoryandroid:name="mycategory"/></intent-filter>接著同樣使用intent來啟動Activity,代碼如下:Intentintent=newIntent("myaction2");startActivity(intent);這樣就可以啟動Activity2在使用intent隱式調用Activity時會遇到多個Activity的intent-filter中的action和category相同時,這時android會先彈出一個選擇界面的窗口,顯式要啟動的Activity列表,根據用戶的選擇來啟動Activity,如Activity2和Activity3的action和category相同<Activityandroid:name=".Activity2"><intent-filter><actionandroid:name="myaction2"/><categoryandroid:name="ent.category.DEFAULT"/><categoryandroid:name="myCategory"/></intent-filter></Activity><Activityandroid:name=".Activity3"><intent-filter><actionandroid:name="myaction2"/><categoryandroid:name="ent.category.DEFAULT"/><categoryandroid:name="myCategory"/></intent-filter></Activity>啟動Activity代碼如下:Intentintent=new("myaction2");intent.addCategory("myCategory");startActivity(intent);這時就會彈出Activity的選擇窗口,選擇啟動activity2還是activity3。4.2.2XML解析簡介XML(eXtensibleMarkupLanguage,可擴展標記語言)是由WorldWideWeb聯(lián)盟(W3C)定義的元語言,即一種關于語言的語言。通常所說的XML文件的解析是指把代表XML文檔的一個無結構的字符序列轉換為滿足XML語法的結構化組件的過程。對于Android移動設備而言,由于其系統(tǒng)和空間資源有限,所以開發(fā)人員必須選擇適宜的XML解析技術,才可能最有效地使用有限的資源,從而到達節(jié)省時間和空間目的[7]。根據從XML中獲取數據的難易性,性能和最終所得到的數據模型的異同,XML解析技術大致可分為以下四類:〔1〕面向文檔的流式解析〔2〕面向文檔的對象式解析〔3〕面向文檔的指針式解析〔4〕面向應用的對象式解析這四類解析技術分別處于不同的抽象層次,適用于不同的應用場景,針對具體的應用需求,選擇適宜的解析技術,往往能夠減少內存消耗,縮短處理時間,更方便快捷地獲取數據,提高應用系統(tǒng)的整體性能?!玻薄趁嫦蛭臋n的流式解析流式解析是解析器順序讀取XML文檔,將捕獲的各種事件,如元素開始和元素結束等,都交由程序處理。流式解析又分為兩種解析方式:推式解析(SAX:SimpleAPIforXML);拉式解析(StAX:StreamingAPIforXML)。這兩種方式的主要區(qū)別在于是由解析器還是應用程序控制讀循環(huán)(讀入文件的循環(huán))。推式解析(SAX)SAX是基于事件驅動的,即SAX解析器在讀取XML文檔的過程中生成一個事件流,并且對于每個事件都通過回調事件處理程序中相應的方法來進行處理。圖4.1表示了一個Xml文件及其對應的文件流格式?!沧ⅲ喝缦聢D,回車換行也被解析成了一個字符?!硤D4.1XML文件及其對應的文件流格式拉式解析(StAX)在這種解析方式中,應用程序控制著讀循環(huán)。反復調用解析器獲得下一個事件,直到文檔結束。StAX針對同樣的XML文檔所獲得事件類型和SAX根本相同?!玻病趁嫦蛭臋n的對象式解析

DOM(DocumentObjectModel)是用與平臺和語言無關的方式對XML文檔進行建模的官方W3C標準。DOM的層次化對象模型是一個樹形結構,它的優(yōu)點在于可以隨機訪問,但需要消耗大量的內存[9]。

圖4.2表示了Xml文件與其Dom樹的對應關系。圖4.2Xml文件與其Dom樹的對應關系〔3〕面向文檔的指針式解析面向文檔的流式解析效率較高,但易用性差,而對象式解析易用性強,卻效率較低。這兩種方式都是提取式解析〔extractiveparsing〕的方式。DOM并不支持增量更新。為了解決諸多缺點和問題,提出了指針式解析技術,即VTD-XML〔一種面向文檔的指針式解析〕。VTD是一個64bits定長的數值類型,記錄了每個元素的起始位置〔offset〕,長度〔length〕,深度〔depth〕以及令牌〔元素標簽〕的類型〔type〕等信息。如圖4.3,表示了VTD每個元素的位置及類型信息,對Xml的所有操作都是基于這個數據結構。

圖4.3VDT數據結構圖4.4列出了VTD目前所支持的所有元素的類型〔12種〕:

圖4.4VTD目前所支持的所有元素的類型查詢與更新:如果需要提取XML內容,就查找VTD數組,利用VTD記錄中的位置等信息在原始比特數組上進行解碼并返回字符串。

圖4.5是三種主要的XML解析的相關功能及性能比擬。VTD-XML解析xml通常需要經過以下幾步:1〕以一個byte數組開始〔存放xml〕;2〕利用VTDGen進行解析;3〕利用VTDNav進行導航定位;4〕節(jié)點遍歷使用Autopilot;5〕利用Xpath進行節(jié)點選擇6〕增量更新使用XMLModifier

。圖4.5三種主要的XML解析的相關功能及性能比擬〔4〕面向應用的對象式解析;前面所談到的三種解析技術都是面向文檔的,但有很多應用程序僅僅將XML作為數據交換的媒介,它們更關心的是文檔數據本身,因而面向應用的對象式解析技術更適用。面向應用的對象式解析技術又稱為為XML數據綁定,指將數據從一些存儲媒介(如XML文檔、文本文件和數據庫)中取出,并通過應用程序來表示這些數據。圖4.6面向應用的對象式解析4.2.3與效勞器交互Android與效勞器通常采用或Socket通信方式進行交互,而通信方式又可細分為get和post兩種方式。本文實現的Android客戶端與效勞器的交互采用的通信方式。Web是網絡上使用最廣泛的分布式應用架構,旨在共享分布在網絡上的各個Web效勞器中的所有互相鏈接的信息。它采用客戶端/效勞器通信模式,客戶端與效勞器之間用協(xié)議通信。超文本傳輸協(xié)議(,HypertextTransferProtocol),規(guī)定了Web的根本運作過程,以及客戶端與Web效勞器之間的通信細節(jié)。協(xié)議建立在TCP/IP協(xié)議的根底上,使用可靠的TCP連接,默認端口號為80.,客戶端與效勞器端之間的一次信息交換過程:〔1〕客戶端與效勞器建立TCP連接〔2〕客戶端發(fā)送請求〔3〕效勞器端返回相應的響應〔4〕客戶端與效勞器端之間的TCP連接關閉

請求可以使用多種請求方式,主要有以下幾種:GET:最常見的請求方式,客戶端程序通過這種方式訪問效勞器上的一個文檔,并由效勞器發(fā)送給客戶端程序;POST:客戶端程序可以通過這種方式發(fā)送大量信息給效勞器。在請求中除了包含要訪問的文檔的URI,還包括大量的請求正文,在這些請求正文中通常會包含HTML表單數據;HEAD:用于在客戶端和效勞器之間交流一些內部數據,效勞器將不會返回具體的文檔;

PUT:客戶端程序通過這種方式把文檔上傳給效勞器;DELETE:客戶端通過這種方式來刪除遠程效勞器上的某個文檔;圖4.7客戶端與效勞器交互流程圖4.2.4文件上傳和下載實現Android平臺的文件上傳有兩種方式,分別是通過模擬web上傳,或是利用Socket上傳。由于Socket方式基于UDP或TCP協(xié)議,必須嚴格按照TCP協(xié)議來組織上傳的數據流,因而很容易會造成長時間等待的狀況或是使系統(tǒng)產生各種異常[11]。假設是用UDP協(xié)議來傳送,那么容易造成數據的喪失。本文使用基于協(xié)議的第一種方式來實現文件的上傳。當然,也要先把上傳的文件按照協(xié)議的格式封裝〔該方式不支持斷點續(xù)傳功能,因此超過一定大小的文件傳輸不推薦使用,而一般使用Socket方式〕。Android平臺的文件下載通??刹捎脜f(xié)議而直接從效勞器下載的方式或是調用效勞器中WebService的方式,WebService是一種基于SOAP協(xié)議的遠程調用標準。通過WebService可以將不同操作系統(tǒng)平臺,不同語言、不同技術整合到一起。在AndroidSDK中并沒有提供調用WebService的庫,因此,需要使用第三方類庫〔KSOAP2,開源且易于參加增強特性〕來調用WebService。圖4.8SOAP調用示意圖分為七個步驟來調用WebService方法:〔1〕實例化SoapObject對象,指定webService的命名空間〔從相關WSDL文檔中可以查看命名空間〕以及調用方法名稱〔2〕如果方法有參數的話,設置調用方法參數request.addProperty("參數名稱","參數值")〔3〕設置SOAP請求信息(參數局部為SOAP協(xié)議版本號,必須與你要調用的webService中版本號一致)//獲得序列化的EnvelopeSoapSerializationEnvelopeenvelope=new

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論