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