基于JSP的CAE主動(dòng)知識(shí)輔助系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
??????? 0 引言
??????? 機(jī)電產(chǎn)品設(shè)計(jì)中涉及復(fù)雜的分析計(jì)算, CAE (計(jì)算機(jī)輔助工程)是其中薄弱環(huán)節(jié)。CAE通常包括有限元、優(yōu)化設(shè)計(jì)、仿真技術(shù)、試驗(yàn)?zāi)B(tài)分析等,而有限元是其中最重要的組成部分。隨著對(duì)現(xiàn)代設(shè)計(jì)要求的不斷提高,不單單要求常規(guī)的線彈性有限元知識(shí),還要求深入的非線性、塑性和動(dòng)態(tài)有限元知識(shí)等,成為現(xiàn)代工程師的負(fù)擔(dān)。
本文針對(duì)汽車球頭銷的ANSYS有限元分析,基于JSP設(shè)計(jì)出一套網(wǎng)絡(luò)化知識(shí)輔助系統(tǒng)。該系統(tǒng)能診斷出用戶的知識(shí)盲點(diǎn),從而快速、準(zhǔn)確的返回動(dòng)態(tài)的相關(guān)查詢結(jié)果,達(dá)到機(jī)器向人的主動(dòng)知識(shí)輔助的目的。
??????? 1 系統(tǒng)實(shí)現(xiàn)技術(shù)的選擇
??????? 目前,制作動(dòng)態(tài)交互網(wǎng)頁(yè)的Web應(yīng)用開(kāi)發(fā)技術(shù)主要有三種: ASP(Active Server Page), PHP(ProfessionalHypertextPreprocessor)和JSP(Java ServerPages)。ASP是微軟公司開(kāi)發(fā)的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù),是腳本加COM的組合,由服務(wù)器端的解釋器負(fù)責(zé)解釋執(zhí)行,可以使用腳本語(yǔ)言和作為編程語(yǔ)言,可以與對(duì)象交互。但只能在微軟的平臺(tái)上運(yùn)行,運(yùn)行效率不高, 開(kāi)發(fā)較復(fù)雜[1]。
??????? PHP是運(yùn)行于服務(wù)器端的嵌入式腳本語(yǔ)言,解釋執(zhí)行可以跨平臺(tái)。但沒(méi)有統(tǒng)一的數(shù)據(jù)庫(kù)接口,如果改變數(shù)據(jù)庫(kù)平臺(tái),應(yīng)用程序也需要隨之改變。
??????? JSP是SUN公司于1999年6月開(kāi)發(fā)出來(lái)的一種全新的動(dòng)態(tài)頁(yè)面技術(shù)。它在傳統(tǒng)的HTML代碼中,利用HTML標(biāo)簽的擴(kuò)展,插入JSP腳本代碼,構(gòu)成JSP頁(yè)面[2]。JSP被很多Web服務(wù)器支持,可以跨平臺(tái)在很多操作系統(tǒng)下運(yùn)行; JSP能訪問(wèn)符合JDBC技術(shù)規(guī)范的數(shù)據(jù)庫(kù),所以不需要針對(duì)不同的數(shù)據(jù)庫(kù)而重新編寫(xiě)程序;在組件上JSP支持JavaBean,而JavaBean的開(kāi)發(fā)遠(yuǎn)比COM簡(jiǎn)單,且更改后無(wú)需象COM那樣重新注冊(cè);JSP具有很強(qiáng)的安全性。鑒于JSP的諸多優(yōu)點(diǎn),選擇它作為本系統(tǒng)的開(kāi)發(fā)工具非常理想。
??????? 2 系統(tǒng)的用戶設(shè)置和功能模塊設(shè)計(jì)
??????? 2·1 用戶設(shè)置設(shè)計(jì)
??????? 本系統(tǒng)用戶分為三種:系統(tǒng)管理員、專家用戶、普通用戶。
??????? 系統(tǒng)管理員:管理整個(gè)系統(tǒng)的所有用戶,所有模塊網(wǎng)頁(yè)。
??????? 專家用戶:對(duì)知識(shí)庫(kù)進(jìn)行管理,根據(jù)用戶需要對(duì)知識(shí)庫(kù)表的刪除、添加、編輯修改。
??????? 普通用戶:借助系統(tǒng)獲取知識(shí)輔助,向系統(tǒng)提問(wèn),為改進(jìn)系統(tǒng)留言。
??????? 2·2 功能模塊設(shè)計(jì)
??????? 2·2·1 前臺(tái)主要功能模塊設(shè)計(jì)
??????? 前臺(tái)模塊主要包括網(wǎng)站導(dǎo)航、用戶注冊(cè)及登錄、知識(shí)查詢搜索、知識(shí)分類、知識(shí)檢測(cè)及提供、用戶提問(wèn)、后臺(tái)登錄入口、用戶常見(jiàn)問(wèn)題排行等頁(yè)面。
??????? 其中知識(shí)檢測(cè)及提供是系統(tǒng)的核心部分。主要用戶是普通用戶,主要功能是判斷出用戶的知識(shí)盲點(diǎn),并提供相關(guān)知識(shí)點(diǎn)。此環(huán)節(jié)是采取設(shè)問(wèn)的方式確定用戶的知識(shí)欠缺,根據(jù)用戶需要可采用快速輔助和全面輔助兩種方式。全面輔助就是根據(jù)汽車球頭銷的有限元分析過(guò)程全面細(xì)致地考查,使用戶得到全面的主動(dòng)知識(shí)輔助;快速輔助利用輔助次數(shù)的統(tǒng)計(jì)由多到少排序,常見(jiàn)的知識(shí)障礙排到前面,從而達(dá)到了快速輔助的效果。
??????? 系統(tǒng)還為用戶提供了提問(wèn)的環(huán)節(jié):該部件獲取用戶的問(wèn)題文本[3]。用戶可選擇知識(shí)庫(kù)自動(dòng)答疑。系統(tǒng)對(duì)用戶所提的問(wèn)題文本進(jìn)行語(yǔ)義分析,得到問(wèn)題子串,形成搜索答案的條件,然后在知識(shí)庫(kù)搜索相近的答案,呈現(xiàn)給用戶。若沒(méi)搜索到相應(yīng)答案,系統(tǒng)將自動(dòng)此問(wèn)題提交到專家用戶的郵箱中,專家用戶回答完后,系統(tǒng)將信息反饋給普通用戶,在此同時(shí),普通用戶的問(wèn)題和專家用戶的答案被同時(shí)存儲(chǔ)到知識(shí)題庫(kù)中。下次普通用戶查詢同樣的問(wèn)題時(shí),系統(tǒng)就可以自動(dòng)給出答案。
??????? 2·2·2 后臺(tái)系統(tǒng)管理模塊設(shè)計(jì)
??????? 該模塊主要是面對(duì)系統(tǒng)管理員用戶,管理人員通過(guò)輸入正確的用戶名和密碼方可登錄到網(wǎng)站后臺(tái)。管理員的主要工作就是設(shè)置整個(gè)系統(tǒng)、系統(tǒng)部分模塊的開(kāi)放與關(guān)閉,維護(hù)前臺(tái)頁(yè)面,保證系統(tǒng)的正常運(yùn)行;協(xié)助專家用戶及時(shí)刪除、添加、修改知識(shí)庫(kù),數(shù)據(jù)備份;實(shí)現(xiàn)對(duì)系統(tǒng)中的用戶的增添、修改和刪除,修改用戶信息等。
??????? 3 實(shí)現(xiàn)過(guò)程
??????? 3·1 開(kāi)發(fā)工具及運(yùn)行環(huán)境
??????? 用JSP進(jìn)行網(wǎng)絡(luò)版CAE知識(shí)輔助系統(tǒng)的開(kāi)發(fā), JSP編程采用B/S (Browse/Server)模式,以Java為基礎(chǔ)語(yǔ)言,在Windows、UNIX (或Linux)平臺(tái)上均可運(yùn)行。應(yīng)用的軟件: Windows 2000 Server/XP操作平臺(tái)、SQL Server2000建立后臺(tái)數(shù)據(jù)庫(kù)、服務(wù)器選擇ApacheTomcat、JDK、集成開(kāi)發(fā)環(huán)境Eclipse。采用結(jié)構(gòu)化查詢語(yǔ)言SQL (StructureQueryLanguage)。
??????? 3·2 設(shè)計(jì)模式
??????? 本系統(tǒng)采取了JSP + JavaBean技術(shù)。在該模式中,JSP頁(yè)面響應(yīng)請(qǐng)求并將處理結(jié)果返回給客戶,所有的數(shù)據(jù)庫(kù)操作和復(fù)雜業(yè)務(wù)邏輯操作都通過(guò)JavaBean來(lái)實(shí)現(xiàn)。該技術(shù)實(shí)現(xiàn)了頁(yè)面的表現(xiàn)和頁(yè)面的商業(yè)邏輯相分離[4]。
??????? 3·3 知識(shí)表示及關(guān)系型知識(shí)庫(kù)的建立
??????? 用SQL Server建立知識(shí)庫(kù),應(yīng)用面向?qū)ο蟊硎痉ㄍ瓿芍R(shí)表示,專家知識(shí)庫(kù)是一個(gè)典型的線性與樹(shù)型相結(jié)合的層次結(jié)構(gòu)。把專業(yè)領(lǐng)域的大量專家知識(shí)歸納??偨Y(jié),根據(jù)汽車球頭銷有限元分析過(guò)程,將涉及到的材料力學(xué)、Ansys操作、非線性理論、球頭銷知識(shí)采用面向?qū)ο蟪绦蛟O(shè)計(jì),分別建立了對(duì)應(yīng)的知識(shí)表,其中各表之間通過(guò)其編號(hào)的內(nèi)容進(jìn)行關(guān)聯(lián)。知識(shí)庫(kù)表簡(jiǎn)單易懂,容易修改,通過(guò)對(duì)知識(shí)庫(kù)表的刪除、添加、編輯修改等操作,實(shí)現(xiàn)了知識(shí)樹(shù)的樹(shù)型數(shù)據(jù)結(jié)構(gòu)的知識(shí)表示和知識(shí)庫(kù)的建立。
??????? 3·4 利用JDBC實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)
??????? 在JSP技術(shù)中通常用JDBC實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的相連。如果要使用數(shù)據(jù)庫(kù),就必須使用JDBC。通過(guò)使用JDBC API來(lái)進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn),你可以在不修改應(yīng)用程序的情況下,改變所使用的數(shù)據(jù)庫(kù)驅(qū)動(dòng)。其基本流程如下。
??????? 3·4·1 建立到數(shù)據(jù)庫(kù)的連接[5]
??????? 首先加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)。如:
??????? Class·forName (“com.microsoft.jdbc.sqlsersver.SQLServerDriver”);
??????? 再指定連接字符串, JDBC連接字符串是由URL指定的,格式如下:
??????? Jdbc subprotocol subname
??????? 其中subprotocol是被請(qǐng)求的數(shù)據(jù)庫(kù)連接的類型(如Oracle、DB2等),而subname提供了所需要建立的連接的一些附加信息。
??????? 3·4·2 執(zhí)行SQL語(yǔ)句
??????? 在數(shù)據(jù)庫(kù)成功建立連接以后,就可以執(zhí)行那些完成實(shí)際工作的SQL語(yǔ)句了。首先必須創(chuàng)建一個(gè)語(yǔ)句對(duì)象,用于向數(shù)據(jù)庫(kù)引擎發(fā)送SQL語(yǔ)言。有三種不同類型的語(yǔ)句對(duì)象:
??????? (1) Statement?;镜恼Z(yǔ)句對(duì)象,提供了直接在數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句的方法。適合于對(duì)那些只執(zhí)行了一次的查詢語(yǔ)句,如CreateTable、DropTable等。
??????? (2) Preparedstatement。用于那些需要執(zhí)行多次,每次僅僅是數(shù)據(jù)取值不同的SQL語(yǔ)句。
??????? (3) Callablestatement。用于訪問(wèn)數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程。
??????? 3·4·3 處理結(jié)果
??????? 在執(zhí)行了一個(gè)SQL語(yǔ)句后,必須處理得到的結(jié)果。SQL查詢(Select語(yǔ)句)返回一個(gè)含有查詢結(jié)果的結(jié)果集。結(jié)果集由行和列組成,各列數(shù)據(jù)可以通過(guò)相應(yīng)數(shù)據(jù)庫(kù)類型的一系列Get方法(getString、getInt或getObject等)得到,如要從Ansys操作表(Ansys_table)中得到操作對(duì)象(Object)為點(diǎn)的創(chuàng)建(Cre-ate)過(guò)程,用Java可以這樣實(shí)現(xiàn):
……
PreparedStatement Stmt = Con. prepareStatement
(“Select* From Ansys_TablewhereObject=‘點(diǎn)’”);
ResultSetRs = stmt. executeQuery();
StringRs_data = Rs. getString(“Create”);
Out. println(“點(diǎn)的創(chuàng)建:”+ Rs_data);
……
??????? 在取得了一行記錄的所有數(shù)據(jù)后,可以調(diào)用Next()方法來(lái)移動(dòng)游標(biāo)到下個(gè)記錄。
??????? 3·4·4 從數(shù)據(jù)庫(kù)斷開(kāi)連接
??????? 在結(jié)果集、語(yǔ)句和連接對(duì)象用完以后,必須正確地關(guān)閉它們。通過(guò)調(diào)用Close ()方法,可以確保正確釋放與特定數(shù)據(jù)庫(kù)系統(tǒng)相關(guān)的所有資源。
??????? 4 結(jié)束語(yǔ)
??????? 系統(tǒng)以汽車球頭銷的Ansys有限元分析為例,判斷使用者的知識(shí)結(jié)構(gòu),并主動(dòng)地提供知識(shí)輔助,從而降低腦力勞動(dòng)的成本。但在實(shí)現(xiàn)時(shí)還存在一些需要改進(jìn)的問(wèn)題,如在提高檢測(cè)用戶知識(shí)盲點(diǎn)的準(zhǔn)確度,如何優(yōu)化數(shù)據(jù)庫(kù)動(dòng)態(tài)檢索,提升系統(tǒng)自學(xué)習(xí)能力等。今后,將針對(duì)這些問(wèn)題展開(kāi)進(jìn)一步的研究。
評(píng)論
查看更多