




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、以不變架構(gòu)應(yīng)多變業(yè)務(wù)該樣本程序在充分利用已有開源框架的基礎(chǔ)上,開發(fā)了獨立的 SinoSoftFrame 架構(gòu),基于 J2EE 規(guī)范實現(xiàn),主要分 為三層 : Web 層、業(yè)務(wù)層、持久層,很好地適應(yīng)了財產(chǎn)保險 行業(yè)的業(yè)務(wù)特點。財產(chǎn)保險行業(yè)業(yè)務(wù)具有以下特點1保險險類、險種、產(chǎn)品眾多財產(chǎn)保險公司往往有包括企財險類、家財險類、責(zé)任險類、工程險類、車險類、船舶險類和貨運險等幾十個險類,百個甚至幾百個業(yè)務(wù)險種。這些險類險種既有共性,又有 特性,如何將這些共性和特性有機(jī)地組織在一起是我們必須 要有效解決的問題。2全流程業(yè)務(wù)需要財產(chǎn)保險業(yè)務(wù)往往包含了投保、承保、批改、理賠、收付、財務(wù)等多個業(yè)務(wù)處理環(huán)節(jié),同時還要
2、通過掛接核保核賠 管理和單證管理功能來降低企業(yè)的經(jīng)營風(fēng)險。提供多種統(tǒng)計分析與查詢接口實現(xiàn)業(yè)務(wù)數(shù)據(jù)的統(tǒng)計分析,為企業(yè)經(jīng)營決策 提供及時、有效的支持和幫助。為統(tǒng)一架構(gòu)與開發(fā)規(guī)范,降 低保險公司的開發(fā)和維護(hù)成本,設(shè)計的技術(shù)架構(gòu)必須能滿足 眾多子系統(tǒng)的業(yè)務(wù)需求與技術(shù)要求。3新產(chǎn)品上線要求時間短保險公司為了搶占市場,爭奪客戶,從研發(fā)推出新產(chǎn)品到產(chǎn)品上線往往只有一周甚至更短的時間,這對我們的系統(tǒng) 架構(gòu)提出了極高的要求。4行業(yè)高速發(fā)展,業(yè)務(wù)多變保險行業(yè)是個高速發(fā)展的行業(yè),業(yè)務(wù)多變,這是當(dāng)前保險行業(yè)的特性決定的,我們只能去適應(yīng)這些變化。所以,要 求我們的架構(gòu)必須具備很強(qiáng)的應(yīng)變能力。5多語言支持隨著保險業(yè)的逐漸
3、對外放開,越來越多的外資保險公司成為我們的客戶。多語言支持成為這些客戶對我們系統(tǒng)的基 本要求之一。當(dāng)然財產(chǎn)保險行業(yè)還有其他一些特點,如全國大集中數(shù)據(jù)管理方式、總公司分公司分支機(jī)構(gòu)的管理模式、無紙化 單證管理等等。作為財產(chǎn)保險公司的行業(yè)解決方案,系統(tǒng)必 須能夠適應(yīng)以上這些行業(yè)特點,滿足財產(chǎn)保險公司向用戶提 供新業(yè)務(wù)、新服務(wù),適應(yīng)市場競爭的需要 ; 滿足各地區(qū)業(yè)務(wù)的變化性,適應(yīng)地方性險種管理的需要。從保險的定義出發(fā), 保險業(yè)務(wù)領(lǐng)域可分為投承保、批改、理賠等多個業(yè)務(wù)環(huán)節(jié), 針對樣本程序, 本文僅介紹承保業(yè)務(wù)。承保是保險業(yè)務(wù)的開始,承保信息關(guān)系到保單能否生成、與 投保人能否簽訂合同、能否出具保單等。本
4、樣板程序以保險 領(lǐng)域中“投保處理”環(huán)節(jié)作為參照實現(xiàn),所以我們此處僅針 對投保單相關(guān)的數(shù)據(jù)模型進(jìn)行重點說明。數(shù)據(jù)模型投保處理”環(huán)節(jié)涉及到了用戶投保錄入時的眾多信息元素,包含了基本信息、標(biāo)的信息、險種費用信息、條款信 息、共保信息等五大類。投保錄入主要涉及到四個主要的實 體對象 : 投保單主表、投保單險種表、標(biāo)的主表、標(biāo)的物險 別責(zé)任表。除了這四個主要實體對象之間存在著一對多的對 象關(guān)系外,每個實體對象還關(guān)聯(lián)著眾多的從屬對象。投保單主表是整張投保單的概括信息,它的相關(guān)從屬表有投保兌換率表、投保單條款表、保險關(guān)系人表、收費計劃 表等 ; 投保單險種相關(guān)表描述的投保單項下各險種的相關(guān)信 息,當(dāng)投保單中
5、存在多險種時,險種表描述多條險種信息, 它的相關(guān)從屬表有投保單保額保費表、險種條款表、險種費 用表等 ; 投保單中的標(biāo)的信息放在標(biāo)的相關(guān)表中進(jìn)行分類描 述,以區(qū)分不同險種下的不同標(biāo)的,它的相關(guān)從屬表根據(jù)險 類的不同有財產(chǎn)險標(biāo)的信息、車險標(biāo)的信息、動態(tài)標(biāo)的信息 等等 ; 標(biāo)的險別責(zé)任相關(guān)表是對投保單中標(biāo)的最明細(xì)的描 述。它的相關(guān)從屬表有標(biāo)的物責(zé)任條款表、險別責(zé)任附加費 表、險別責(zé)任免賠額表、險別責(zé)任賠償限額表等??傮w架構(gòu)本著“不重復(fù)造車輪但也絕不依賴于任何第三方框架”的設(shè)計思想,我們獨立設(shè)計開發(fā)了自己的基礎(chǔ)框架體系SinoSoftFrame ,在此 SinoSoftFrame 框架體系上,在部分
6、層 面引入一些優(yōu)秀的開源產(chǎn)品,集成到我們的框架體系SinoSoftFrame 中。這樣,當(dāng)已集成的產(chǎn)品在技術(shù)和效率上無 法滿足我們的業(yè)務(wù)需要時或在某個層面有更好、更快、更有中完成效的新產(chǎn)品時,我們可以很容易地從 SinoSoftFrame新產(chǎn)品的升級替換,而對已開發(fā)完成的業(yè)務(wù)實現(xiàn)代碼不產(chǎn)生 任何影響或?qū)⒂绊懡档阶畹汀?SinoSoftFrame 架構(gòu)基于 J2EE規(guī)范實現(xiàn),主要分為三層 : Web 層、業(yè)務(wù)層、持久層。WebWeb 層采用 MVC 模式,主要任務(wù)是接收用戶從頁面提交的請求和最終返回處理結(jié)果。 對于處理用戶請求來講,層的任務(wù)是讀取用戶提交的表單數(shù)據(jù), 把 HttpServletR
7、equest中的表單數(shù)據(jù)和請求參數(shù)封裝到數(shù)據(jù)傳輸對象DTO 中供業(yè)務(wù)層處理 ; 對于返回處理結(jié)果來講,Web 層的任務(wù)是把業(yè)務(wù)層處理完畢后返回的數(shù)據(jù)傳輸對象DTO 返回給 JSP 頁面展現(xiàn)給客戶。業(yè)務(wù)層主要完成業(yè)務(wù)邏輯的實現(xiàn)如業(yè)務(wù)數(shù)據(jù)校驗、業(yè)務(wù)邏輯處理、事務(wù)管理、記錄業(yè)務(wù)處理日志、拋出業(yè)務(wù)處理 異常等任務(wù)。持久層僅用來完成業(yè)務(wù)數(shù)據(jù)持久化和查詢讀取,這里采用關(guān)系型數(shù)據(jù)庫來完成數(shù)據(jù)的持久化保存,因此持久層主要 完成數(shù)據(jù)庫的 CRUD (增、刪、改、查) ,同時包含對存儲 異常的處理等任務(wù)。SinoSoftFrame 通過模擬 Spring 的實現(xiàn)機(jī)制建立了自己的容器實現(xiàn)機(jī)制,并通過定義接口、擴(kuò)展基
8、類等方法將對第,從而實現(xiàn)與第三三方依賴的內(nèi)容封裝到 SinoSoftFrame 中 方框架的解耦。下面重點說明一下在架構(gòu)設(shè)計的三層上具體 采用的實現(xiàn)方式或開源框架。因 Web 層確定采用 MVC 的設(shè)計模式, 而軟件開發(fā)領(lǐng)域有很多優(yōu)秀的 MVC 開源框架, 如 Struts、WebWork2 、SpringMVC等等,但也各有其優(yōu)缺點。SinoSoftFrame的 Web層實現(xiàn)選擇了 Struts,原因主要是基于它歷經(jīng)6年的不斷成熟、它的穩(wěn)定開發(fā)團(tuán)隊、它龐大的社區(qū)、用戶和程序員基礎(chǔ)。頁 面展現(xiàn)仍采用了傳統(tǒng)的 JSP Taglib 的實現(xiàn)方式。畢竟開發(fā) 成本也是架構(gòu)設(shè)計和選型要考慮的重要因素之一
9、。業(yè)務(wù)層框架的設(shè)計要求是增加模塊或代碼的復(fù)用性,降低業(yè)務(wù)類之間的耦合,減少程序修改帶來的“漣漪”效應(yīng)。在SinoSoftFrame的業(yè)務(wù)層我們選擇了Spring。Spring是一種無侵入式的輕量級框架,可以用簡單的POJO 去完成接口類 的定義及實現(xiàn)的調(diào)用,絕大多數(shù)業(yè)務(wù)對象都不需要依賴于Spring;可以很容易對業(yè)務(wù)層進(jìn)行單元測試;它促進(jìn)程序員養(yǎng)成好的編程習(xí)慣(把對接口編程而不是對類編程的代價幾乎 減少到零)。當(dāng)然,Spring框架帶給我們的優(yōu)勢不只以上這些, 它就像系統(tǒng)的粘合劑,對系統(tǒng)各個層面各個環(huán)節(jié)的功能、實 現(xiàn)框架都提供了無縫的支持。不過,最主要也是最重要的還 是 Spring 的 Io
10、c 模式實現(xiàn)( Ioc 通俗來說,就是在編制程序 時,只要寫被調(diào)用者的接口代碼,具體子類實例可通過配置 實現(xiàn))。SinoSoftFrame 選擇了 Hibernate 作為持久層實現(xiàn)。Hibernate是一種Java語言下的對象關(guān)系映射解決方案。它為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的映射,提供了一個使用方便的框架。它的設(shè)計目標(biāo)是將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來。Hibernate 不僅負(fù)責(zé)從 Java 類到數(shù)據(jù)庫表的映射(還包括從Java 數(shù)據(jù)類型到 SQL 數(shù)據(jù)類型的映射) ,還提供了面向?qū)ο?的數(shù)據(jù)查詢檢索機(jī)制,從而極大地縮短了手工處理 SQL 和JDBC
11、的時間,而且它不會強(qiáng)迫修改對象的行為方式,不需 要實現(xiàn)任何框架要求的接口。惟一需要做的就是創(chuàng)建一份XML “映射文檔” ,告訴框架你希望能夠保存在數(shù)據(jù)庫中的 類,以及它們?nèi)绾侮P(guān)聯(lián)到該數(shù)據(jù)庫中的表和列,然后就可以 要求它以對象的形式獲取數(shù)據(jù),或者把對象保存為數(shù)據(jù)。同 時,它可以支持多達(dá)十六種數(shù)據(jù)庫,包含企業(yè)級常用的Oracle、DB2、Informix、SQLServer、Sybase等。SinoSoftFrame系統(tǒng)架構(gòu)如圖 1 所示。同時, 為了提供最佳的用戶體驗, SinoSoftFrame 框架中還引入了 Ajax 的 DWR 實現(xiàn),加上 Ajax 的調(diào)用層次后,系 統(tǒng)調(diào)用架構(gòu)如圖 2
12、所示。輔助工具 代碼生成工具 JToolPad設(shè)計師設(shè)計框架的目的是為了解耦、應(yīng)變、統(tǒng)一規(guī)范、跨平臺、支持多語言,但程序員眼中的好框架更多的則是簡單易用、快速開發(fā)。而 SinoSoftFrame 框架包含了三層, 進(jìn)行應(yīng)用系統(tǒng)開發(fā)的程序員要面對眾多的接口和實現(xiàn)類以 及多個配置文件,顯然并不簡單。為此,我們獨立開發(fā)了輔 助代碼生成工具 JToolPad,用以生成 SinoSoftFrame框架中的部分類和配置文件。為了從程序員的角度查看該架構(gòu),我 們將 JToolPad 可以生成的類和配置文件以及框架本身提供 的基類去掉后的系統(tǒng)架構(gòu)圖如圖 3 所示。圖 3是程序員開發(fā)應(yīng)用系統(tǒng)時的框架結(jié)構(gòu),而針對
13、數(shù)據(jù)庫應(yīng)用系統(tǒng)中大多數(shù)的單表增、刪、改、查操作,JTool Pad還能生成更多的常見類及代碼,如圖 3 所示。從圖 3 可以看到,程序員在結(jié)合JToolPad 工具使用SinoSoftFrame 框架時,大多數(shù)情況下都只需要完成Web 層的頁面控制跳轉(zhuǎn) Action 及業(yè)務(wù)層的接口和接口實現(xiàn)類即可, 當(dāng)然還有少不了的JSP頁面和Action配置文件。如果程序員 還覺得麻煩, JToolPad 甚至還可以根據(jù)實現(xiàn)類直接生成對應(yīng) 的接口類(當(dāng)然從設(shè)計的角度出發(fā),不建議這么做) 自定義標(biāo)簽庫為了進(jìn)一步提高開發(fā)速度、統(tǒng)一頁面規(guī)范,SinoSoftFrame 框架中提供了多種自定義標(biāo)簽,如分頁導(dǎo)航 條、
14、通用操作命令按鈕、下拉列表、多語言自動支持、代碼 選擇域、用戶自定義風(fēng)格等。以分頁導(dǎo)航條為例,開發(fā)人員只需在頁面中相應(yīng)位置嵌入一段簡單的標(biāo)簽庫代碼即可在頁面上顯示風(fēng)格統(tǒng)一并可 自動實現(xiàn)上頁、下頁、第一頁、最后一頁、跳轉(zhuǎn)到指定頁的 分頁導(dǎo)航條。 基類及常用工具類為了易于擴(kuò)展 SinoSoftFrame 中各層的功能,也為了能通過 AOP 的方式完成業(yè)務(wù)的共性操作,如日志、權(quán)限檢測 等等。 SinoSoftFrame 在各層的基類中都提供了豐富的功能,險種代碼如 SQL 權(quán)限的自動封裝、 功能權(quán)限的判斷與檢測、 的自動替換、調(diào)試的 Log 自動輸出等。同時, SinoSoftFrame 還提供了專
15、門針對新版SinoSoftFrame 框架開發(fā)的工具類, 如頁面參數(shù)的封裝 (單 對象封裝及 List 對象自動封裝) 、Hibernate 的增強(qiáng)處理等等。 業(yè)務(wù)通用組件針對財產(chǎn)保險行業(yè)的領(lǐng)域特點及行業(yè)通用需求,SinoSoftFrame 中還特意提供了很多業(yè)務(wù)通過組件, 有用于頁 面的通用組件,如 : 嵌套多行輸入域、雙擊代碼選擇域、多 語言自支持等。也有用于系統(tǒng)后臺處理的通用組件,如 限管理、影像管理、打印管理、代碼管理、工作流管理等。這些組件有的是通過直接調(diào)用類的方式實現(xiàn),有的是通過標(biāo) 簽庫實現(xiàn),大粒度的組件則是按組件的使用規(guī)則和使用方法 實現(xiàn)。 引入的其他開源框架針對應(yīng)用系統(tǒng)開發(fā)中的
16、特定問題框架也引入了其他的優(yōu)秀開源框架。數(shù)據(jù)檢驗采用了 Validtor 校驗框架,通過配 置文件就可以對頁面的輸入域和多行數(shù)據(jù)域配置校驗規(guī)則 在使用 Ajax 為用戶提供最佳體驗方面,采用了 DWR 框架 ;系統(tǒng)安全認(rèn)證采用了 Acegi ,Acegi 是在 Spring 的基礎(chǔ)上實現(xiàn) 的一套安全認(rèn)證框架 ; 任務(wù)調(diào)度采用了 Quartz 調(diào)度框架。鏈接:實現(xiàn)范例我們通過“投保單保存”的一個實際調(diào)用過程說明一下SinoSoftFrame 的具體實現(xiàn)。 Web 層信息錄入我們將信息元素按業(yè)務(wù)分類組織在多個標(biāo)簽頁中,如基本信息、標(biāo)的信息、險種費用信息、條款信息、共保信息 等。每個標(biāo)簽頁中包含了該
17、類的主要錄入元素。投保相關(guān)的 頁面通過標(biāo)簽的形式組織在一起,其中標(biāo)簽庫包含的內(nèi)容在頁面中的展現(xiàn)就形成了投保頁面上的標(biāo)簽頁。其中每個標(biāo)簽頁中的內(nèi)容又根據(jù)頁面信息分類的不同包含在不同的JSP頁面中,通過標(biāo)簽庫有機(jī)地組織在一起。針對保險行業(yè)系統(tǒng)的國際化要求,JSP頁面基本上都是用 STRUTS 標(biāo)簽以及自定義標(biāo)簽來寫的。 Struts 配置文件相關(guān)定義JSP 頁面提交后交由 Struts 的 Action 處理,相應(yīng)的處理中。需要特別注類定義在配置文件 app-prpall-struts.xml 文件 意的是配置文件中包含的通配符“ $”的一行 forward ,內(nèi)容 如下:該通配符是對保險行業(yè)產(chǎn)品
18、眾多特點的特殊處理,配合SinoSoftFrame 的目錄結(jié)構(gòu)規(guī)范,開發(fā)人員只需在相應(yīng)的Action 中設(shè)置需要替換的險種代碼即可很輕松、很容易地完成相應(yīng)保險產(chǎn)品的自動跳轉(zhuǎn)。 Web 層 StrutsAction 說明系統(tǒng)應(yīng)用框架根據(jù) Struts 中的配置文件定義跳轉(zhuǎn)到GuProposalAction 類,系統(tǒng)應(yīng)用框架根據(jù) Request 中傳入的actionType 自動跳轉(zhuǎn)到的相應(yīng)方法中進(jìn)行處理(處理方法與actionType 同名)。Web層處理類Action首先將頁面參數(shù)組織到了投保單復(fù)合對象 GuProposalDto 中。 SinoSoftFrame 是通過 paramUtils
19、類完成頁面變量到 Dto 對象和列表對象自動轉(zhuǎn)換的。paramUtils是系統(tǒng)框架中提供的Request參數(shù)工具類。程序中簡單地通過 ParamUtils 的 generateObject 方法和 generateList方法就可以完成頁面參數(shù)到 DTO 對象間的自動映射。 業(yè)務(wù)層實現(xiàn)投保單服務(wù)類由接口定義類和實現(xiàn)類組成。接口和實現(xiàn)的分離從一定程度上消解了依賴關(guān)系,具體實現(xiàn)可以在編譯 期間發(fā)生變化。 GuProposal-Service 及GuProposalServiceSpringImpl 類圖如圖 5 所示。在GuProposalAction 中調(diào)用業(yè)務(wù)層進(jìn)行投保單保存的代碼如下圖 5 GuProposalService GuProposalServiceSpringImpl 類ServiceManager.getGuProposalService().insert(guProposalDto);首先通過 ServiceManager 類的 get 方法來獲得該服務(wù)接口類,然后通過 insert() 接口方法完成投保單的保存。方法的 具體實現(xiàn)是在服務(wù)接口實現(xiàn)類中完成的,系統(tǒng)編碼中引用的 是接口類,而接口的實現(xiàn)類是由 SinoSoftFrame 在運行期注 入的。接口和實現(xiàn)類的對應(yīng)關(guān)系通過配置文件App-prpall-service.xml 定義。 持久層實現(xiàn)持久層主要由兩部
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四防門合同范本
- 選區(qū)激光熔化制備閉孔泡沫鋁合金成形性的多維度解析與優(yōu)化策略
- 書倉儲合同范例
- 網(wǎng)箱養(yǎng)殖復(fù)雜理化環(huán)境對磷賦存形態(tài)的多維度影響探究
- 合同范本培訓(xùn)
- 合同能源管理服務(wù)合同范本
- 售后聯(lián)營商合同范例
- 探尋寧鴻彬語文教育思想:照亮現(xiàn)代語文教學(xué)的啟明星
- 雙方簽訂合作合同范本
- 各種加工合同范本
- 《少兒汽車知識講座》課件
- 部編人教版小學(xué)四年級下冊道德與法治全冊教案及每課教學(xué)反思
- 中建吊籃安拆專項施工方案(專家論證版)
- 《汽車維修接待實務(wù)》 課件全套 孫麗學(xué)習(xí)情景1-8 汽車維修服務(wù)接待認(rèn)知 -新能源汽車維修接待
- 2020年礦建監(jiān)理工作總結(jié)
- 獸醫(yī)學(xué)英語詞匯【參考】
- WS 308-2019 醫(yī)療機(jī)構(gòu)消防安全管理
- (高鴻業(yè))微觀經(jīng)濟(jì)學(xué)習(xí)題解析+微觀經(jīng)濟(jì)學(xué)題庫解析
- 浙江省溫州市2024-2025學(xué)年高三上學(xué)期一模英語試題 含解析
- 《尿11-脫氫血栓烷B2與其他危險因素的交互效應(yīng)在急性冠脈綜合征患者中的研究》
- 建筑施工安全生產(chǎn)包保責(zé)任實施方案
評論
0/150
提交評論