1. CSCW的概念及其發(fā)展
??? 對(duì)于CSCW,從管理者的角度來(lái)看,我們可以這樣認(rèn)為:在計(jì)算機(jī)支持下,他所管理的一個(gè)群體為了完成一項(xiàng)共同的任務(wù)而進(jìn)行協(xié)作。這個(gè)群體內(nèi)部又根據(jù)需要?jiǎng)澐譃槿舾蓚€(gè)工作組,每個(gè)工作組完成任務(wù)的一部分,各個(gè)工作組的工作集合起來(lái)完成整個(gè)任務(wù)。
??? CSCW自提出以來(lái),在許多方面得到了廣泛應(yīng)用,主要有:電子會(huì)議系統(tǒng),協(xié)同設(shè)計(jì),醫(yī)療領(lǐng)域等,為了實(shí)現(xiàn)在分布式環(huán)境下的協(xié)同工作,在創(chuàng)建CSCW應(yīng)用系統(tǒng)時(shí),人們提出了一些有指導(dǎo)性的協(xié)同模式,包括集中式同步模式,分布式同步模式,集中式異步模式,分布式異步模式[1]。
??? 常用于實(shí)現(xiàn)CSCW的方法主要有語(yǔ)音、視頻、文字、白板、應(yīng)用共享、數(shù)據(jù)共享等。為提高協(xié)同工作的效率,CSCW系統(tǒng)可能經(jīng)常會(huì)同時(shí)實(shí)現(xiàn)多種方法,使用戶(hù)可以通過(guò)多種途徑協(xié)同工作。
??? 本文實(shí)現(xiàn)的系統(tǒng)采用了數(shù)據(jù)共享和應(yīng)用共享兩種方式來(lái)實(shí)現(xiàn)CSCW,在工程數(shù)據(jù)庫(kù)的實(shí)現(xiàn)上采用基于工程數(shù)據(jù)庫(kù)管理的數(shù)據(jù)共享方法,這吸收了Web應(yīng)用的先天優(yōu)點(diǎn),實(shí)現(xiàn)的是分布式異步模式。在協(xié)同設(shè)計(jì)核心,采用應(yīng)用共享,實(shí)現(xiàn)了分布式同步模式。
2. 基于工程數(shù)據(jù)庫(kù)的協(xié)同設(shè)計(jì)系統(tǒng)簡(jiǎn)介
2.1 采用Web形式進(jìn)行工程數(shù)據(jù)庫(kù)管理
??? 所謂Web形式,就是只安裝和維護(hù)一個(gè)Web服務(wù)器(Web Server),而客戶(hù)端采用瀏覽器(Browser),即傳統(tǒng)的瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)。B/S結(jié)構(gòu)的優(yōu)點(diǎn)是維護(hù)方便,能夠降低總體成本??蛻?hù)端程序運(yùn)行時(shí)就像我們平時(shí)上網(wǎng)瀏覽網(wǎng)頁(yè)一樣,有一個(gè)瀏覽器(通常是IE6.0)就行了,不用安裝其它支持軟件。B/S結(jié)構(gòu)的軟件所有的維護(hù)、升級(jí)工作都只在服務(wù)器上進(jìn)行,服務(wù)器進(jìn)行更改后就可以在客戶(hù)端上體現(xiàn)出來(lái)。
??? 相對(duì)于B/S結(jié)構(gòu),C/S結(jié)構(gòu)的圖形界面對(duì)于用戶(hù)來(lái)說(shuō)是十分友好的,而且本地的圖形界面也提供了功能強(qiáng)大的事件以及消息處理機(jī)制,有利于處理邏輯密集型任務(wù),但實(shí)現(xiàn)CSCW需要進(jìn)行更低一層的編程。因此本系統(tǒng)采用基于數(shù)據(jù)共享的Web形式實(shí)現(xiàn)工程數(shù)據(jù)庫(kù)系統(tǒng),而關(guān)鍵的CSCW功能由一個(gè)內(nèi)嵌的Applet來(lái)完成。這個(gè)組件具有本地圖形界面的功能,能夠進(jìn)行消息處理,完成復(fù)雜的CSCW核心工作。
??? 在應(yīng)用服務(wù)器選擇方面,CGI標(biāo)準(zhǔn)能夠提供動(dòng)態(tài)數(shù)據(jù),但CGI運(yùn)行在單獨(dú)的進(jìn)程里,使這種技術(shù)在效率上不可能很高;ISAPI/NSAPI是使用服務(wù)器特定的應(yīng)用編程接口來(lái)實(shí)現(xiàn)功能的,與web運(yùn)行在同一個(gè)進(jìn)程,任何錯(cuò)誤都可能導(dǎo)致web進(jìn)程的摧毀;ASP技術(shù)可以把腳本代碼插入到HTML中,但多線(xiàn)程和數(shù)據(jù)共享實(shí)現(xiàn)困難,因此并發(fā)不易實(shí)現(xiàn);Java Servlet是服務(wù)器端獨(dú)立的軟件組件,是一個(gè)協(xié)議或平臺(tái),Java Servlet在Web Server或Java Application Server上裝載并在JVM上運(yùn)行,可以在Web進(jìn)程之內(nèi)或之外運(yùn)行,完全依賴(lài)于設(shè)置,因?yàn)橛辛薐VM的支持,可以跨平臺(tái),實(shí)現(xiàn)了多線(xiàn)程,每次請(qǐng)求只是建立一個(gè)線(xiàn)程,效率較高。在第一個(gè)請(qǐng)求到達(dá)時(shí),Servlet是預(yù)先編譯好的Web程序,響應(yīng)HTTP請(qǐng)求較快,而且不存在代碼泄漏問(wèn)題[2]。因此本文采用JSP/ Servlet技術(shù)實(shí)現(xiàn)了基于Web工程數(shù)據(jù)庫(kù)管理系統(tǒng)。見(jiàn)下圖:

