《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于J2EE的CAD协同设计的方案研究与实现

基于J2EE的CAD协同设计的方案研究与实现

2009-01-05
作者:何国军 梁允荣 张红梅

1. CSCW的概念及其發(fā)展

??? 對于CSCW,從管理者的角度來看,我們可以這樣認(rèn)為:在計(jì)算機(jī)支持下,他所管理的一個群體為了完成一項(xiàng)共同的任務(wù)而進(jìn)行協(xié)作。這個群體內(nèi)部又根據(jù)需要劃分為若干個工作組,每個工作組完成任務(wù)的一部分,各個工作組的工作集合起來完成整個任務(wù)。
??? CSCW自提出以來,在許多方面得到了廣泛應(yīng)用,主要有:電子會議系統(tǒng),協(xié)同設(shè)計(jì),醫(yī)療領(lǐng)域等,為了實(shí)現(xiàn)在分布式環(huán)境下的協(xié)同工作,在創(chuàng)建CSCW應(yīng)用系統(tǒng)時,人們提出了一些有指導(dǎo)性的協(xié)同模式,包括集中式同步模式,分布式同步模式,集中式異步模式,分布式異步模式[1]。
??? 常用于實(shí)現(xiàn)CSCW的方法主要有語音、視頻、文字、白板、應(yīng)用共享、數(shù)據(jù)共享等。為提高協(xié)同工作的效率,CSCW系統(tǒng)可能經(jīng)常會同時實(shí)現(xiàn)多種方法,使用戶可以通過多種途徑協(xié)同工作。
??? 本文實(shí)現(xiàn)的系統(tǒng)采用了數(shù)據(jù)共享和應(yīng)用共享兩種方式來實(shí)現(xiàn)CSCW,在工程數(shù)據(jù)庫的實(shí)現(xiàn)上采用基于工程數(shù)據(jù)庫管理的數(shù)據(jù)共享方法,這吸收了Web應(yīng)用的先天優(yōu)點(diǎn),實(shí)現(xiàn)的是分布式異步模式。在協(xié)同設(shè)計(jì)核心,采用應(yīng)用共享,實(shí)現(xiàn)了分布式同步模式。

2. 基于工程數(shù)據(jù)庫的協(xié)同設(shè)計(jì)系統(tǒng)簡介
2.1 采用Web形式進(jìn)行工程數(shù)據(jù)庫管理

??? 所謂Web形式,就是只安裝和維護(hù)一個Web服務(wù)器(Web Server),而客戶端采用瀏覽器(Browser),即傳統(tǒng)的瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)。B/S結(jié)構(gòu)的優(yōu)點(diǎn)是維護(hù)方便,能夠降低總體成本??蛻舳顺绦蜻\(yùn)行時就像我們平時上網(wǎng)瀏覽網(wǎng)頁一樣,有一個瀏覽器(通常是IE6.0)就行了,不用安裝其它支持軟件。B/S結(jié)構(gòu)的軟件所有的維護(hù)、升級工作都只在服務(wù)器上進(jìn)行,服務(wù)器進(jìn)行更改后就可以在客戶端上體現(xiàn)出來。
??? 相對于B/S結(jié)構(gòu),C/S結(jié)構(gòu)的圖形界面對于用戶來說是十分友好的,而且本地的圖形界面也提供了功能強(qiáng)大的事件以及消息處理機(jī)制,有利于處理邏輯密集型任務(wù),但實(shí)現(xiàn)CSCW需要進(jìn)行更低一層的編程。因此本系統(tǒng)采用基于數(shù)據(jù)共享的Web形式實(shí)現(xiàn)工程數(shù)據(jù)庫系統(tǒng),而關(guān)鍵的CSCW功能由一個內(nèi)嵌的Applet來完成。這個組件具有本地圖形界面的功能,能夠進(jìn)行消息處理,完成復(fù)雜的CSCW核心工作。
??? 在應(yīng)用服務(wù)器選擇方面,CGI標(biāo)準(zhǔn)能夠提供動態(tài)數(shù)據(jù),但CGI運(yùn)行在單獨(dú)的進(jìn)程里,使這種技術(shù)在效率上不可能很高;ISAPI/NSAPI是使用服務(wù)器特定的應(yīng)用編程接口來實(shí)現(xiàn)功能的,與web運(yùn)行在同一個進(jìn)程,任何錯誤都可能導(dǎo)致web進(jìn)程的摧毀;ASP技術(shù)可以把腳本代碼插入到HTML中,但多線程和數(shù)據(jù)共享實(shí)現(xiàn)困難,因此并發(fā)不易實(shí)現(xiàn);Java Servlet是服務(wù)器端獨(dú)立的軟件組件,是一個協(xié)議或平臺,Java Servlet在Web Server或Java Application Server上裝載并在JVM上運(yùn)行,可以在Web進(jìn)程之內(nèi)或之外運(yùn)行,完全依賴于設(shè)置,因?yàn)橛辛薐VM的支持,可以跨平臺,實(shí)現(xiàn)了多線程,每次請求只是建立一個線程,效率較高。在第一個請求到達(dá)時,Servlet是預(yù)先編譯好的Web程序,響應(yīng)HTTP請求較快,而且不存在代碼泄漏問題[2]。因此本文采用JSP/ Servlet技術(shù)實(shí)現(xiàn)了基于Web工程數(shù)據(jù)庫管理系統(tǒng)。見下圖:

