版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、廣東電網(wǎng)公司企業(yè)級(jí)資產(chǎn)管理系統(tǒng) 概要設(shè)計(jì)說(shuō)明書(shū) 廣東電網(wǎng)公司 深圳市康拓普信息技術(shù)有限公司 二零一零年六月 修訂記錄 版本版本修訂說(shuō)明修訂說(shuō)明作者作者審核審核審核日期審核日期 v1.0概要設(shè)計(jì)說(shuō)明書(shū) 許久歌、夏成文、王楊、 單俊、柯庭、肖威、李 壽榮 所有權(quán)聲明: 深圳市康拓普信息技術(shù)有限公司 版權(quán)所有 不得復(fù)制 copyright 2009 by shenzhen comtop information technology co., ltd. 目 錄 1系統(tǒng)概述系統(tǒng)概述 .1 1.1名詞解釋.1 1.2系統(tǒng)的上下文聯(lián)系.2 1.3系統(tǒng)的物理部署結(jié)構(gòu).3 1.4系統(tǒng)的技術(shù)體系結(jié)構(gòu).4 1.5系
2、統(tǒng)的功能體系結(jié)構(gòu).5 1.6子系統(tǒng)概述.5 1.7系統(tǒng)主要場(chǎng)景描述.8 1.7.1新增場(chǎng)景.8 1.7.2查詢場(chǎng)景.9 1.8關(guān)鍵的設(shè)計(jì)概念.10 1.8.1系統(tǒng)采用技術(shù)簡(jiǎn)介.10 1.8.2系統(tǒng)中的 j2ee 應(yīng)用模式 .19 1.8.3系統(tǒng)應(yīng)用的字符編碼.21 1.8.4表單驗(yàn)證.24 1.8.5工作流應(yīng)用開(kāi)發(fā).24 1.8.6系統(tǒng)主要設(shè)計(jì)模式.28 2系統(tǒng)出錯(cuò)處理設(shè)計(jì)系統(tǒng)出錯(cuò)處理設(shè)計(jì) .35 2.1后臺(tái)處理機(jī)制.35 2.2頁(yè)面端處理機(jī)制.36 3權(quán)限驗(yàn)證機(jī)制權(quán)限驗(yàn)證機(jī)制 .37 4子系統(tǒng)的說(shuō)明子系統(tǒng)的說(shuō)明 .37 4.1項(xiàng)目管理.37 4.1.1前期與立項(xiàng)說(shuō)明.37 4.1.2項(xiàng)目進(jìn)度
3、管理說(shuō)明.40 4.1.3服務(wù)確認(rèn)說(shuō)明.41 4.1.4質(zhì)量安全管理說(shuō)明.43 4.1.5決算轉(zhuǎn)資說(shuō)明.44 4.1.6資料管理說(shuō)明.44 4.1.7查詢統(tǒng)計(jì)說(shuō)明.46 4.1.8統(tǒng)計(jì)決策與支持.46 4.2物資管理.47 4.2.1主數(shù)據(jù)管理.48 4.2.2需求管理.48 4.2.3采購(gòu)管理.49 4.2.4儲(chǔ)運(yùn)管理.51 4.2.5查詢統(tǒng)計(jì)說(shuō)明.53 4.3資產(chǎn)管理.54 4.3.1基礎(chǔ)數(shù)據(jù)管理.54 4.3.2資產(chǎn)臺(tái)帳管理.55 4.3.3資產(chǎn)建設(shè)管理.56 4.3.4輸網(wǎng)資產(chǎn)變更管理.58 4.3.5資產(chǎn)退役管理.58 4.3.6工單管理.59 4.3.7實(shí)體關(guān)系.60 4.3.8設(shè)
4、計(jì)考慮的因素.60 4.4財(cái)務(wù)管理.60 4.4.1固定資產(chǎn)管理.60 4.5服務(wù)合同管理.62 4.5.1服務(wù)合同管理說(shuō)明.62 4.6服務(wù)合同付款管理.63 4.6.1服務(wù)合同付款管理說(shuō)明.63 4.7接口說(shuō)明.64 4.7.1概述.64 4.7.2子系統(tǒng)構(gòu)架.64 4.7.3代碼目錄結(jié)構(gòu).64 4.7.4實(shí)體關(guān)系.64 4.7.5設(shè)計(jì)考慮的因素.64 5軟件重用軟件重用 .64 5.1第三方軟件使用說(shuō)明.64 5.1.1水晶報(bào)表(crystal report) .65 5.1.2webi .65 5.1.3fusionchart.66 5.1.4水晶報(bào)表應(yīng)用功能描述.66 5.2重用庫(kù)組
5、件使用說(shuō)明.67 5.3新組件功能說(shuō)明.70 1 系統(tǒng)概述系統(tǒng)概述 在南網(wǎng)公司的統(tǒng)一部署下,廣東電網(wǎng)公司于 2007 年啟動(dòng)了“創(chuàng)先”工作。而廣東電網(wǎng)作為全國(guó) 最大的省級(jí)電網(wǎng),地域遼闊,資產(chǎn)龐大,在現(xiàn)有的電力體制環(huán)境下,對(duì)于如何有效地經(jīng)營(yíng)和管理資 產(chǎn),實(shí)現(xiàn)企業(yè)資產(chǎn)使用的可靠性、使用效率、使用壽命和成本支出的綜合平衡,是對(duì)廣東電網(wǎng)生產(chǎn) 經(jīng)營(yíng)能力的一種考驗(yàn),也是創(chuàng)建先進(jìn)水平省級(jí)供電企業(yè)所需重點(diǎn)突破的核心內(nèi)容。 但是,公司資產(chǎn)管理一直沿用傳統(tǒng)的基于職能部門分工的“條塊化” 、 “分段式”管理模式,資 產(chǎn)管理觀念薄弱,從而導(dǎo)致在資產(chǎn)管理過(guò)程中出現(xiàn)了管理目標(biāo)不明確、不統(tǒng)一,評(píng)估與考核體系不 科學(xué)、不健全
6、,資產(chǎn)管理組織不協(xié)調(diào),管理鏈條和信息割裂等現(xiàn)象,形成了資產(chǎn)管理的職能和信息 條塊壁壘,突出表現(xiàn)在資產(chǎn)管理粗放、使用效率不高、生命較短、資產(chǎn)實(shí)物管理與價(jià)值管理脫節(jié)等, 管理手段的滯后,制約了公司實(shí)現(xiàn)國(guó)際領(lǐng)先的戰(zhàn)略目標(biāo)。 因此,必須對(duì)現(xiàn)有的資產(chǎn)管理模式進(jìn)行管理變革,引入先進(jìn)的資產(chǎn)管理理念和現(xiàn)代化資產(chǎn)管理 手段,通過(guò)信息系統(tǒng)支撐資產(chǎn)全生命周期管理體系的建設(shè),全面提升公司資產(chǎn)管理水平。 企業(yè)級(jí)資產(chǎn)管理系統(tǒng)依據(jù)廣東電網(wǎng)公司企業(yè)級(jí)資產(chǎn)管理信息系統(tǒng)功能規(guī)范及實(shí)施方案的要 求,通過(guò)對(duì)資產(chǎn)的規(guī)劃設(shè)計(jì)、設(shè)備采購(gòu)、工程建設(shè)、生產(chǎn)運(yùn)營(yíng)、退役報(bào)廢等全生命周期進(jìn)行全過(guò)程綜 合管理,實(shí)現(xiàn)項(xiàng)目管理、物資管理、財(cái)務(wù)管理、生產(chǎn)管
7、理四大業(yè)務(wù)的橫向融合,以及省公司、地市 供電局、縣級(jí)供電局等的縱向貫通,實(shí)現(xiàn)資產(chǎn)使用的可靠性(reliability)、使用效率(efficiency)、 使用壽命(lifespan)和全生命周期成本(life cycle cost)的綜合最優(yōu),落實(shí)資產(chǎn)全生命周期管理體 系的資產(chǎn)管理策略、業(yè)務(wù)流程、組織架構(gòu)、評(píng)估考核等關(guān)鍵要素,為科學(xué)高效的現(xiàn)代化資產(chǎn)全生命 周期管理體系建設(shè)及目標(biāo)的實(shí)現(xiàn)提供信息系統(tǒng)支持。 1.1名詞解釋名詞解釋 縮寫(xiě)描述 設(shè)計(jì)模式設(shè)計(jì)模式提供了設(shè)計(jì)不同系統(tǒng)、不同應(yīng)用時(shí)經(jīng)常發(fā)生的問(wèn)題的解決方案, 向編程人員提供特定問(wèn)題的可依據(jù)的方法藍(lán)圖。 j2ee全稱是 java 2 platf
8、orm enterprise edition,它是由 sun 公司領(lǐng) 導(dǎo)、各廠商共同制定并得到廣泛認(rèn)可的工業(yè)標(biāo)準(zhǔn)。 xmlxml(extensible markup language),一種擴(kuò)展性標(biāo)識(shí)語(yǔ)言。 mvc 模式模式mvc 是 modelviewcontroller 的簡(jiǎn)寫(xiě)。 model 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò) javabean,actionform 實(shí)現(xiàn))。 view 是應(yīng)用的表示面(由 jsp 頁(yè)面產(chǎn)生)。 controller 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè) servlet), 通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程和顯示邏輯分成不同的 組件實(shí)現(xiàn)。 strutsstru
9、ts 是采用 java servlet/javaserverpages 技術(shù),開(kāi)發(fā) web 應(yīng)用程序的開(kāi)放源碼的 framework。 web serviceweb services 是建立可互操作的分布式應(yīng)用程序的新平臺(tái),是 一種新的 web 應(yīng)用程序分支,他們是自包含、自描述、模塊化的 應(yīng)用。 水晶報(bào)表水晶報(bào)表為企業(yè)提供了用于 olap 的交互式的、簡(jiǎn)單易用的分析報(bào)表功能, 專為 web 用于而設(shè)計(jì),為企業(yè)的決策人員提供了無(wú)與倫比的決策 支持功能。 ejb3.0. 1.2系統(tǒng)的上下文聯(lián)系系統(tǒng)的上下文聯(lián)系 企企業(yè)業(yè)級(jí)級(jí)資資產(chǎn)產(chǎn)管管理理系系統(tǒng)統(tǒng) 招招投投標(biāo)標(biāo)系系統(tǒng)統(tǒng) pki oak 合合同同管
10、管理理 檔檔案案管管理理 生生產(chǎn)產(chǎn)系系統(tǒng)統(tǒng) 全全面面預(yù)預(yù)算算管管 理理 1.系統(tǒng)與 excel 2000 / xp/2003 的接口使用 apache poi 組件。 2.系統(tǒng)與數(shù)據(jù)庫(kù)連接使用數(shù)據(jù)庫(kù)連接池。 3.系統(tǒng)與 xml 文檔交互使用 apache jdom。 4.系統(tǒng)采用打印組件來(lái)實(shí)現(xiàn)打印和打印預(yù)覽功能。 5.系統(tǒng)提供與財(cái)務(wù)系統(tǒng)的接口。付款單據(jù)傳入財(cái)務(wù)系統(tǒng),財(cái)務(wù)付款后,企業(yè)級(jí)資產(chǎn)管理系統(tǒng)能夠 及時(shí)從財(cái)務(wù)系統(tǒng)獲取付款的數(shù)據(jù)。 6.系統(tǒng)通過(guò)定時(shí)器組件實(shí)現(xiàn)與 oak 系統(tǒng)的接口,每天通過(guò) oak 系統(tǒng)提醒用戶及時(shí)處理企業(yè)級(jí)資 產(chǎn)管理系統(tǒng)的待辦工作。 7.系統(tǒng)提供與招投標(biāo)系統(tǒng)的接口。將項(xiàng)目信息
11、傳遞給招投標(biāo)管理系統(tǒng),項(xiàng)目招標(biāo)后,企業(yè)級(jí)資產(chǎn) 管理系統(tǒng)能夠及時(shí)從招投標(biāo)系統(tǒng)中獲取項(xiàng)目的招標(biāo)信息。 8.系統(tǒng)提供與生產(chǎn)管理系統(tǒng)進(jìn)行的接口。實(shí)現(xiàn)項(xiàng)目管理、設(shè)備臺(tái)帳、維護(hù)計(jì)劃、工單與生產(chǎn)管理 系統(tǒng)的交互。 9.和企業(yè)信息門戶管理系統(tǒng)集成,支持從門戶系統(tǒng)直接進(jìn)入企業(yè)級(jí)資產(chǎn)管理系統(tǒng)來(lái)處理待辦事宜。 10. 采用 webservice 和 ejb 遠(yuǎn)程接口技術(shù)實(shí)現(xiàn)系統(tǒng)之間的數(shù)據(jù)交換。其中 ejb 遠(yuǎn)程接口技術(shù)的 使用適用于由我公司開(kāi)發(fā)的業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)交換。webservice 技術(shù)主要適用我公司開(kāi)發(fā)的系 統(tǒng)與其他公司開(kāi)發(fā)的業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)交換。 1.3系統(tǒng)的物理部署結(jié)構(gòu)系統(tǒng)的物理部署結(jié)構(gòu) 企業(yè)級(jí)資產(chǎn)
12、管理系統(tǒng)的部署采用“全省大集中”的模式,系統(tǒng)存在用戶數(shù)、業(yè)務(wù)數(shù)據(jù)量大特點(diǎn), 建議系統(tǒng)硬件架構(gòu)如下圖所示: 系統(tǒng)硬件架構(gòu) 1.4系統(tǒng)的技術(shù)體系結(jié)構(gòu)系統(tǒng)的技術(shù)體系結(jié)構(gòu) 1.5系統(tǒng)的功能體系結(jié)構(gòu)系統(tǒng)的功能體系結(jié)構(gòu) 項(xiàng)目管理項(xiàng)目管理 企業(yè)級(jí)資產(chǎn)管理企業(yè)級(jí)資產(chǎn)管理 系統(tǒng)系統(tǒng) 前期與立 項(xiàng) 設(shè)計(jì)與計(jì) 劃 執(zhí)行與監(jiān) 控 資料管 理 物資管理物資管理 申購(gòu)管 理 采購(gòu)管 理 儲(chǔ)運(yùn)管 理 品控管 理 竣工決 算 合同管理系合同管理系 統(tǒng)統(tǒng) 生產(chǎn)管理系生產(chǎn)管理系 統(tǒng)統(tǒng) 檔案管理系檔案管理系 統(tǒng)統(tǒng) eip pki oak 設(shè)備臺(tái)帳管 理 設(shè)備管理設(shè)備管理 工單管 理 財(cái)務(wù)管理財(cái)務(wù)管理 資金管理核算管理 全面預(yù)算管理
13、全面預(yù)算管理 系統(tǒng)系統(tǒng) 固定資產(chǎn)管理 模版管 理 配置管 理 企業(yè)級(jí)資產(chǎn)管理系統(tǒng)在項(xiàng)目前期管理、設(shè)計(jì)、執(zhí)行與監(jiān)控到竣工的過(guò)程中,通過(guò)物料裝配使初 設(shè)臺(tái)帳形成正式的設(shè)備臺(tái)帳,以概算結(jié)構(gòu)為核心控制整個(gè)項(xiàng)目過(guò)程發(fā)生成本,歸集物資采購(gòu)與服務(wù) 采購(gòu)成本,所有成本分?jǐn)偟綍汗蕾Y產(chǎn)卡片后形成正式的固定資產(chǎn)卡片。技改項(xiàng)目涉及到資產(chǎn)報(bào)廢和 閑置則需要更新資產(chǎn)卡片,并將閑置物資入庫(kù)供再次使用。 在生產(chǎn)運(yùn)營(yíng)過(guò)程中由預(yù)試、定檢、消缺等運(yùn)維工作生成工單,根據(jù)設(shè)備與備品配件的關(guān)聯(lián)關(guān)系 查找?guī)齑?,可以領(lǐng)用備品配件或者進(jìn)行物資申購(gòu),生成物資和服務(wù)采購(gòu)訂單,在工單執(zhí)行過(guò)程中將 歸集所有發(fā)生成本。 1.6子系統(tǒng)概述子系統(tǒng)概述 根據(jù)
14、需求規(guī)格說(shuō)明書(shū)將系統(tǒng)劃分為以下 4 個(gè)主要功能模塊,項(xiàng)目管理、物資管理、設(shè)備管理、 財(cái)務(wù)管理。項(xiàng)目管理包括前期管理、設(shè)計(jì)與計(jì)劃、執(zhí)行與監(jiān)控、竣工決算等子模塊,前期管理包括 了項(xiàng)目從規(guī)劃到項(xiàng)目年度投資計(jì)劃,設(shè)計(jì)與計(jì)劃包括項(xiàng)目開(kāi)工前的各項(xiàng)設(shè)計(jì)與計(jì)劃工作,執(zhí)行與監(jiān) 控規(guī)劃包括項(xiàng)目施工過(guò)程中對(duì)質(zhì)量、安全、資金的控制,竣工決算包括項(xiàng)目階段驗(yàn)收到?jīng)Q算轉(zhuǎn)資的 工作。 類端目錄結(jié)構(gòu): jsp 整體目錄結(jié)構(gòu): 模塊名稱jsp 目錄說(shuō)明對(duì)應(yīng)的需求 項(xiàng) component重用組件 config通用配置管理維護(hù)組件 css通用的 css download提供 java 下載文件 error通用的系統(tǒng)錯(cuò)誤提示頁(yè)面 im
15、ages通用的圖片文件 include通用的包含文件 js通用的 js 文件 lcam企業(yè)級(jí)資產(chǎn)管理系統(tǒng) jsp 文件 項(xiàng)目文件 web project material 目錄說(shuō)明: 按照系統(tǒng)的功能劃分。 masterdata 基本資料,數(shù)據(jù)業(yè)務(wù)層。 commom 公用函數(shù)。 component 公用組件。 interactive 與外部系統(tǒng)的 webservice 接口。 project 項(xiàng)目管理各個(gè)模塊 material 物資管理各個(gè)模塊 device 設(shè)備管理各個(gè)模塊 finance 財(cái)務(wù)管理各個(gè)模塊 payment 付款 contract 合同 device finance contr
16、act payment common component images js primarypage通用系統(tǒng)訪問(wèn)主頁(yè)面 system系統(tǒng)的管理文件 web-inf配置文件存放路徑 workflow工作流引擎頁(yè)面文件 extext 動(dòng)態(tài) js 組件 配置文件目錄結(jié)構(gòu): 目錄下級(jí)目錄說(shuō)明對(duì)應(yīng)的需求項(xiàng) lcam企業(yè)級(jí)資產(chǎn)管理系統(tǒng)的配置文件 project material device finance contract payment component dwr template(excel、doc、xml) compagedwr 配置文件 tld存放標(biāo)簽 web-inf lib存放工程項(xiàng)目管理系統(tǒng)
17、所引用到的 包集合 app-inf classes存放編譯以后的 java 類代碼 配置平臺(tái)目錄結(jié)構(gòu) 目錄下級(jí)目錄說(shuō)明 project項(xiàng)目管理相關(guān)配置 material物資管理相關(guān)配置 device設(shè)備管理相關(guān)配置 finance財(cái)務(wù)管理相關(guān)配置 contract合同管理相關(guān)配置 payment付款管理相關(guān)配置 ct.lcam. masterdata主數(shù)據(jù)管理相關(guān)配置 1.7系統(tǒng)主要場(chǎng)景描述系統(tǒng)主要場(chǎng)景描述 系統(tǒng)場(chǎng)景從系統(tǒng)應(yīng)用層的實(shí)現(xiàn)方式分為以 jsp 和 struts 兩種實(shí)現(xiàn)方式;從系統(tǒng)功能上分可以分 為新增場(chǎng)景和查詢場(chǎng)景。 1.7.1新增場(chǎng)景新增場(chǎng)景 新增、更新、刪除等操作場(chǎng)景與新增場(chǎng)景
18、類似,統(tǒng)稱新增場(chǎng)景。 下面以新增開(kāi)工申請(qǐng)為例對(duì)以 struts 方式實(shí)現(xiàn)的前端表現(xiàn)層的新增場(chǎng)景進(jìn)行描述,如圖: 用戶 startexecut.jsp startexecutaction.java startexecutman.java 增加開(kāi)工申請(qǐng) startexecutappsrv.java 調(diào)用action將form傳給vo 將vo傳給代理 調(diào)用業(yè)務(wù)邏輯執(zhí)行增加 返回整數(shù)表示操作成功 返回參數(shù) 把返回值傳給action 提示用戶成功 把返回值傳給jsp startexecutdao.java 調(diào)用dao插入數(shù)據(jù) struts 為前端表現(xiàn)層的新增場(chǎng)景 1.7.2查詢場(chǎng)景查詢場(chǎng)景 查詢、顯示列
19、表等場(chǎng)景都?xì)w為查詢場(chǎng)景。 下面以開(kāi)工申請(qǐng)的查詢?yōu)槔枋?struts 為前端表現(xiàn)層的查詢場(chǎng)景: struts 為前端表現(xiàn)層的查詢場(chǎng)景 1.8關(guān)鍵的設(shè)計(jì)概念關(guān)鍵的設(shè)計(jì)概念 1.8.1系統(tǒng)采用技術(shù)簡(jiǎn)介系統(tǒng)采用技術(shù)簡(jiǎn)介 mvc 模式簡(jiǎn)介模式簡(jiǎn)介 mvc 英文即 model-view-controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照 model、view、controller 的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層-模型層、視圖層、控制 層。 它們分別擔(dān)任不同的任務(wù),下圖顯示了這幾個(gè)模塊各自的功能以及它們之間的相互關(guān)系。 視圖視圖 視圖(view)代表用戶交互界面,對(duì)于 w
20、eb 應(yīng)用來(lái)說(shuō),可以概括為 html 界面,但有可能為 xhtml、xml 和 applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用 可能有很多不同的視圖,mvc 設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶 的請(qǐng)求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(model)處理。比如一個(gè)訂 單的視圖只接受來(lái)自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請(qǐng)求傳遞給控制和模 型。 模型模型 模型(model)就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái) 說(shuō)是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果
21、。業(yè)務(wù)模型的設(shè)計(jì)可以說(shuō)是 mvc 最主要的核心。目前流行的 ejb 模型就是一個(gè)典型的應(yīng)用例子,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對(duì)模型做 了進(jìn)一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應(yīng)用設(shè)計(jì)模型的框架。它僅僅告訴你按 這種模型設(shè)計(jì)就可以利用某些技術(shù)組件,從而減少了技術(shù)上的困難。對(duì)一個(gè)開(kāi)發(fā)者來(lái)說(shuō),就可以專 注于業(yè)務(wù)模型的設(shè)計(jì)。mvc 設(shè)計(jì)模式告訴我們,把應(yīng)用的模型按一定的規(guī)則抽取出來(lái),抽取的層次 很重要,這也是判斷開(kāi)發(fā)人員是否優(yōu)秀的設(shè)計(jì)依據(jù)。抽象與具體不能隔得太遠(yuǎn),也不能太近。mvc 并沒(méi)有提供模型的設(shè)計(jì)方法,而只告訴你應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提高重用性。 我們可以用對(duì)象編程來(lái)做比
22、喻,mvc 定義了一個(gè)頂級(jí)類,告訴它的子類你只能做這些,但沒(méi)法限制 你能做這些。 業(yè)務(wù)模型還有一個(gè)很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實(shí)體對(duì)象的數(shù)據(jù) 保存(持續(xù) 化)。比如將一張訂單保存到數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)獲取訂單。我們可以將這個(gè)模型單獨(dú)列出,所有有 關(guān)數(shù)據(jù)庫(kù)的操作只限制在該模型中。 控制器控制器 控制(controller)可以理解為從用戶接收請(qǐng)求, 將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。 劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么 樣的視圖,可以完成什么樣的用戶請(qǐng)求。控制層并不做任何的數(shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)連接, 控制層接受請(qǐng)求后
23、, 并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符 合要求的視圖返回給用戶。因此,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型。 mvc 處理過(guò)程 首先控制器接受用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來(lái)進(jìn)行處理;然后模型根據(jù)用戶請(qǐng)求進(jìn) 行相應(yīng)的業(yè)務(wù)邏輯處理,并返回?cái)?shù)據(jù);最后控制器調(diào)用相應(yīng)的視圖來(lái)格式化模型返回的數(shù)據(jù),并通 過(guò)視圖呈現(xiàn)給用戶。 mvc 的優(yōu)點(diǎn) 首先,模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過(guò)某個(gè) 視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無(wú) 論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通
24、知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一 種模型的變化-傳播機(jī)制。 其次,模型是自包含的,與控制器和視圖保持相對(duì)獨(dú)立,所以可以方便地改變應(yīng)用程序的數(shù)據(jù) 層和業(yè)務(wù)規(guī)則。 此外,控制器提高了應(yīng)用程序的靈活性和可配置性。 mvc 的應(yīng)用范圍 適用 mvc 需要精心的計(jì)劃,由于它的內(nèi)部原理比較復(fù)雜,所有需要花費(fèi)一些時(shí)間去理解它。將 mvc 運(yùn)用導(dǎo)應(yīng)用系統(tǒng)中,會(huì)帶來(lái)額外的工作量,增加應(yīng)用的復(fù)雜性,所以 mvc 不適合小型應(yīng)用程 序。 但對(duì)于開(kāi)發(fā)存在大量用戶界面,并且業(yè)務(wù)邏輯復(fù)雜的大型應(yīng)用程序,mvc 將會(huì)使軟件在健壯性、代 碼重用和結(jié)構(gòu)方面上一個(gè)新的臺(tái)階。盡管在最初構(gòu)建 mvc 框架時(shí)會(huì)花費(fèi)一定的工作
25、量,但從長(zhǎng)遠(yuǎn)的 角度來(lái)看,它會(huì)大大提高后期軟件開(kāi)發(fā)的效率。 mvc 與 j2ee 架構(gòu)的關(guān)系 mvc 與 j2ee 架構(gòu)的對(duì)應(yīng)關(guān)系是:view 處于 web tier 或者說(shuō)是 client tier,通常是 jsp/servlet,即頁(yè)面顯示部分。controller 也處于 web tier,通常用 servlet 來(lái)實(shí)現(xiàn),即頁(yè)面顯 示的邏輯部分實(shí)現(xiàn)。model 處于 middle tier,通常用服務(wù)端的 javabean 或者 ejb 實(shí)現(xiàn),即業(yè)務(wù) 邏輯部分的實(shí)現(xiàn)。 mvc 與 struts 的關(guān)系 mvc 模式是一種架構(gòu)模式,其實(shí)需要其他模式協(xié)作完成。在 j2ee 模式目錄中,通常采
26、用 service to worker 模式實(shí)現(xiàn),而 service to worker 模式可由集中控制器模式,派遣器模式和 page helper 模式組成。而 struts 只實(shí)現(xiàn)了 mvc 的 view 和 controller 兩個(gè)部分,model 部分需 要開(kāi)發(fā)者自己來(lái)實(shí)現(xiàn),struts 提供了抽象類 action 使開(kāi)發(fā)者能將 model 應(yīng)用于 struts 框架中。 struts 簡(jiǎn)介簡(jiǎn)介 對(duì)于開(kāi)發(fā) web 應(yīng)用,要從頭設(shè)計(jì)并開(kāi)發(fā)出一個(gè)可靠、穩(wěn)定的框架并不是一件容易的事。幸運(yùn)的 是,隨著 web 開(kāi)發(fā)技術(shù)的日趨成熟,在 web 開(kāi)發(fā)領(lǐng)域出現(xiàn)了一些現(xiàn)成的優(yōu)秀的框架
27、,開(kāi)發(fā)者可以 直接使用他們,struts 就是一種不錯(cuò)的選擇,它是基于 mvc 的 web 應(yīng)用框架。 在 struts 中,模型由實(shí)現(xiàn)業(yè)務(wù)邏輯的 javabean 或 ejb 組件構(gòu)成,控制器由 actionservlet 和 action 來(lái)實(shí)現(xiàn),視圖由一組 jsp 文件構(gòu)成。下圖顯示了 struts 實(shí)現(xiàn)的 mvc 框架。 struts-config.xml 瀏瀏覽覽器器 web 服服務(wù)務(wù)器器 (控控制制器器) actionservlet (視視圖圖) jsp (模模型型) ejb ejb ejb action action action (struts 實(shí)現(xiàn)的 mvc 框架) 在 st
28、ruts 框架中,視圖就是一組 jsp 文件,在這些 jsp 文件中沒(méi)有業(yè)務(wù)邏輯,也沒(méi)有模型信 息,只由標(biāo)簽,這些標(biāo)簽可以是標(biāo)準(zhǔn)的 jsp 標(biāo)簽或客戶化標(biāo)簽,如 struts 標(biāo)簽庫(kù)里的標(biāo)簽,此外, 通常也將 struts 框架中的 actionform bean 也劃分到視圖模塊中。 模型表示應(yīng)用程序的狀態(tài)和業(yè)務(wù)邏輯,在這里,我們用 javabean 和 ejb 組件來(lái)實(shí)現(xiàn)。 控制器由 actionservlet 類和 action 類來(lái)實(shí)現(xiàn)。 在 struts 中,模型、視圖、控制器三者之間的關(guān)系和各自的主要功能如下圖: ejb 技術(shù)簡(jiǎn)介技術(shù)簡(jiǎn)介 ejb 的概念的概念 ejb
29、 的全稱是 enterprise java bean。是 java 中的商業(yè)應(yīng)用組件技術(shù)。ejb 結(jié)構(gòu)中的角色 ejb 組件結(jié)構(gòu)是基于組件的分布式計(jì)算結(jié)構(gòu),是分布式應(yīng)用系統(tǒng)中的組件。 ejb 的體系結(jié)構(gòu)的體系結(jié)構(gòu) ejb 分布式應(yīng)用程序是基于對(duì)象組件模型的,低層的事務(wù)服務(wù)用了 api 技術(shù)。ejb 技術(shù)簡(jiǎn)化了 用 java 語(yǔ)言編寫(xiě)的企業(yè)應(yīng)用系統(tǒng)的開(kāi)發(fā),配置。ejb 技術(shù)定義了一組可重用的組件:enterprise beans。你可以利用這些組件,象搭積木一樣的建立你的分布式應(yīng)用程序。當(dāng)你把代碼寫(xiě)好之后, 這些組件就被組合到特定的文件中去。每個(gè)文件有一個(gè)或多個(gè) enterprise beans
30、,在加上一些配置 參數(shù)。最后,這些 enterprise beans 被配置到一個(gè)裝了 ejb 容器的平臺(tái)上??蛻裟軌蛲ㄟ^(guò)這些 beans 的 home 接口,定位到某個(gè) beans,并產(chǎn)生這個(gè) beans 的一個(gè)實(shí)例。這樣,客戶就能夠調(diào) 用 beans 的應(yīng)用方法和遠(yuǎn)程接口。 ejb 服務(wù)器作為容器和低層平臺(tái)的橋梁管理著 ejb 容器和函數(shù)。它向 ejb 容器提供了訪問(wèn)系 統(tǒng)服務(wù)的能力。例如:數(shù)據(jù)庫(kù)的管理和事務(wù)的管理,或者對(duì)于其它的 enterprise 的應(yīng)用服務(wù)器。所 有的 ejb 實(shí)例都運(yùn)行在 ejb 容器中。 容器提供了系統(tǒng)級(jí)的服務(wù),控制了 ejb 的生命周期。ejb 中的有一些易于
31、使用的管理工具如: security-配置描述器(the deployment descriptor)定義了客戶能夠訪問(wèn)的不同的應(yīng)用函數(shù)。容 器通過(guò)只允許授權(quán)的客戶訪問(wèn)這些函數(shù)來(lái)達(dá)到這個(gè)效果。remote connectivity-容器為遠(yuǎn)程鏈接管 理著低層的通信 issues,而且對(duì) enterprise beas 的開(kāi)發(fā)者和客戶都隱藏了通信細(xì)節(jié)。ejb 的開(kāi)發(fā) 者在編寫(xiě)應(yīng)用方法的時(shí)候,就象是在條用本地的平臺(tái)一樣的。客戶也不清楚他們調(diào)用的方法可能是 在遠(yuǎn)程被處理的。life cycle managment-客戶簡(jiǎn)單的創(chuàng)建一個(gè) enterprise beans 的實(shí)例,并通 常取消一個(gè)實(shí)例。而
32、容器管理著 enterprise beans 的實(shí)例,使 enterprise beans 實(shí)現(xiàn)最大的效能 和內(nèi)存利用率。容器能夠這樣來(lái)激活和使 enterprise beans 失效,保持眾多客戶共享的實(shí)例池。等 等。 trasction management-配置描述器定義了 enterprise beans 的事務(wù)處理的需求。容器管理 著那些管理分布式事務(wù)處理的復(fù)雜的 issues。這些事務(wù)可能要在不同的平臺(tái)之間更新數(shù)據(jù)庫(kù)。容器 使這些事務(wù)之間互相獨(dú)立,互不干擾。保證所有的更新數(shù)據(jù)庫(kù)都是成功發(fā)生的,否者,就回滾到事 務(wù)處理之前的狀態(tài)。 ejb 組件是基于分布式事務(wù)處理的企業(yè)級(jí)應(yīng)用程序的組
33、件。所有的 ejb 都有如下的特點(diǎn):ejb 包含了處理企業(yè)數(shù)據(jù)的應(yīng)用邏輯。定義了 ejb 的客戶界面。這樣的界面不受容器和服務(wù)器的影響。 于是,當(dāng)一個(gè) ejb 被集合到一個(gè)應(yīng)用程序中去時(shí),不用更改代碼和重新編譯。ejb 能夠被定制 各 種系統(tǒng)級(jí)的服務(wù),例如安全和事務(wù)處理的特性,都不是屬于 ejb 類的。而是由配置和組裝應(yīng)用程序 的工具來(lái)實(shí)現(xiàn)。 ejb 的分類的分類 有兩種類型的 ejb: session beans 和 entity beans。sessionbeans 是一種作為單用戶執(zhí)行 的對(duì)象。作為對(duì)遠(yuǎn)程的任務(wù)請(qǐng)求的相應(yīng),容器產(chǎn)生一個(gè) session beans 的實(shí)例。一個(gè) sessi
34、on beans 有一個(gè)用戶.從某種程度上來(lái)說(shuō),一個(gè) session bean 對(duì)于服務(wù)器來(lái)說(shuō)就代表了它的那個(gè)用戶. session beans 也能用于事務(wù),它能夠更新共享的數(shù)據(jù),但它不直接描繪這些共享的數(shù)據(jù)。 session beans 的生命周期是相對(duì)較短的。典型的是,只有當(dāng)用戶保持會(huì)話的時(shí)候,session beans 才是活著的。一旦用戶退出了,session beans 就不再與用戶相聯(lián)系了。session beans 被看成是瞬時(shí)的,因?yàn)槿绻萜鞅罎⒘?,那么用戶必須重新建立一個(gè)新的 session 對(duì)象來(lái)繼續(xù)會(huì)話。 session bean 典型的聲明了與用戶的互操作或者會(huì)話。也
35、就是說(shuō),session bean 了在客戶會(huì)話期 間,通過(guò)方法的調(diào)用,掌握用戶的信息。一個(gè)具有狀態(tài)的 session bean 稱為有狀態(tài)的 session bean.當(dāng)用戶終止與 session beans 互操作的時(shí)候.會(huì)話終止了,而且,bean 也不再擁有狀態(tài)值。 session bean 也可能是一個(gè)無(wú)狀態(tài)的 session bean.無(wú)狀態(tài)的 session beans 并不掌握它的客戶 的信息或者狀態(tài)。用戶能夠調(diào)用 beans 的方法來(lái)完成一些操作。但是,beans 只是在方法調(diào)用的時(shí) 候才知道用戶的參數(shù)變量。當(dāng)方法調(diào)用完成以后,beans 并不繼續(xù)保持這些參數(shù)變量。這樣,所有 的
36、無(wú)狀態(tài)的 session beans 的實(shí)例都是相同的,除非它正在方法調(diào)用期間。這樣,無(wú)狀態(tài)的 session beans 就能夠支持多個(gè)用戶.容器能夠聲明一個(gè)無(wú)狀態(tài)的 session beans.能夠?qū)⑷魏?session beans 指定給任何用戶。 entity beans 對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)提供了一種對(duì)象的視圖。例如:一個(gè) entity bean 能夠模擬數(shù) 據(jù)庫(kù)表中一行相關(guān)的數(shù)據(jù)。多個(gè) client 能夠共享訪問(wèn)同一個(gè) entity bean.多個(gè) client 也能夠同時(shí)的 訪問(wèn)同一個(gè) entity bean.entity beans 通過(guò)事務(wù)的上下文來(lái)訪問(wèn)或更新下層的數(shù)據(jù)。這樣,數(shù)
37、據(jù)的 完整性就能夠被保證。entity beans 能存活相對(duì)教長(zhǎng)的時(shí)間,并且狀態(tài)是持續(xù)的。只要數(shù)據(jù)庫(kù)中的 數(shù)據(jù)存在,entity beans 就一直存活。而不是按照應(yīng)用程序或者服務(wù)進(jìn)程來(lái)說(shuō)的。即使 ejb 容器崩 潰了,entity beans 也是存活的。entity beans 生命周期能夠被容器或者 beans 自己管理。如果 由容器控制著保證 entity beans 持續(xù)的 issus。如果由 beans 自己管理,就必須寫(xiě) entity beans 的代碼,包括訪問(wèn)數(shù)據(jù)庫(kù)的調(diào)用。 entity beans 是由主鍵(primary key 一種唯一的對(duì)象標(biāo)識(shí)符) 標(biāo)識(shí)的。通常,主
38、鍵與標(biāo)識(shí)數(shù)據(jù)庫(kù)中的一塊數(shù)據(jù),例如一個(gè)表中的一行,的主鍵是相同的。主鍵是 client 能夠定位特定的數(shù)據(jù)塊。 (增加 ejb3 介紹、吳華庭) web service 簡(jiǎn)介簡(jiǎn)介 web services 是建立可互操作的分布式應(yīng)用程序的新平臺(tái),是一種新的 web 應(yīng)用程序分支, 他們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過(guò) web 調(diào)用。web service 可以執(zhí)行 從簡(jiǎn)單的請(qǐng)求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他 web service 應(yīng)用程序可以發(fā)現(xiàn)并 調(diào)用它部署的服務(wù)。 web service 平臺(tái)需要一套協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。任何平臺(tái)都
39、有它的數(shù)據(jù)表示方 法和類型系統(tǒng)。要實(shí)現(xiàn)互操作性,web service 平臺(tái)必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同 平臺(tái)、編程語(yǔ)言和組件模型中的不同類型系統(tǒng)。在傳統(tǒng)的分布式系統(tǒng)中,基于界面(interface)的平 臺(tái)提供了一些方法來(lái)描述界面、方法和參數(shù)(譯注:如 com 和 cobar 中的 idl 語(yǔ)言。同樣的,web service 平臺(tái)也必須提供一種標(biāo)準(zhǔn)來(lái)描述 web service,讓客戶可以得到足夠的信息來(lái)調(diào)用這個(gè) web service。最后,我們還必須有一種方法來(lái)對(duì)這個(gè) web service 進(jìn)行遠(yuǎn)程調(diào)用。這種方法實(shí)際 是一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議(rpc)。同時(shí) rpc 協(xié)議還
40、與編程語(yǔ)言無(wú)關(guān)。 一般 web service 實(shí)現(xiàn)包含四個(gè)基本步驟:創(chuàng)建 web service 的商業(yè)邏輯(通常是一些 java 類); 將這些 java 類部署到一個(gè) soap 服務(wù)器上;生成客戶訪問(wèn)代碼;部署客戶應(yīng)用。而 web service 由兩部分組成:soap-web service 之間的基本通信協(xié)議;wsdl-web service 描述語(yǔ)言,它定義 了 web service 做什么,怎么做和查詢的信息。下圖描述了 web service 的 3 個(gè)組成部分- wsdl、soap、uddi。 web service 服務(wù)描述 what,how,where 服務(wù)消息 req
41、uest response 公共網(wǎng)址 url wsdlsoapuddi web service 的三個(gè)組成部分 下面是組成 web service 平臺(tái)的三項(xiàng)技術(shù): .1xml 和和 xsd 擴(kuò)展的標(biāo)記語(yǔ)言(xml)是 web service 平臺(tái)中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外, xml 主要的優(yōu)點(diǎn)在于它既是平臺(tái)無(wú)關(guān)的,又是廠商無(wú)關(guān)的。無(wú)關(guān)性是比技術(shù)優(yōu)越性更重要的:軟件 廠商是不會(huì)選擇一個(gè)由競(jìng)爭(zhēng)對(duì)手所發(fā)明的技術(shù)的。 xml 解決了數(shù)據(jù)表示的問(wèn)題,但它沒(méi)有定義一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,更沒(méi)有說(shuō)怎么去擴(kuò)展這套數(shù) 據(jù)類型。例如,整形數(shù)到底代表什么?16 位,32 位,還是 6
42、4 位?這些細(xì)節(jié)對(duì)實(shí)現(xiàn)互操作性都是很 重要的。w3c 制定的 xml schema(xsd)就是專門解決這個(gè)問(wèn)題的一套標(biāo)準(zhǔn)。它定義了一套標(biāo)準(zhǔn)的數(shù) 據(jù)類型,并給出了一種語(yǔ)言來(lái)擴(kuò)展這套數(shù)據(jù)類型。web service 平臺(tái)就是用 xsd 來(lái)作為其數(shù)據(jù)類型 系統(tǒng)的。我們用 java 來(lái)構(gòu)造一個(gè) web service 時(shí),為了符合 web service 標(biāo)準(zhǔn),所有使用的數(shù)據(jù) 類型都必須被轉(zhuǎn)換為 xsd 類型。 .2soap web service 建好以后,就需要去調(diào)用它。簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(soap)提供了標(biāo)準(zhǔn)的 rpc 方法來(lái) 調(diào)用 web service。實(shí)際上,soap 規(guī)范定
43、義了 soap 消息的格式,以及怎樣通過(guò) http 協(xié)議來(lái)使用 soap。soap 也是基于 xml 和 xsd 的,xml 是 soap 的數(shù)據(jù)編碼方式。 soap 是 xml web service 的通信協(xié)議。當(dāng)把 soap 描述為一種通信協(xié)議時(shí),多數(shù)人都會(huì)想到 dcom 或 corba,并且會(huì)問(wèn)soap 如何激活對(duì)象?或soap 使用什么樣的命名服務(wù)?等問(wèn) 題。雖然 soap 實(shí)現(xiàn)方案可能會(huì)包含上述內(nèi)容,但 soap 標(biāo)準(zhǔn)并未對(duì)其進(jìn)行規(guī)定。soap 一種 規(guī)范,用來(lái)定義消息的 xml 格式 - 這是規(guī)范中所必需的部分。包含在一對(duì) soap 元素中的、結(jié) 構(gòu)正確的 xml 段就是 soa
44、p 消息。 soap 規(guī)范的其他部分介紹如何將程序數(shù)據(jù)表示為 xml,以及如何使用 soap 進(jìn)行遠(yuǎn)程過(guò) 程調(diào)用 (rpc)。這些可選的規(guī)范部分用于實(shí)現(xiàn) rpc 形式的應(yīng)用程序,其中客戶端將發(fā)出一條 soap 消息(包含可調(diào)用函數(shù),以及要傳送到該函數(shù)的參數(shù)),然后服務(wù)器將返回包含函數(shù)執(zhí)行結(jié) 果的消息。目前,多數(shù) soap 實(shí)現(xiàn)方案都支持 rpc 應(yīng)用程序,這是因?yàn)榱?xí)慣于開(kāi)發(fā) com 或 corba 應(yīng)用程序的編程人員熟悉 rpc 形式。soap 還支持文檔形式的應(yīng)用程序,在這類應(yīng)用程 序中,soap 消息只是 xml 文檔的一個(gè)包裝。文檔形式的 soap 應(yīng)用程序非常靈活,許多新的 xml w
45、eb service 都利用這一特點(diǎn)來(lái)構(gòu)建使用 rpc 難以實(shí)現(xiàn)的服務(wù)。 soap 規(guī)范的最后一個(gè)可選部分定義了包含 soap 消息的 http 消息的樣式。此 http 綁 定非常重要,因?yàn)閹缀跛挟?dāng)前的 os(以及許多以前的 os)都支持 http。http 綁定雖然是 可選的,但幾乎所有 soap 實(shí)現(xiàn)方案都支持 http 綁定,因?yàn)樗?soap 的唯一標(biāo)準(zhǔn)協(xié)議。由 于這一原因,人們通常誤認(rèn)為 soap 必須使用 http。其實(shí),有些實(shí)現(xiàn)方案也支持 msmq、mq 系列、smtp 或 tcp/ip 傳輸,但由于 http 非常普遍,幾乎所有當(dāng)前的 xml web service 都 使
46、用它。由于 http 是 web 的核心協(xié)議,因此大多數(shù)組織的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)都支持 http,并且 員工已經(jīng)了解了如何對(duì)其進(jìn)行管理。如今,已經(jīng)建立了用于 http 的安全保護(hù)、監(jiān)視和負(fù)載平衡的 基礎(chǔ)結(jié)構(gòu)。 .3wsdl 用機(jī)器能閱讀的方式提供一個(gè)正式的描述文檔。web service 描述語(yǔ)言(wsdl)就是這樣一個(gè)基 于 xml 的語(yǔ)言,用于描述 web service 及其函數(shù)、參數(shù)和返回值。因?yàn)槭腔?xml 的,所以 wsdl 既是機(jī)器可閱讀的,又是人可閱讀的,這將是一個(gè)很大的好處。一些最新的開(kāi)發(fā)工具既能根 據(jù)你的 web service 生成 wsdl 文檔,又能導(dǎo)入 w
47、sdl 文檔,生成調(diào)用相應(yīng) web service 的代 碼。 .4開(kāi)發(fā)開(kāi)發(fā) web service 的步驟的步驟 1、編寫(xiě)服務(wù)器端 導(dǎo)入 webservice 包和 webmethod 包:import javax.jws.webservice; import javax.jws.webmethod; 實(shí)現(xiàn)的服務(wù)類前加webservice 符號(hào); 為了代碼清晰,類提供的公開(kāi)方法前加webmethod 符號(hào),這個(gè)不寫(xiě)對(duì)編譯也沒(méi)影響。 2、編譯服務(wù)器端 javac 命令的 classpath 選項(xiàng)中要有 javaee.jar 的路徑,如 javac -classpath d:/su
48、n/sdk/lib/javaee.jar -d ./build src/endpoint/hello.java 用 wsgen 命令生成 wsdl 文件. 服務(wù)器端打包。 3、在客戶端機(jī)器上自動(dòng)生成 stub 類 客戶機(jī)上必須也裝有 jdk 和 javaee5 用 wsimport 工具將服務(wù)器傳過(guò)來(lái)的 wsdl 文件轉(zhuǎn)換成本地的 stub 類 4、編寫(xiě)客戶端調(diào)用代碼 導(dǎo)入 webserviceref 包:import javax.xml.ws.webserviceref; 導(dǎo)入本地生成的 stub 類,如:import endpoint.helloservice;import endpoin
49、t.hello; 指明服務(wù)器的 wsdl 路徑: webserviceref(wsdllocation=http:/localhost:8080/xxx/xxxservice?wsdl) 聲明一個(gè)靜態(tài)的 service 對(duì)象:static helloservice service; 對(duì)要調(diào)用的遠(yuǎn)程方法聲明一個(gè)代理對(duì)象,通過(guò)代理來(lái)調(diào)用真正的遠(yuǎn)程方法 5、編譯客戶端調(diào)用程序,注意 classpath 參數(shù)中要有 stub 類的路徑; javaee.jar 的路徑; appserv-ws.jar 的路徑。 6、用 appclient 執(zhí)行客戶端程序 進(jìn)入到客戶端程序的上級(jí)目錄; 把 appcpath
50、 的值設(shè)置為當(dāng)前目錄; appclient 的第一個(gè)參數(shù)為客戶端程序名,后面的參數(shù)是傳給客戶端程序本身的命令行參數(shù)。 下圖是分布式服務(wù)下 web service 的實(shí)現(xiàn)結(jié)構(gòu)圖: 客戶端程序 jax-rpc stub jax-rpc 運(yùn)行環(huán)境 jax-rpc tie jax-rpc 運(yùn)行環(huán)境 服務(wù)接口實(shí)現(xiàn) (無(wú)狀態(tài)會(huì)話 bean或者java 對(duì)象) 業(yè)務(wù)邏輯實(shí)現(xiàn)層 web service http傳輸 soap請(qǐng)求 服務(wù)實(shí)現(xiàn) 返回結(jié)果 web service 的基本結(jié)構(gòu)圖 客戶端需要根據(jù) wsdl 創(chuàng)建客戶端 java 程序,其中包括 stub 程序??蛻舳苏{(diào)用相應(yīng)的 stub 程序, 進(jìn)一步調(diào)
51、用 jax-rpc(java apis for xml-based remote procedure call,基于 xml 的遠(yuǎn)程過(guò) 程調(diào)用的 java api)運(yùn)行環(huán)境創(chuàng)建 soap 請(qǐng)求消息,通過(guò) http 傳輸給服務(wù)器端。 web 服務(wù)器端的 jax-rpc 運(yùn)行環(huán)境在收到 soap 請(qǐng)求消息后,對(duì) soap 的 xml 內(nèi)容進(jìn)行解 析,再通過(guò) tie 來(lái)調(diào)用服務(wù)接口實(shí)現(xiàn)類(無(wú)狀態(tài)會(huì)話 bean 或者 java 對(duì)象),得到結(jié)果后,創(chuàng)建 soap 響應(yīng)消息返回給客戶端。 1.8.2 系統(tǒng)中的系統(tǒng)中的 j2ee 應(yīng)用模式應(yīng)用模式 本系統(tǒng)主要采用 j2ee 和 jsp 兩項(xiàng)技術(shù)構(gòu)建,同時(shí)還
52、有 struts 和 xml。j2ee 應(yīng)用于服務(wù)器 端,主要采用 ejb 技術(shù),提供與數(shù)據(jù)庫(kù)的交互、與 struts 的通信。ejb 分為實(shí)體 bean 和會(huì)話 bean 兩大部分,實(shí)體 bean 全部采用 cmp(即容器管理的持續(xù)),特殊情況下可采用 bmp(bean 管 理的持續(xù)),cmp 實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互,實(shí)現(xiàn)對(duì)數(shù)據(jù)的存取以及數(shù)據(jù)庫(kù)事務(wù)的管理;會(huì)話 bean 實(shí) 現(xiàn)業(yè)務(wù)邏輯,對(duì)數(shù)據(jù)進(jìn)行邏輯處理,同時(shí)提供了 struts 的訪問(wèn)接口。 考慮到系統(tǒng)中存在大量數(shù)據(jù)的訪問(wèn),如果客戶端直接調(diào)用 cmp,那么將產(chǎn)生大量的 rmi 調(diào)用, 從而加重網(wǎng)絡(luò)負(fù)載,影響系統(tǒng)的性能。因此系統(tǒng)中的 ejb 采
53、用 value object(值對(duì)象)模式,將要顯 示給用戶的數(shù)據(jù)封裝到值對(duì)象中,然后通過(guò)會(huì)話 bean 的方法調(diào)用返回給客戶端。另外,采用了 ppi 模式(page by page iterator)等進(jìn)行數(shù)據(jù)的分頁(yè)顯示,進(jìn)一步減輕網(wǎng)絡(luò)負(fù)載,提高系統(tǒng)的訪問(wèn)效率。 同時(shí)結(jié)合 dao 模式(data access object)等實(shí)現(xiàn)對(duì)部分?jǐn)?shù)據(jù)的存取訪問(wèn)。 考慮到深圳供電局目要求門戶信息管理系統(tǒng)上能夠及時(shí)的反映項(xiàng)目管理系統(tǒng)的各項(xiàng)指標(biāo),以便 提供給領(lǐng)導(dǎo)查閱、參考或決策,我們采用了基于 webservice 的技術(shù)來(lái)實(shí)現(xiàn)項(xiàng)目管理系統(tǒng)數(shù)據(jù)指標(biāo) 的定時(shí)存取功能,這種技術(shù)允許網(wǎng)絡(luò)上的所有系統(tǒng)進(jìn)行交互。隨著
54、技術(shù)的發(fā)展,一個(gè) web 服務(wù)可以 包含額外的指定功能并且可以在多個(gè) b2b 應(yīng)用中協(xié)作通訊。 web 服務(wù)可以理解請(qǐng)求中上下文的關(guān) 系,并且在每一個(gè)特定的情況下產(chǎn)生動(dòng)態(tài)的結(jié)果。這些服務(wù)會(huì)根據(jù)用戶的身份,地點(diǎn)以及產(chǎn)生請(qǐng)求 的原因來(lái)改變不同的處理,用以產(chǎn)生一個(gè)唯一的,定制的方案。這種協(xié)作機(jī)制對(duì)那些只對(duì)最終結(jié)果 有興趣的用戶來(lái)說(shuō),是完全透明的。 系統(tǒng)提供把項(xiàng)目導(dǎo)出導(dǎo)入 xml 文檔的功能,同時(shí)系統(tǒng)還采用 xml 技術(shù)實(shí)現(xiàn)系統(tǒng)配置文件的訪 問(wèn)。xml 是一種能夠讓你自己創(chuàng)造標(biāo)識(shí)的語(yǔ)言,它可以將數(shù)據(jù)與格式從網(wǎng)頁(yè)中分開(kāi),它可以儲(chǔ)存數(shù) 據(jù)和共享數(shù)據(jù),在本系統(tǒng)中就是利用 xml 的這種特性來(lái)進(jìn)行數(shù)據(jù)的傳輸和
55、存儲(chǔ)。 另外,對(duì)于系統(tǒng)中部分信息的 excel 導(dǎo)入導(dǎo)出采用第三方軟件 poi 實(shí)現(xiàn),對(duì)系統(tǒng)報(bào)表的數(shù)據(jù)展示使 用到了 webservice。 下面是以上描述的圖解: entitybean sessionbean delegate(業(yè)務(wù)代表) database讀取數(shù)據(jù) 調(diào)用sessionbean的方法 類類端端模模型型 (e ej jb b) s st tr ru ut ts s方方式式 filter(進(jìn)行編碼和 session過(guò)期判斷) jsp(顯示) actionform 通過(guò)action調(diào)用業(yè)務(wù)代表方法 與actionform數(shù)據(jù)交互 通過(guò)配置文件對(duì)其控制調(diào)用 taglib 調(diào)用標(biāo)簽顯示控
56、制 actionservlet da0 調(diào)用dao的方法 通過(guò)jdbc進(jìn)行數(shù)據(jù)交互 action http輸入 通過(guò)jpa annotation訪問(wèn) entitybean 1.8.3 系統(tǒng)應(yīng)用的字符編碼系統(tǒng)應(yīng)用的字符編碼 (統(tǒng)一用 gbk) 無(wú)論是對(duì) web 應(yīng)用的本地化還是國(guó)際化,都會(huì)涉及到字符編碼轉(zhuǎn)換問(wèn)題,web 應(yīng)用的各種可 能的輸入和輸出,當(dāng)數(shù)據(jù)流的源與目的地使用不同的字符編碼時(shí),就需要對(duì)字符編碼進(jìn)行正確的轉(zhuǎn) 換。 web客客戶戶 數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)web應(yīng)應(yīng)用用 web容器 xml配配置置文文件件 輸入表單數(shù)據(jù) 輸出數(shù)據(jù) (web 應(yīng)用的輸入流和輸出流) 1、處理 http 請(qǐng)求數(shù)據(jù)編碼
57、默認(rèn)情況下,ie 瀏覽器發(fā)送請(qǐng)求時(shí)采用iso-8859-1字符編碼,如果 web 應(yīng)用程序要正確的讀 取用戶發(fā)送的中文數(shù)據(jù),則需要進(jìn)行編碼轉(zhuǎn)換。系統(tǒng)通過(guò)公用的字符編碼轉(zhuǎn)換函數(shù)來(lái)進(jìn)行處理 2、處理 xml 配置文件編碼 在 xml 文件中包含有中文,將 xml 文件字符編碼設(shè)為gb2312,這樣在 java 程序加載和解 析 xml 文件時(shí)無(wú)需再進(jìn)行編碼轉(zhuǎn)換。 3、處理資源文件編碼 定義資源文件 創(chuàng)建資源文件 按照配置文件,創(chuàng)建對(duì)應(yīng)的資源文件 applicationrperties 對(duì)資源文件進(jìn)行編碼轉(zhuǎn)換 編碼轉(zhuǎn)化采用 jkd 中提供的 native
58、2ascii 命令,在 dos 下執(zhí)行如下命令,將生成按照 gb2312 編碼的中文資源文件 applicationresources-impproject_zh_cn.properties 當(dāng) web 客戶的 locale 為中文時(shí),系統(tǒng)框架將自動(dòng)選擇來(lái)自 applicationresources-impproject_zh_cn.properties 文件的消息文本。 1.8.4 表單驗(yàn)證表單驗(yàn)證 系統(tǒng)采用 validator 驗(yàn)證框架引入 validator,在配置文件中添加插件: 添加要驗(yàn)證的表單字段的信息: 資源文件定義如下: 1.8.5 工作流應(yīng)用開(kāi)發(fā)工作流應(yīng)用開(kāi)發(fā) 現(xiàn)代企業(yè)管理通
59、常圍繞一個(gè)或多個(gè)業(yè)務(wù)流程展開(kāi)企業(yè)的各種活動(dòng)和各項(xiàng)日常工作。通過(guò)業(yè)務(wù)流 程協(xié)調(diào)企業(yè)各種物質(zhì)和人力資源,利用計(jì)算機(jī)以流程驅(qū)動(dòng)的工作流技術(shù)應(yīng)運(yùn)而生。 工作流就是在一個(gè)業(yè)務(wù)處理過(guò)程中的信息流和控制流。信息流就是部門之間傳遞的各種文檔、 消息和數(shù)據(jù)??刂屏鳑Q定了在哪些部門、那些人之間傳遞信息,以及傳遞的次序。工作流系統(tǒng)的任 務(wù)就是高效地管理公司業(yè)務(wù)處理過(guò)程中的這種信息流和控制流。 工作流系統(tǒng)的特點(diǎn): 采用圖形化的描述手段,根據(jù)企業(yè)業(yè)務(wù)審批的過(guò)程模型,定義各種不同業(yè)務(wù)及其流程模型,約 束各個(gè)環(huán)節(jié)的辦理權(quán)限和時(shí)限,使業(yè)務(wù)審批過(guò)程更加直觀,更加清晰,更加規(guī)范;通過(guò)圖形化工作 流定義的強(qiáng)大功能,可以迅速實(shí)現(xiàn)業(yè)務(wù)
60、審批過(guò)程的變更和重組。 工作流系統(tǒng)的核心采用純 java 編程,不依賴于運(yùn)行的硬件和操作系統(tǒng)平臺(tái);根據(jù)流程定義, 控制流程的流轉(zhuǎn)過(guò)程和工作流執(zhí)行過(guò)程中各種狀態(tài)和狀態(tài)變化,同時(shí)為用戶提供流程跟蹤信息,使 得用戶能隨時(shí)查看流程的當(dāng)前狀態(tài)和流程的執(zhí)行過(guò)程。 為了定義流程并使用流程引擎的強(qiáng)大功能,應(yīng)用程序需要調(diào)用工作流系統(tǒng)提供的接口。我們盡 量為方便開(kāi)發(fā)考慮,為用戶提供功能強(qiáng)大而調(diào)用簡(jiǎn)單的接口,使用戶在短時(shí)間內(nèi)便可開(kāi)發(fā)出滿足需 要的應(yīng)用程序。 工作流系統(tǒng)的組成工作流系統(tǒng)的組成 工作流系統(tǒng)有以下三大模塊(如下圖): 工作流定義模塊; 工作流引擎; 應(yīng)用程序調(diào)用接口; 工作流平臺(tái)關(guān)系示意圖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44736-2024野生動(dòng)物保護(hù)繁育象
- 2024年度山西省高校教師資格證之高等教育法規(guī)自我提分評(píng)估(附答案)
- 2024年度年福建省高校教師資格證之高等教育學(xué)綜合練習(xí)試卷B卷附答案
- 2024年堿錳電池項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 新條令.新亮點(diǎn)-內(nèi)務(wù)條令解讀
- 2024年度衛(wèi)生間工程承建協(xié)議
- 基建類和生產(chǎn)類標(biāo)準(zhǔn)差異條款
- 2024賓館租賃與管理協(xié)議
- 2024年產(chǎn)品銷售與購(gòu)買具體協(xié)議
- 人教部編版二年級(jí)語(yǔ)文上冊(cè)第18課《劉胡蘭》精美課件
- 大學(xué)體育與健康知到章節(jié)答案智慧樹(shù)2023年吉林師范大學(xué)
- 脫不花三十天溝通訓(xùn)練營(yíng)
- 小學(xué)三年級(jí)八班家長(zhǎng)會(huì)課件
- 初三家長(zhǎng)會(huì)數(shù)學(xué)課件
- “雙減”背景下的小學(xué)英語(yǔ)作業(yè)優(yōu)化設(shè)計(jì)PPT
- GB/T 34474.1-2017鋼中帶狀組織的評(píng)定第1部分:標(biāo)準(zhǔn)評(píng)級(jí)圖法
- GB/T 25071-2010珠寶玉石及貴金屬產(chǎn)品分類與代碼
- 核醫(yī)學(xué)在血液與淋巴系統(tǒng)中的應(yīng)用
- 第一章 符號(hào)的世界和符號(hào)學(xué)方法
- GB/T 10362-2008糧油檢驗(yàn)玉米水分測(cè)定
- Ch1數(shù)值分析與科學(xué)計(jì)算引論
評(píng)論
0/150
提交評(píng)論