??? 在系統(tǒng)工作過(guò)程中,某一客戶(hù)端(CAD協(xié)同設(shè)計(jì)者)發(fā)出HTTP請(qǐng)求,Controller Servlet負(fù)責(zé)接收這些請(qǐng)求,并做初步處理,如處理用戶(hù)權(quán)限驗(yàn)證等,Controller Servlet的另一項(xiàng)重要的工作是建立一系列哈希表并從屬性設(shè)置文件初始化這些哈希表,這些表中比較重要的是Coordinator Servlet映射表,它把Controller Servlet所接收到的事件映射到每一個(gè)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視圖給客戶(hù)端產(chǎn)生響應(yīng)。在協(xié)同設(shè)計(jì)的情況下,JSP視圖通過(guò)內(nèi)嵌的組件啟動(dòng)企業(yè)級(jí)設(shè)計(jì)程序,使得企業(yè)級(jí)設(shè)計(jì)程序通過(guò)系統(tǒng)與設(shè)計(jì)參數(shù)庫(kù)進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)設(shè)計(jì)的持久化與不同客戶(hù)端的基于數(shù)據(jù)共享的協(xié)同設(shè)計(jì)。
2.2 系統(tǒng)與工程數(shù)據(jù)庫(kù)的數(shù)據(jù)交換
??? 在本系統(tǒng)中,數(shù)據(jù)庫(kù)是各協(xié)同設(shè)計(jì)用戶(hù)之間進(jìn)行交互的物理基礎(chǔ)。各客戶(hù)之間的耦合正是通過(guò)對(duì)工程數(shù)據(jù)庫(kù)的不同權(quán)限來(lái)控制的。在訪問(wèn)數(shù)據(jù)庫(kù)的接口設(shè)計(jì)方面,JDBC是一種可用于執(zhí)行SQL語(yǔ)句的Java API(Application Programming Interface應(yīng)用程序設(shè)計(jì)接口),采用JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù)成為系統(tǒng)的首選。JDBC由一些Java語(yǔ)言編寫(xiě)的類(lèi)和界面組成,為數(shù)據(jù)庫(kù)應(yīng)用、數(shù)據(jù)庫(kù)前臺(tái)工具提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,可以用純的Java語(yǔ)言編寫(xiě)完整的數(shù)據(jù)庫(kù)應(yīng)用程序。通過(guò)使用JDBC,可以方便的將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。也就是說(shuō),可以不必寫(xiě)一個(gè)程序訪問(wèn)Sybase,寫(xiě)另一個(gè)程序訪問(wèn)Oracle,再寫(xiě)一個(gè)程序訪問(wèn)Microsoft SQL Server,也就是說(shuō),可以不用進(jìn)行較大的修改而改變數(shù)據(jù)庫(kù)管理系統(tǒng)或者客戶(hù)端應(yīng)用,使得JDBC成為聯(lián)系應(yīng)用與數(shù)據(jù)的獨(dú)立層。用JDBC寫(xiě)的程序能自動(dòng)地將SQL語(yǔ)句傳送給DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng)),不但如此,使用Java編寫(xiě)的應(yīng)用程序可以在任何支持Java的平臺(tái)上運(yùn)行,不必在不同的平臺(tái)上編寫(xiě)不同的應(yīng)用程序。Java和JDBC的結(jié)合可以在開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用時(shí)真正實(shí)現(xiàn)“一次編寫(xiě),隨處運(yùn)行[3]”。
2.3系統(tǒng)與I-DEAS的交互功能的實(shí)現(xiàn)
2.3.1 訪問(wèn)I-DEAS的接口Open I-DEAS
??? 很多CAD系統(tǒng)提供了二次開(kāi)發(fā)的接口,使用戶(hù)能夠很方便的與CAD軟件進(jìn)行通訊,這些通訊往往遵守一些特定的標(biāo)準(zhǔn)。就I-DEAS8.0 而言,與其通訊需要通過(guò)OPEN I-DEAS進(jìn)行。OPEN I-DEAS是一個(gè)基于CORBA規(guī)范的開(kāi)放型接口組件,通過(guò)這個(gè)組件,應(yīng)用程序可以訪問(wèn)I-DEAS中各種接口(用于描述CORBA服務(wù)器向客戶(hù)端所提供的服務(wù)的描述性語(yǔ)言是IDL,即Interface?? Description Language,IDL接口在向客戶(hù)端編程語(yǔ)言映射時(shí),映射到C++編程語(yǔ)言時(shí),映射為類(lèi),映射到Java時(shí),映射為公共Java接口,因此本文提到的接口在C++的意義上是類(lèi),本文并不區(qū)分接口和類(lèi),所有接口字樣可以替換為類(lèi),以便于C++程序員的理解),通過(guò)訪問(wèn)OPEN I-DEAS的接口就可以獲得I-DEAS的服務(wù)。 ?
??? OPEN I-DEAS實(shí)現(xiàn)了眾多的服務(wù)器接口和幾何接口、FEM接口、IDM元素接口、選取操作接口等,向I-DEAS客戶(hù)提供各種服務(wù)。幾乎所有的接口都從OI_Base直接或間接派生而來(lái),OI_Base的直接子類(lèi)主要包括各種服務(wù)器接口和OI_Root接口。關(guān)于OPEN I-DEAS實(shí)現(xiàn)的接口,見(jiàn)圖2。

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