??? 在系統(tǒng)工作過程中,某一客戶端(CAD協(xié)同設(shè)計(jì)者)發(fā)出HTTP請求,Controller Servlet負(fù)責(zé)接收這些請求,并做初步處理,如處理用戶權(quán)限驗(yàn)證等,Controller Servlet的另一項(xiàng)重要的工作是建立一系列哈希表并從屬性設(shè)置文件初始化這些哈希表,這些表中比較重要的是Coordinator Servlet映射表,它把Controller Servlet所接收到的事件映射到每一個Coordinator Servlet,并把控制轉(zhuǎn)到相應(yīng)的Coordinator Servlet,Coordinator Servlet的工作是調(diào)度相應(yīng)的JSP視圖;在內(nèi)部初始化Java Bean,并調(diào)度Java Bean完成業(yè)務(wù)邏輯的處理,把處理結(jié)果填入Java Bean,然后調(diào)度與其相關(guān)的JSP視圖,把Java Bean的狀態(tài)填入JSP視圖,然后把控制轉(zhuǎn)移到JSP視圖,由JSP視圖給客戶端產(chǎn)生響應(yīng)。在協(xié)同設(shè)計(jì)的情況下,JSP視圖通過內(nèi)嵌的組件啟動企業(yè)級設(shè)計(jì)程序,使得企業(yè)級設(shè)計(jì)程序通過系統(tǒng)與設(shè)計(jì)參數(shù)庫進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)設(shè)計(jì)的持久化與不同客戶端的基于數(shù)據(jù)共享的協(xié)同設(shè)計(jì)。

2.2 系統(tǒng)與工程數(shù)據(jù)庫的數(shù)據(jù)交換
??? 在本系統(tǒng)中,數(shù)據(jù)庫是各協(xié)同設(shè)計(jì)用戶之間進(jìn)行交互的物理基礎(chǔ)。各客戶之間的耦合正是通過對工程數(shù)據(jù)庫的不同權(quán)限來控制的。在訪問數(shù)據(jù)庫的接口設(shè)計(jì)方面,JDBC是一種可用于執(zhí)行SQL語句的Java API(Application Programming Interface應(yīng)用程序設(shè)計(jì)接口),采用JDBC來訪問數(shù)據(jù)庫成為系統(tǒng)的首選。JDBC由一些Java語言編寫的類和界面組成,為數(shù)據(jù)庫應(yīng)用、數(shù)據(jù)庫前臺工具提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,可以用純的Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。通過使用JDBC,可以方便的將SQL語句傳送給幾乎任何一種數(shù)據(jù)庫。也就是說,可以不必寫一個程序訪問Sybase,寫另一個程序訪問Oracle,再寫一個程序訪問Microsoft SQL Server,也就是說,可以不用進(jìn)行較大的修改而改變數(shù)據(jù)庫管理系統(tǒng)或者客戶端應(yīng)用,使得JDBC成為聯(lián)系應(yīng)用與數(shù)據(jù)的獨(dú)立層。用JDBC寫的程序能自動地將SQL語句傳送給DBMS(數(shù)據(jù)庫管理系統(tǒng)),不但如此,使用Java編寫的應(yīng)用程序可以在任何支持Java的平臺上運(yùn)行,不必在不同的平臺上編寫不同的應(yīng)用程序。Java和JDBC的結(jié)合可以在開發(fā)數(shù)據(jù)庫應(yīng)用時真正實(shí)現(xiàn)“一次編寫,隨處運(yùn)行[3]”。

