(機(jī)械科學(xué)研究總院,北京 100044)
在高檔數(shù)控機(jī)床、航空航天裝備和海洋工程裝備等重點(diǎn)發(fā)展領(lǐng)域的產(chǎn)品零部件制造過(guò)程中,合理、科學(xué)地選用材料是零部件設(shè)計(jì)制造的關(guān)鍵環(huán)節(jié)。常用金屬材料標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)的建立,有助于產(chǎn)品設(shè)計(jì)人員對(duì)金屬材料性能數(shù)據(jù)準(zhǔn)確、高效、規(guī)范和安全的應(yīng)用,從而實(shí)現(xiàn)科學(xué)地選用材料。
JSP即Java Server Pages簡(jiǎn)稱,是一種基于Java平臺(tái)系統(tǒng)的Web開發(fā)技術(shù),它以Java為腳本語(yǔ)言,為整個(gè)服務(wù)器端的Java庫(kù)單元提供一個(gè)接口,以便服務(wù)HTTP應(yīng)用程序。目前,主流的網(wǎng)站開發(fā)語(yǔ)言有CGI、ASP、PHP、ASP.NET及JSP等。其中,JSP和ASP是兩種常見的Web開發(fā)技術(shù)。相較于ASP,JSP程序應(yīng)用相對(duì)獨(dú)立、擴(kuò)展性好、開發(fā)效率高,利用該技術(shù)能夠建立跨平臺(tái)的、安全的動(dòng)態(tài)網(wǎng)站[1],受到了軟件開發(fā)人員的青睞。近年來(lái),隨著JSP技術(shù)的廣泛應(yīng)用,Web數(shù)據(jù)庫(kù)技術(shù)取得了長(zhǎng)足發(fā)展,這為材料數(shù)據(jù)庫(kù)應(yīng)用提供了高效的開發(fā)平臺(tái),并使它在材料研究、產(chǎn)品設(shè)計(jì)及機(jī)械加工等領(lǐng)域中發(fā)揮著重要作用。本文結(jié)合常用金屬材料標(biāo)準(zhǔn)數(shù)據(jù)模型,開發(fā)了常用金屬材料標(biāo)準(zhǔn)的檢索系統(tǒng)。
關(guān)系數(shù)據(jù)庫(kù)是對(duì)常用金屬材料標(biāo)準(zhǔn)內(nèi)容的深度揭示。其構(gòu)建是根據(jù)金屬材料標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu),結(jié)合關(guān)系型數(shù)據(jù)庫(kù)結(jié)構(gòu)要求,采用實(shí)體關(guān)系E-R數(shù)據(jù)模型設(shè)計(jì)方法,對(duì)數(shù)據(jù)庫(kù)進(jìn)行概念設(shè)計(jì),及以符合數(shù)據(jù)庫(kù)規(guī)范為目的的物理設(shè)計(jì),最終建立規(guī)范化的關(guān)系數(shù)據(jù)庫(kù)[2]。
通過(guò)挖掘現(xiàn)行國(guó)家標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn)中金屬材料的使用性能參數(shù)(包括屈服強(qiáng)度、硬度、斷面伸長(zhǎng)率等力學(xué)性能參數(shù))和工藝參數(shù)(包括熱處理、切削加工等性能參數(shù)),分別從材料尺寸、力學(xué)性能、化學(xué)成分組成及功能用途等不同維度進(jìn)行歸類,建立數(shù)據(jù)庫(kù)的實(shí)體關(guān)系,從而實(shí)現(xiàn)數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)。概念模型由零件、材料及標(biāo)準(zhǔn)文件實(shí)體組成。其中,各實(shí)體之間的聯(lián)系如下:標(biāo)準(zhǔn)文件規(guī)定中,一種零件可以由多種金屬材料加工制成,一種材料可以加工制成多種不同的零件,故實(shí)體金屬材料和零件之間是多對(duì)多的聯(lián)系,E-R數(shù)據(jù)模型如圖1所示。結(jié)合第一范式要求即每一個(gè)分量是不可分的數(shù)據(jù)項(xiàng),對(duì)每個(gè)實(shí)體定義的屬性如下:
材料:屬性有材料名稱、牌號(hào)、特性、化學(xué)成分;
零件:屬性有零件名稱、試樣尺寸、狀態(tài)、用途、力學(xué)性能。
邏輯結(jié)構(gòu)設(shè)計(jì)是將E-R數(shù)據(jù)模型圖轉(zhuǎn)換為與SQL Server2008 R2數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。根據(jù)m:n聯(lián)系的轉(zhuǎn)換原則,將E-R數(shù)據(jù)模型圖中實(shí)體型、實(shí)體屬性和實(shí)體型之間的聯(lián)系轉(zhuǎn)換為以下關(guān)系模型[3]。然后結(jié)合函數(shù)依賴的原則,用下劃線分別標(biāo)出各實(shí)體關(guān)系的主鍵:
材料:{牌號(hào)、材料名稱、特性,化學(xué)成分}
零件:{零件名稱、試樣尺寸、狀態(tài)、用途、力學(xué)性能}
最后通過(guò)關(guān)系模式合并,把數(shù)據(jù)劃分為邏輯上相互關(guān)聯(lián)、結(jié)構(gòu)上相互獨(dú)立的表結(jié)構(gòu)?;谏鲜鲫P(guān)系模式的數(shù)據(jù)表中,每一個(gè)非主屬性既不依賴于主碼,也不傳遞依賴于主碼[4],達(dá)到了3NF。
根據(jù)上述設(shè)計(jì)的關(guān)系模式和表結(jié)構(gòu),將金屬材料的相關(guān)信息存儲(chǔ)到SQL Server2008 R2數(shù)據(jù)庫(kù)管理系統(tǒng)中,建立數(shù)據(jù)源,從而實(shí)現(xiàn)計(jì)算機(jī)數(shù)據(jù)庫(kù)的物理設(shè)計(jì)[5]。同時(shí)為了維護(hù)數(shù)據(jù)庫(kù)的完整性,數(shù)據(jù)庫(kù)管理系統(tǒng)提供了定義完整性約束條件的機(jī)制及檢查的方法。
隨著企業(yè)對(duì)標(biāo)準(zhǔn)文件中金屬性能參數(shù)需求的增長(zhǎng),相應(yīng)的業(yè)務(wù)規(guī)則便隨之而改變,應(yīng)用程序中的部分片段則需要改寫,由于JSP程序開發(fā)相對(duì)獨(dú)立,在其組件技術(shù)的支持下,程序內(nèi)容和邏輯相互獨(dú)立,這使龐大、組件化的Web系統(tǒng)易于創(chuàng)建、管理和維護(hù)。故相較于其他網(wǎng)頁(yè)開發(fā)語(yǔ)言,JSP技術(shù)更適合于常用材料金屬標(biāo)準(zhǔn)檢索系統(tǒng)的開發(fā)。
整個(gè)系統(tǒng)基于SQL Server2008 R2數(shù)據(jù)庫(kù)管理系統(tǒng)+JDK1.8開發(fā)環(huán)境+應(yīng)用服務(wù)器Tomcat5.5的運(yùn)行平臺(tái),采用了B/S結(jié)構(gòu)及JDBC(Java Database Connectivity)技術(shù)以實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。在傳統(tǒng)的C/S結(jié)構(gòu)中,客戶端需要大部分應(yīng)用邏輯的實(shí)現(xiàn)和界面的呈現(xiàn),增加了客戶端應(yīng)用程序的復(fù)雜度,所以維護(hù)龐大且節(jié)點(diǎn)眾多的客戶機(jī)則是一件復(fù)雜的工作;B/S構(gòu)架系統(tǒng)既能實(shí)現(xiàn)“瘦客戶端”,也能實(shí)現(xiàn)用戶界面和企業(yè)邏輯的隔離,便于系統(tǒng)維護(hù)和修改,系統(tǒng)的開放性和靈活性提高[6]。因此,常用金屬材料標(biāo)準(zhǔn)檢索平臺(tái)采用了表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層的B/S三層結(jié)構(gòu)體系,如圖2所示。B/S三層結(jié)構(gòu)體系,分離結(jié)構(gòu)和代碼封裝清晰明確,模塊之間“高內(nèi)聚、低耦合”,使應(yīng)用程序易于擴(kuò)展、維護(hù)和重用。
2.2.1 工廠模式的應(yīng)用
為了保證代碼的易讀、可靠及可重復(fù)利用,針對(duì)面向?qū)ο笙到y(tǒng)中重復(fù)出現(xiàn)的設(shè)計(jì)問(wèn)題,提出通用的設(shè)計(jì)方案并進(jìn)行系統(tǒng)化的命名和動(dòng)機(jī)解釋。這些用以表述程序運(yùn)行時(shí)復(fù)雜控制流的方法稱為設(shè)計(jì)模式,它是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)[7]。
工廠模式屬于設(shè)計(jì)模式中的創(chuàng)建型模式。它把對(duì)象的創(chuàng)建封裝起來(lái),隱藏對(duì)象創(chuàng)建的過(guò)程,使用專門的模塊創(chuàng)建,這使得創(chuàng)建實(shí)例的任務(wù)與使用實(shí)例的任務(wù)分割開來(lái),程序代碼不再依賴于對(duì)象的具體細(xì)節(jié)[8]。該模式負(fù)責(zé)將大量有共同接口的類實(shí)例化,而每個(gè)類都能根據(jù)需要返回不同的對(duì)象。
該系統(tǒng)的數(shù)據(jù)訪問(wèn)層采用簡(jiǎn)單工廠模式。其中,數(shù)據(jù)實(shí)體對(duì)應(yīng)常用鋼種、銅及銅合金和鋁及鋁合金等相應(yīng)的數(shù)據(jù)表,結(jié)合業(yè)務(wù)規(guī)則抽象為類,數(shù)據(jù)表中的字段均被抽象為類的屬性,放到名為domain的程序集中,如圖3所示。
對(duì)數(shù)據(jù)庫(kù)的Select(選擇)、Update(更新)等操作,均被抽象為單獨(dú)的接口模塊,即JavaBean組件。系統(tǒng)的業(yè)務(wù)邏輯層調(diào)用接口的方法返回業(yè)務(wù)實(shí)體類的實(shí)例。調(diào)用MetalInfoQueryForm Bean接口執(zhí)行查詢功能的部分代碼如下:
2.2.2 框架代碼的集成
該系統(tǒng)采用了MVC編程模式。MVC模式是軟件工程中的一種代碼架構(gòu),包括模型、視圖和控制器三部分,其結(jié)構(gòu)如圖4所示。其中,模型(Model)是應(yīng)用程序中用于處理數(shù)據(jù)邏輯的部分,是系統(tǒng)功能響應(yīng)代碼,包含完成業(yè)務(wù)所需要的數(shù)據(jù)、操作和規(guī)則;視圖(View)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,為系統(tǒng)內(nèi)部與外部的接口。它既能接收用戶輸入的數(shù)據(jù),觸發(fā)應(yīng)用邏輯運(yùn)行,又能將邏輯運(yùn)行的結(jié)果以一定的形式呈現(xiàn)給用戶;控制器(Controller)是應(yīng)用程序中處理用戶交互的部分,從外部視圖接受請(qǐng)求,將用戶與視圖的交互轉(zhuǎn)換為基于應(yīng)用程序行為的標(biāo)準(zhǔn)業(yè)務(wù)事件,再將標(biāo)準(zhǔn)業(yè)務(wù)事件解析為模型對(duì)應(yīng)的動(dòng)作,是模型與視圖的連接橋梁。同時(shí),模型的更新及修改也通過(guò)控制器來(lái)與視圖相匹配,從而保持各個(gè)視圖與模型的一致性[9]。
圖4 MVC框架結(jié)構(gòu)
基于MVC框架結(jié)構(gòu),該系統(tǒng)采用了JSP、JavaBean、Servlet模式來(lái)實(shí)現(xiàn)Web數(shù)據(jù)庫(kù)技術(shù),數(shù)據(jù)處理流程如圖5所示。其中,JSP的腳本程序用作視圖顯示,模型功能通過(guò)JavaBean組件來(lái)實(shí)現(xiàn),Servlet則是應(yīng)用程序的控制器。控制器Servlet接受界面發(fā)送的請(qǐng)求,并根據(jù)請(qǐng)求信息將它們分發(fā)給適當(dāng)?shù)腏SP頁(yè)面來(lái)產(chǎn)生動(dòng)作響應(yīng)。同時(shí),控制器Servlet根據(jù)來(lái)自JSP視圖的請(qǐng)求生成JavaBean實(shí)例并輸出給JSP頁(yè)面。隨后,Servlet設(shè)置Bean的屬性供JSP讀取,然后進(jìn)行顯示。這種設(shè)計(jì)模式很好地實(shí)現(xiàn)了數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層與表現(xiàn)層的分離,使軟件開發(fā)工作更加容易和迅速[10]。
該系統(tǒng)具有豐富的、多維度的查詢檢索功能。
在系統(tǒng)應(yīng)用界面中,點(diǎn)擊左側(cè)不同材料菜單項(xiàng)則顯示相應(yīng)的動(dòng)態(tài)材料查詢樹。材料查詢樹中的每個(gè)節(jié)點(diǎn)為材料類別,選擇不同的節(jié)點(diǎn)則在右側(cè)展示相應(yīng)的查詢信息。例如,選擇常用鋼種目錄下的非調(diào)質(zhì)機(jī)械結(jié)構(gòu)鋼,則所有材料牌號(hào)下對(duì)應(yīng)該鋼種的數(shù)據(jù)會(huì)在右側(cè)列表動(dòng)態(tài)呈現(xiàn),如圖6所示。
圖5 JSP MVC架構(gòu)數(shù)據(jù)處理流程
圖6 系統(tǒng)應(yīng)用界面
該系統(tǒng)能夠?qū)崿F(xiàn)金屬材料性能指標(biāo)的模糊查詢及組合查詢。模糊查詢指系統(tǒng)按照用戶輸入的關(guān)鍵詞進(jìn)行模糊檢索,如在查詢條件名稱中輸入“結(jié)構(gòu)鋼”,右側(cè)則呈現(xiàn)材料名稱中包含“結(jié)構(gòu)鋼”的系列信息;組合查詢指系統(tǒng)執(zhí)行多個(gè)查詢條件并返回一個(gè)結(jié)果集,該綜合查詢列表中有 “力學(xué)性能”及“化學(xué)成分”兩個(gè)綜合查詢的選項(xiàng),每一項(xiàng)包含若干性能指標(biāo),如 “力學(xué)性能”選項(xiàng),則包含“抗拉強(qiáng)度”、“屈服強(qiáng)度”、“沖擊吸收功”、“斷后伸長(zhǎng)率”、“斷面收縮率”等五個(gè)級(jí)聯(lián)條件, “化學(xué)成分”選項(xiàng),則會(huì)呈現(xiàn)“銅”、“碳”、“鋅”、“鎳”、“鉻”等多種化學(xué)元素的級(jí)聯(lián)條件,如圖7所示。
圖7 性能指標(biāo)查詢
右側(cè)內(nèi)容區(qū)則會(huì)根據(jù)組合查詢條件,如材料牌號(hào)、名稱、標(biāo)準(zhǔn)文件號(hào)、屈服強(qiáng)度和含碳量等級(jí)聯(lián)條件,動(dòng)態(tài)呈現(xiàn)金屬材料數(shù)據(jù)。
作為一種動(dòng)態(tài)的Web應(yīng)用開發(fā)技術(shù),JSP具有靈活、可移植及安全等特點(diǎn),使得常用金屬材料標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)方便,操作簡(jiǎn)單,運(yùn)行高效,易于維護(hù)。
本文通過(guò)對(duì)金屬材料數(shù)據(jù)模型的構(gòu)建,建立了符合規(guī)范的關(guān)系數(shù)據(jù)庫(kù),使得國(guó)家標(biāo)準(zhǔn)文件中常用金屬材料性能等信息能夠在計(jì)算機(jī)中表示、組織和處理,從而使產(chǎn)品設(shè)計(jì)研發(fā)人員能夠在權(quán)限機(jī)制控制下實(shí)時(shí)獲取材料信息和應(yīng)用材料數(shù)據(jù),進(jìn)而能夠有效幫助企業(yè)在產(chǎn)品研發(fā)過(guò)程中收集、整理、控制和使用金屬材料數(shù)據(jù),實(shí)現(xiàn)材料數(shù)據(jù)的準(zhǔn)確、高效、規(guī)范、安全應(yīng)用,顯著提高設(shè)計(jì)工作效率。