其中:
OI_Bin:存儲(chǔ)斗接口。
OI_Part:零件接口。
OI_Curve:曲線(xiàn)接口。
OI_Surface:表面接口。
OI_FEModel:有限元模型接口。
??? 客戶(hù)在訪問(wèn)I-DEAS時(shí),首先調(diào)用OI_Connect()方法連接到Orbix服務(wù)器,該方法返回OI_Server接口的一個(gè)引用。然后由OI_Server接口訪問(wèn)其他服務(wù)器接口或幾何接口、FEM接口、IDM元素接口等,然后使用這些接口的方法完成進(jìn)一步的操作。
2.3.2工程數(shù)據(jù)庫(kù)和I-DEAS數(shù)據(jù)交換的Applet的實(shí)現(xiàn)
??? 工程數(shù)據(jù)庫(kù)和I-DEAS的數(shù)據(jù)交換是采用JSP和Applet相結(jié)合的方式實(shí)現(xiàn)的,JSP通過(guò)JDBC連接到工程數(shù)據(jù)庫(kù),而Applet 則遵循CORBA協(xié)議與OPEN I-DEAS進(jìn)行交互。
??? Java Applet是一個(gè)小的Java程序,它動(dòng)態(tài)的從網(wǎng)上下載,就類(lèi)似一個(gè)圖像或一段錄音剪輯。最重要的是Java Applet是一個(gè)智能化的程序,而不僅僅是一個(gè)動(dòng)畫(huà)或多媒體文件,它能夠響應(yīng)用戶(hù)輸入,捕捉用戶(hù)發(fā)出的消息。它由瀏覽器所帶的Java虛擬機(jī)解釋執(zhí)行,Java Applet的這種特性使得系統(tǒng)的消息處理機(jī)制得以正常運(yùn)行。Java語(yǔ)言所提供的AWT(Abstract Window Toolkit)和Event類(lèi)也使得使用HTML語(yǔ)言所實(shí)現(xiàn)的界面與傳統(tǒng)的VC、VB所實(shí)現(xiàn)的界面相比,毫不遜色。它提供了VB、VC等語(yǔ)言所提供的大部分界面實(shí)現(xiàn)功能。例如,菜單、對(duì)話(huà)框、窗口等,并提供了多種布局管理器,以達(dá)到視圖上的完美。對(duì)于事件處理,Java語(yǔ)言提供了Event類(lèi)來(lái)捕捉各種事件,包括鍵盤(pán)、鼠標(biāo)等各種事件。Applet通過(guò)OPEN I-DEAS與I-DEAS建立通信,訪問(wèn)或修改尺寸等參數(shù)的過(guò)程如下:
??? 首先連接到OPEN I-DEAS服務(wù)器,調(diào)用IIOPConnectServer()方法,生成OI_Server類(lèi)的一個(gè)接口實(shí)例變量,就可以連接到OPEN I-DEAS服務(wù)器。調(diào)用OI_Server的GetBins()方法獲得存儲(chǔ)斗序列接口實(shí)例,存儲(chǔ)斗序列是存儲(chǔ)斗接口的集合,其每一個(gè)元素都是一個(gè)存儲(chǔ)斗接口實(shí)例。調(diào)用OI_Bin的GetParts()方法獲得存儲(chǔ)斗中的零件序列,并獲得零件接口。調(diào)用OI_Part的GetAllKeyDimensions()方法獲得尺寸序列,并獲得尺寸接口實(shí)例。調(diào)用尺寸接口的GetName()方法和GetValue()方法可獲取尺寸的名稱(chēng)和值屬性。用ModifyValue()方法可修改尺寸的值。更改尺寸后,調(diào)用OI_Part接口的Update()方法可更新零件。
??? 本文實(shí)現(xiàn)的Applet,其核心就是通過(guò)OPEN I-DEAS與I-DEAS建立連接,通過(guò)訪問(wèn)I-DEAS的接口,獲得存儲(chǔ)斗序列,進(jìn)一步獲得機(jī)件,零件,進(jìn)而修改零件尺寸。通過(guò)把零件尺寸寫(xiě)入工程數(shù)據(jù)庫(kù)實(shí)現(xiàn)零件永久化,進(jìn)而實(shí)現(xiàn)PDM的部分功能。Applet技術(shù)是Java組件技術(shù)之一,在需要時(shí)從網(wǎng)絡(luò)上下載到本地,相對(duì)于COM技術(shù),Java Applet在根本上是安全的,因?yàn)榻忉屍髦挥性贏pplet的中間碼沒(méi)有異常的情況下才允許它運(yùn)行,而且不能訪問(wèn)沒(méi)有訪問(wèn)許可的內(nèi)存,所以采用Java技術(shù)和Applet提供了很高的安全性,使得部署系統(tǒng)而不用考慮安全問(wèn)題。
3 .結(jié)論
????基于J2EE的Web形式的數(shù)據(jù)庫(kù)管理,由于有強(qiáng)大的Java技術(shù)做后盾,而且可以根據(jù)需要決定設(shè)計(jì)模式,實(shí)現(xiàn)N層應(yīng)用,是企業(yè)級(jí)Web應(yīng)用很好的解決方案?;贘ava的組件技術(shù),再加上CORBA規(guī)范的靈活性、跨語(yǔ)言能力、跨平臺(tái)實(shí)現(xiàn)及安全性等方,所以它成為實(shí)現(xiàn)真正的開(kāi)放式結(jié)構(gòu)的應(yīng)用程序的首選標(biāo)準(zhǔn)。Java技術(shù)與CORBA規(guī)范結(jié)合,實(shí)現(xiàn)開(kāi)放式多層次模塊化企業(yè)級(jí)應(yīng)用的方法,必將得到更深的研究和更快的發(fā)展。
4.參考文獻(xiàn):
[1] 潘耘,冷英男,李文超,么永輝,王小霞,CSCW的研究?jī)?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/