2.3系統(tǒng)與I-DEAS的交互功能的實(shí)現(xiàn)
2.3.1 訪問I-DEAS的接口Open I-DEAS
??? 很多CAD系統(tǒng)提供了二次開發(fā)的接口,使用戶能夠很方便的與CAD軟件進(jìn)行通訊,這些通訊往往遵守一些特定的標(biāo)準(zhǔn)。就I-DEAS8.0 而言,與其通訊需要通過OPEN I-DEAS進(jìn)行。OPEN I-DEAS是一個基于CORBA規(guī)范的開放型接口組件,通過這個組件,應(yīng)用程序可以訪問I-DEAS中各種接口(用于描述CORBA服務(wù)器向客戶端所提供的服務(wù)的描述性語言是IDL,即Interface?? Description Language,IDL接口在向客戶端編程語言映射時,映射到C++編程語言時,映射為類,映射到Java時,映射為公共Java接口,因此本文提到的接口在C++的意義上是類,本文并不區(qū)分接口和類,所有接口字樣可以替換為類,以便于C++程序員的理解),通過訪問OPEN I-DEAS的接口就可以獲得I-DEAS的服務(wù)。 ?
??? OPEN I-DEAS實(shí)現(xiàn)了眾多的服務(wù)器接口和幾何接口、FEM接口、IDM元素接口、選取操作接口等,向I-DEAS客戶提供各種服務(wù)。幾乎所有的接口都從OI_Base直接或間接派生而來,OI_Base的直接子類主要包括各種服務(wù)器接口和OI_Root接口。關(guān)于OPEN I-DEAS實(shí)現(xiàn)的接口,見圖2。

其中:
OI_Server:訪問其他所有功能的“入口”接口,客戶應(yīng)用程序首先連接到這個接口,然后再通過這個接口提供的方法訪問其他接口。
OI_AccessControlServer:鎖定服務(wù)器端應(yīng)用程序,使之只能被一個客戶訪問。
OI_CommandServer:向I-DEAS會話發(fā)送記憶的命令。
OI_GUIServer:提供訪問I-DEAS的顏色、字體等GUI資源的途徑。
OI_SelectionServer:提供了從I-DEAS繪圖區(qū)域選取不同實(shí)體的功能。
OI_WorkbenchServer:提供了訪問I-DEAS工作臺的途徑。
OI_DataInstallation:提供了訪問I-DEAS數(shù)據(jù)管理系統(tǒng)的途徑。
OI_Root:由客戶請求而創(chuàng)建的接口的父類。
??? 存儲斗接口,零件接口,曲線接口,表面接口,有限元模型接口都從OI_Root接口派生而來,其派生關(guān)系見下圖。

其中:
OI_Bin:存儲斗接口。
OI_Part:零件接口。
OI_Curve:曲線接口。
OI_Surface:表面接口。
OI_FEModel:有限元模型接口。
??? 客戶在訪問I-DEAS時,首先調(diào)用OI_Connect()方法連接到Orbix服務(wù)器,該方法返回OI_Server接口的一個引用。然后由OI_Server接口訪問其他服務(wù)器接口或幾何接口、FEM接口、IDM元素接口等,然后使用這些接口的方法完成進(jìn)一步的操作。

2.3.2工程數(shù)據(jù)庫和I-DEAS數(shù)據(jù)交換的Applet的實(shí)現(xiàn)
??? 工程數(shù)據(jù)庫和I-DEAS的數(shù)據(jù)交換是采用JSP和Applet相結(jié)合的方式實(shí)現(xiàn)的,JSP通過JDBC連接到工程數(shù)據(jù)庫,而Applet 則遵循CORBA協(xié)議與OPEN I-DEAS進(jìn)行交互。
??? Java Applet是一個小的Java程序,它動態(tài)的從網(wǎng)上下載,就類似一個圖像或一段錄音剪輯。最重要的是Java Applet是一個智能化的程序,而不僅僅是一個動畫或多媒體文件,它能夠響應(yīng)用戶輸入,捕捉用戶發(fā)出的消息。它由瀏覽器所帶的Java虛擬機(jī)解釋執(zhí)行,Java Applet的這種特性使得系統(tǒng)的消息處理機(jī)制得以正常運(yùn)行。Java語言所提供的AWT(Abstract Window Toolkit)和Event類也使得使用HTML語言所實(shí)現(xiàn)的界面與傳統(tǒng)的VC、VB所實(shí)現(xiàn)的界面相比,毫不遜色。它提供了VB、VC等語言所提供的大部分界面實(shí)現(xiàn)功能。例如,菜單、對話框、窗口等,并提供了多種布局管理器,以達(dá)到視圖上的完美。對于事件處理,Java語言提供了Event類來捕捉各種事件,包括鍵盤、鼠標(biāo)等各種事件。Applet通過OPEN I-DEAS與I-DEAS建立通信,訪問或修改尺寸等參數(shù)的過程如下:
??? 首先連接到OPEN I-DEAS服務(wù)器,調(diào)用IIOPConnectServer()方法,生成OI_Server類的一個接口實(shí)例變量,就可以連接到OPEN I-DEAS服務(wù)器。調(diào)用OI_Server的GetBins()方法獲得存儲斗序列接口實(shí)例,存儲斗序列是存儲斗接口的集合,其每一個元素都是一個存儲斗接口實(shí)例。調(diào)用OI_Bin的GetParts()方法獲得存儲斗中的零件序列,并獲得零件接口。調(diào)用OI_Part的GetAllKeyDimensions()方法獲得尺寸序列,并獲得尺寸接口實(shí)例。調(diào)用尺寸接口的GetName()方法和GetValue()方法可獲取尺寸的名稱和值屬性。用ModifyValue()方法可修改尺寸的值。更改尺寸后,調(diào)用OI_Part接口的Update()方法可更新零件。
??? 本文實(shí)現(xiàn)的Applet,其核心就是通過OPEN I-DEAS與I-DEAS建立連接,通過訪問I-DEAS的接口,獲得存儲斗序列,進(jìn)一步獲得機(jī)件,零件,進(jìn)而修改零件尺寸。通過把零件尺寸寫入工程數(shù)據(jù)庫實(shí)現(xiàn)零件永久化,進(jìn)而實(shí)現(xiàn)PDM的部分功能。Applet技術(shù)是Java組件技術(shù)之一,在需要時從網(wǎng)絡(luò)上下載到本地,相對于COM技術(shù),Java Applet在根本上是安全的,因?yàn)榻忉屍髦挥性贏pplet的中間碼沒有異常的情況下才允許它運(yùn)行,而且不能訪問沒有訪問許可的內(nèi)存,所以采用Java技術(shù)和Applet提供了很高的安全性,使得部署系統(tǒng)而不用考慮安全問題。

3 .結(jié)論
????基于J2EE的Web形式的數(shù)據(jù)庫管理,由于有強(qiáng)大的Java技術(shù)做后盾,而且可以根據(jù)需要決定設(shè)計(jì)模式,實(shí)現(xiàn)N層應(yīng)用,是企業(yè)級Web應(yīng)用很好的解決方案?;贘ava的組件技術(shù),再加上CORBA規(guī)范的靈活性、跨語言能力、跨平臺實(shí)現(xiàn)及安全性等方,所以它成為實(shí)現(xiàn)真正的開放式結(jié)構(gòu)的應(yīng)用程序的首選標(biāo)準(zhǔn)。Java技術(shù)與CORBA規(guī)范結(jié)合,實(shí)現(xiàn)開放式多層次模塊化企業(yè)級應(yīng)用的方法,必將得到更深的研究和更快的發(fā)展。

4.參考文獻(xiàn):
[1] 潘耘,冷英男,李文超,么永輝,王小霞,CSCW的研究內(nèi)容及其關(guān)鍵技術(shù),撫順石油學(xué)院學(xué)報(bào),2001.09
[2] 鐘宏,Internet/Intranet關(guān)鍵技術(shù),北京理工大學(xué)課程講義,2002.9-2002.11
[3] Simon Brown,Robert Burdick等Professional JSP 2nd Edition
[4] http://java.sun.com/


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容