国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Web產(chǎn)品協(xié)同設計系統(tǒng)關鍵技術的解決

2018-09-29 02:38邵秀麗李慧超王景軍姚萌萌
智能計算機與應用 2018年4期
關鍵詞:服務器端客戶端分配

邵秀麗 李慧超 王景軍 姚萌萌

摘 要:本文針對基于Web3D的協(xié)同設計系統(tǒng)中多用戶協(xié)作沖突處理、設計操作實時同步顯示和交互過程即時通訊3個關鍵問題進行研究。針對3個問題分別提出基于控制權限及優(yōu)先級處理的沖突操作解決方案,基于約定語義規(guī)則庫進行設計操作格式化與數(shù)據(jù)解析和基于node.js+socket.io即時通信框架的客戶端與服務器通訊方案,從而實現(xiàn)基于Web3D的協(xié)同設計系統(tǒng)中操作與數(shù)據(jù)的一致性與即時性。

關鍵詞:Web 3D協(xié)同設計; 同步互斥; 沖突處理; 即時通訊

Abstract: Multi-user collaboration conflict management, real-time synchronous display of design and operation and instant messaging of interactive process are three key issues for the research of Web 3D-based co-design system. According to the three problems,the paper proposes conflict operation solution based on control authority and priority, respectively. Based on the agreed semantic rule base, the paper designs and formats operation and data analysis and client / server communication scheme based on node.js + socket.io instant messaging framework. The consistency and immediacy of operation and data in Web 3D-based collaborative design system is achieved.

Key words: Web 3D collaborative design; synchronization mutex; conflict handling; instant message

引言

傳統(tǒng)的產(chǎn)品研制設計過程是由設計師在企業(yè)內部獨立完成的,客戶無法參與到產(chǎn)品設計中,使得設計師不能根據(jù)每個客戶的實際需要設計出合適的產(chǎn)品[1]。利用現(xiàn)代網(wǎng)絡技術,使客戶與設計師能夠協(xié)同設計產(chǎn)品,是目前制造業(yè)信息化發(fā)展的主要方向[2]。 互聯(lián)網(wǎng)的出現(xiàn),使 3D 圖形技術發(fā)生了深刻的變化,產(chǎn)生了一些專門針對互聯(lián)網(wǎng)的3D圖形技術,統(tǒng)稱為 Web3D 技術[4-5]。

本文采用同步協(xié)同模式,利用Web3D技術實現(xiàn)的基于Web3D產(chǎn)品協(xié)同設計系統(tǒng)[3]讓顧客和一些工程師參與到產(chǎn)品的設計中來,解決傳統(tǒng)產(chǎn)品設計過程存在用戶參與受地域、時空限制的弊端。

在利用基于Web3D產(chǎn)品協(xié)同設計系統(tǒng)進行產(chǎn)品設計時,協(xié)作成員間需要在網(wǎng)上實時同步協(xié)作模型,隨時溝通設計意圖。因此,在協(xié)同設計過程中,須要解決幾個主要的問題:

(1)分布在不同地域的設計參與者,要求在客戶端瀏覽器上保持設計對象的行為和狀態(tài)的一致性,實現(xiàn)設計對象的同步協(xié)同;

(2)整個協(xié)同設計過程中,要采用一定協(xié)同控制機制,保證協(xié)作活動的有序進行,避免引發(fā)并發(fā)沖突的現(xiàn)象;

(3)即時通訊,協(xié)作組內成員要能夠對設計方案進行實時溝通。

本文主要針對以上3個協(xié)同設計過程中關鍵問題給出了解決方案并進行了實現(xiàn)。

1 多用戶協(xié)作沖突處理

協(xié)作任務創(chuàng)建后,即可按照約定好的協(xié)作時間開始展開產(chǎn)品的協(xié)作設計。設計過程中,針對可能出現(xiàn)的并發(fā)沖突,采用一定的協(xié)同控制機制避免此種現(xiàn)象的發(fā)生,使協(xié)作活動有序的進行。為此,本文設計了協(xié)作對象和資源操作沖突分配問題的協(xié)作控制機制[8],保證協(xié)作活動的順利進行。

協(xié)同設計中的沖突處理方式可以分為靜態(tài)方式和動態(tài)方式。靜態(tài)方式是在沖突還未發(fā)生之前,通過實時通信窗口合理的開展協(xié)作任務規(guī)劃、知識、數(shù)據(jù)的共享,全面考慮參與者角色問題,從而減少或避免沖突的產(chǎn)生;動態(tài)方式[5]是通過內部檢測機制避免沖突的產(chǎn)生,或當沖突產(chǎn)生后,通過內部機制對沖突實時處理。以下主要對動態(tài)方式展開介紹。

為解決協(xié)同操作沖突問題[12],本系統(tǒng)設計了基于優(yōu)先級的自由式和基于權限的資源占用式2種沖突處理機制,保證協(xié)同設計的順利進行。

1.1 基于優(yōu)先級的自由式處理機制

1.1.1 并發(fā)操作及沖突的定義

并發(fā)操作的定義:規(guī)定請求間隔小于0.1 s的一系列請求,視為可能導致操作沖突的并發(fā)操作請求集。

操作沖突定義為以下2種:創(chuàng)建時沖突,當多用戶同時添加相同模型,或將不同模型添加到相同位置時,產(chǎn)生創(chuàng)建沖突;狀態(tài)改變沖突,當多用戶同時修改相同模型屬性,且修改后狀態(tài)不同時,產(chǎn)生狀態(tài)改變沖突。

1.1.2 沖突檢測與處理

該沖突處理機制,是在NodeJs服務器的事件隊列的內部運行機制之上,定義了二級并發(fā)緩存機制,并以客戶端操作請求到達服務端的時間為準進行沖突檢測。偽碼如下(假設當前操作為0):

該機制下沖突的檢測與處理步驟如下:

(1)定義用戶操作標識集,包括操作類型、零件名稱、用戶ID等屬性,用來存儲用戶操作信息;

(2)定義已執(zhí)行隊列用來存放并發(fā)處理過程中已執(zhí)行的操作;

(3)對于并發(fā)操作集中第一個操作請求視為有效操作,使用socket.io即時通信技術將其群發(fā)至組內其它客戶端同步顯示,并將操作標識,放入已執(zhí)行隊列;

(4)按順序逐個獲取并發(fā)操作集中操作請求。按照沖突的定義,將當前操作請求與已執(zhí)行隊列中的所有操作進行沖突的判斷,若存在沖突則將該操作丟棄并回發(fā)沖突提示信息;若不存在沖突,將該操作視為有效操作,將操作標識放入已執(zhí)行隊列;

(5)清空已執(zhí)行隊列,該并發(fā)階段處理完畢,開始下一次沖突檢測。

1.2 基于權限的資源占用式處理機制

基于權限的資源占用式控制方法要求一個時間只能有一個人進行設計操作,將操作權限設置為一個令牌,擁有令牌的用戶擁有對設計對象操作的權限。多用戶同時對操作令牌進行申請,會導致操作令牌權限的分配混亂。因此,需要一種決策方法來解決多用戶的并發(fā)分配問題,提出了集中方式、先到先得方式、輪轉方式策略來控制令牌權限的分配,以下主要對集中式分配方式進行介紹。

1.2.1 令牌權限的控制

協(xié)作組內用戶操作令牌的申請,統(tǒng)一分發(fā)至活動負責人處,負責人根據(jù)申請情況,選定用戶為其分配操作令牌。一旦分配,不得再次為第二人分配令牌,直到該用戶因時間片用完或者自行釋放為止,或者可由負責人強制剝奪設計人操作令牌,被釋放的令牌可繼續(xù)分配給組內其它用戶。

1.2.2 用戶對令牌的申請與釋放

活動進行過程中,協(xié)作組內普通用戶(除負責人外)可隨時對操作令牌進行申請,由負責人為其分配操作令牌,同時系統(tǒng)為用戶分配時間片。當時間片結束、用戶主動釋放或負責人強制剝奪令牌,令牌自動回收至負責人。

1.2.3 令牌分配的實現(xiàn)

首先,定義動態(tài)數(shù)組 activityCurrOper來記錄所有協(xié)作活動令牌的分配情況,以協(xié)作活動的id為數(shù)組索引,以要分配的用戶id為值,填充activityCurrOper數(shù)組,以此來存儲當前操作用戶,該值為空即尚未給對應協(xié)作對象分配操作用戶。該接口所做的工作如下:

(1)為用戶分配操作令牌。即將用戶id填充到activityCurrOper數(shù)組對應的位置,分配完成,運用實時通信機制類庫中的點對點通信方法和廣播通信方法,設置通知標識,分別將分配結果(用戶id、用戶名稱、結果標識)發(fā)送至分配用戶以及協(xié)作組內其它客戶端,由客戶端根據(jù)對應結果信息去控制界面屬性以控制設計界面是否可操作;

(2)為獲取到操作令牌的用戶分配計時器。本處為保證組內多個客戶端時間顯示的一致性,采用服務器端計時,該計時器初設時間為300 s,運用通信的廣播技術進行協(xié)作組內客戶端計時時間的同步。計時器計時結束,清空占用,終止該計時器,采用廣播的方法設置回收標識,向組內客戶端發(fā)送操作令牌的回收通信,組內客戶端根據(jù)回收標識,接收服務器回收通知后設置權限操作按鈕屬性,可重新提出操作令牌的申請。

資源占用式分配問題的解決方案實現(xiàn)了基于負責人指定的集中方式、先到先得方式、輪轉方式的聯(lián)合控制,用戶可根據(jù)需要靈活更換控制方式。該方法要求一個時間只能有一個人進行設計操作,將操作權限設置為一個令牌,擁有令牌的用戶擁有對設計對象操作的權限。用戶獲取操作令牌的流轉如圖1所示。

從圖中可以看出,多用戶同時對操作令牌進行申請,會導致操作令牌權限的分配混亂。因此,需要一種決策方法來解決多用戶的并發(fā)分配問題,本節(jié)并發(fā)分配解決方案給出了集中方式、先到先得方式、輪轉方式策略來控制令牌權限的分配。同時,活動負責人可根據(jù)需要自由進行控制方式的切換。

其中,負責人更換控制方式之后,必須保證協(xié)作組內其它客戶端的控制方式同步更換,否則將導致因為參與用戶各個客戶端控制方式不一致而引發(fā)的控制混亂問題。

2 協(xié)同設計界面實時同步

在協(xié)同設計過程中,不同成員共同編輯一個應用時,會出現(xiàn)公共操作區(qū)域或是頁面之間相互影響的問題。組內協(xié)作客戶端界面需要實時刷新。因此,系統(tǒng)必須具有沖突檢測與處理以及實時同步處理的功能,這也是協(xié)同設計的難點之一。

2.1 實時同步的處理機制

在協(xié)同設計過程中,用戶進行的設計操作要實時同步到其它成員客戶端瀏覽器上,為保證組內設計者呈現(xiàn)結果的一致性,成員客戶端各自維護了一份設計對象數(shù)據(jù)副本,使操作數(shù)據(jù)在成員客戶端之間一致,同步過程具體流程如圖2所示。下面分3個方面對實時同步機制的實現(xiàn)進行介紹。

2.1.1 數(shù)據(jù)消息的語義規(guī)則庫和本地數(shù)據(jù)副本

首先,數(shù)據(jù)消息的語義規(guī)則庫[9-10],定義了用戶操作集及客戶端同步操作傳遞的消息內容和消息格式,消息內容包括操作標識(sign)、協(xié)作任務ID、用戶ID和零件名稱,見表1。

用戶單步操作完成,按照表1所示的數(shù)據(jù)內容和數(shù)據(jù)格式對操作產(chǎn)生的實際數(shù)據(jù)進行格式化,設置操作標識(sign)將其發(fā)送至服務器端進行操作數(shù)據(jù)的傳遞。其中,各個操作對應的數(shù)據(jù)內容均包括協(xié)作活動id(activitiyid),決定了服務器傳遞操作數(shù)據(jù)的范圍。

其次,本地數(shù)據(jù)副本,用于記錄當前設計對象及其狀態(tài),由一系列零件及對應屬性組成,見表2。

2.1.2 實時同步的實現(xiàn)過程

首先,用戶進行設計操作,觸發(fā)對應操作的響應事件并更新本地數(shù)據(jù)副本,將操作產(chǎn)生的實際數(shù)據(jù)根據(jù)語義規(guī)則庫格式化成JSON對象,使用即時通信機制的socket.emit()方法將操作標識(sign)和JSON對象發(fā)送至NodeJs服務器。

其次,NodeJs服務器使用socket.on('sign',func(data))接口根據(jù)操作標志sign接收并解析客戶端操作JSON對象,獲取協(xié)作任務ID,根據(jù)即時通信機制socket.broadcast.to(id).emit()方法,將服務器接收的JSON消息結合操作標志sign群發(fā)至組內的其它客戶端。

最后,客戶端根據(jù)標志位sign,解析服務器JSON消息,并更新本地數(shù)據(jù)副本,根據(jù)操作類型調用對應界面驅動程序接口進行頁面操作同步顯示。

2.1.3 零件模型加載的網(wǎng)絡同步問題

系統(tǒng)后臺對零件庫進行維護,零件模型應當是.obj模型文件,結合.mtl材質文件格式。應用基于WebGL[6]第三方開源庫的Three.js作為3D渲染引擎,3D場景通過.obj和.mtl文件獲得模型信息和材料信息。設計人員可通過鼠標操作或修改組件參數(shù)信息,最終形成完整3D產(chǎn)品模型。參與設計用戶可自行導入STL格式的CAD模型文件,該格式為CAD軟件、3Dmaxs軟件、Three.js Web3D接收的通用版本。文件一經(jīng)導入可直接加載至3D場景中,供用戶使用,使零件庫易于擴展。

如果模型文件過大,以整個文件作為傳輸對象,會因耗時問題導致通信連接的中斷或者阻塞的現(xiàn)象,對實時同步造成很大的影響。

本文提出對大文件問題采用基于IIS服務器的異步請求方法實時同步。用戶操作的零件模型,會以異步方式,保存至IIS服務器;借助文本同步通信機制將模型文件存儲URL格式化為JSON消息格式,由NodeJs服務器轉發(fā)至協(xié)作組內其它客戶端;客戶端接收JSON消息,解析得到文件URL,根據(jù)URL異步獲取IIS服務器端模型文件,載入設計場景中。

2.2 協(xié)同設計的界面實時同步解決方案

在本文同步協(xié)同設計活動進行過程中,獲取設計界面操作權的用戶進行的設計操作要及時的傳遞到參與設計的其它客戶端瀏覽器上,同時參與設計的其它客戶端傳遞過來的操作活動也能在該客戶端瀏覽器上實時顯示。

而從單用戶的角度出發(fā),要實現(xiàn)用戶的設計操作在參與設計的其它客戶端瀏覽器實時同步展現(xiàn),需要做如下工作:

(1)用戶單步操作的處理。由頁面事件驅動程序捕獲用戶設計操作,并將設計操作產(chǎn)生數(shù)據(jù)格式化為指定的消息格式,將消息實時發(fā)送至通信服務器上,服務器以廣播的形式轉發(fā)給參與設計的其它客戶端;

(2)組內客戶端同步呈現(xiàn)。參與設計客戶端接收由服務器發(fā)送過來的操作消息,將消息根據(jù)約定語義規(guī)則庫進行解析,然后交由客戶端設計界面驅動程序進行相應的操作顯示。

另外,在服務器進行統(tǒng)一信息轉發(fā)的基礎上,為保證參與設計用戶設計結果的一致性,參與設計成員客戶端各自維護了一份設計對象副本,使參與設計成員之間無需傳輸整個設計結果,而僅需將編輯數(shù)據(jù)經(jīng)服務器轉發(fā),使操作數(shù)據(jù)在參與設計客戶端之間同步。

3 多用戶協(xié)同即時通訊機制

WebSocket是HTML5提供的一種瀏覽器與服務器間進行全雙工通訊的網(wǎng)絡技術。使用WebSocket、瀏覽器和服務器只需要要做一個握手的動作,二者之間就形成了一條快速通道,可以數(shù)據(jù)互相傳送[10-11]。而且為實現(xiàn)即時服務帶來了兩大好處:

(1)節(jié)省資源?;ハ鄿贤ǖ腍eader很小,大概只有 2 Bytes;

(2)推送信息。不需要客戶端請求,服務器可以主動傳送數(shù)據(jù)給客戶端。

Socket.IO是一個WebSocket庫[4,13],包括了客戶端的js和服務器端的node.js,目標是構建不同瀏覽器和移動設備上使用的實時應用?;赟ocket.IO良好的可移植性和可維護性,本文使用Socket.IO即時通信類庫,在客戶端與服務器端建立通信連接。

3.1 客戶端與服務器通訊連接設計

客戶端與服務器端為多對一的關系,服務器端應用程序server.js必須時刻處于運行狀態(tài),這樣服務器與客戶端之間的即時通信就可以隨時進行。主要設計機制:

(1)服務器端應用程序通過調用監(jiān)聽接口,并指定監(jiān)聽信息標志,時刻監(jiān)聽帶有該標志的客戶端操作權控制請求和操作請求信息??蛻舳艘坏┌l(fā)送對應請求信息。則服務器端程序server.js中對應監(jiān)聽程序接收用戶請求信息;

(2)客戶端應用程序通過調用監(jiān)聽接口,同樣指定監(jiān)聽信息標志,時刻監(jiān)聽帶有該標志的服務器端操作權控制以及操作控制反饋的結果信息,服務器端一旦發(fā)送對應反饋信息,則客戶端應用程序中對應監(jiān)聽程序接收服務器端反饋的結果信息。

3.2 通信機制的實現(xiàn)

使用socket.io即時通信類庫,完成客戶端與服務器端通信連接的建立,在連接建立的基礎上,由于協(xié)作設計活動的展開是以協(xié)作組為單位,所以協(xié)作組內控制信息與同步信息相互獨立。因此,需要對客戶端用戶進行邏輯通信入組。

3.2.1 通信連接的建立

服務器端程序server.js啟動后,自動創(chuàng)建http服務并設置監(jiān)聽端口8888實時監(jiān)聽客戶端的連接請求。

客戶端運行MainFrame.aspx應用程序進入?yún)f(xié)同設計頁面,通過調用socket.io即時通信類庫的io.connect(‘服務器ip:8888)方法,根據(jù)服務器的IP和端口號8888找到服務器對應服務端口,將‘connection標志裝入連接請求消息包中,發(fā)送至服務器端。服務器端使用socket.io即時通信類庫監(jiān)聽客戶端連接請求方法socket.sockets.on(‘connection,function(socket){})通過標志‘connection接收客戶端的連接,生成已建立連接的客戶端唯一socket對象反饋至客戶端,該方法的第二個參數(shù)(匿名函數(shù))包含了接收客戶端連接后的處理工作,參數(shù)socket為與客戶端建立連接socket對象,服務器使用該socket對象和對應連接客戶端socket對象進行即時通信。

3.2.2 客戶端用戶的邏輯通信入組

客戶端通過調用socket.io即時通信類庫的socket.emit(‘comeIn,data)方法指定入組標識comeIn,將用戶id(userid)、協(xié)作活動id(activityid)裝入JSON格式的data數(shù)據(jù)發(fā)送至服務器端;服務器端根據(jù)comeIn標識,使用socket.io類庫的socket.on(‘comeIn,function(data){})監(jiān)聽方法,接收客戶端入組信息。其中,第二個參數(shù)對應函數(shù)包含了接收客戶端信息后進行的入組處理,data為接收客戶端數(shù)據(jù)。該處理工作有:解析入組信息,將該客戶端socket通過socket.io類庫的socket.join(activityid)方法加入以activityid為標識的邏輯通信組中,后續(xù)可通過activityid索取組內socket對象列表,對組內客戶端進行群發(fā)通信。

如上2個步驟完成后,客戶端與服務器之間的通信示意圖如圖3所示。從圖中可知:

(1)通過socket.emit(‘sign,data)方法進行點對點通信,指定信息標志,信息接收方根據(jù)標志進行對應信息的接收;

(2)[JP5]通過socket.broadcast.to(activityid).emit(‘sign,data)方法指定信息標識,進行服務器向acitvityid對應的協(xié)作組內客戶端的廣播通信;

(3)[JP3]通過socket.on(‘sign,function(data){…})方法根據(jù)信息標識接收信息,第二個參數(shù)為接收信息后對信息的處理工作,data為接收信息內容。

4 結束語

本文給出了基于Web3D的在線協(xié)同設計系統(tǒng)中的多用戶協(xié)作沖突處理、協(xié)同設計界面實時同步和多用戶協(xié)同即時通訊的關鍵問題解決方案。首先,基于Node.js+socket.io即時通信技術,設計基于優(yōu)先級和基于權限的2種沖突處理方法,使協(xié)同設計活動能有效的進行。其次,設計約定語義規(guī)則庫對產(chǎn)品設計過程中所涉及的操作進行數(shù)據(jù)格式化與數(shù)據(jù)解析,便于數(shù)據(jù)傳輸與實時同步。最后,基于nodeJs+socket.io即時通信框架設計客戶端與服務器通訊方案,解決協(xié)同設計過程中即時通訊的問題。

本系統(tǒng)還需要在以下幾個方面進行改進:

(1)對設計過程中依賴規(guī)則進行約束及沖突處理方式的設計;

(2)目前系統(tǒng)主要實現(xiàn)模型的組合拼接,今后工作中考慮初始建模的實現(xiàn)方案。

參考文獻

[1] 董仁揚. 三維機械設計軟件MDT4.0增強版培訓教程[M]. Autodesk中國西部大學,2000.

[2] 殷國富,陳永華. 計算機輔助設計技術與應用[M]. 北京: 科學出版社,2000.

[3] 孔慶復. 計算機輔助設計與制造[M]. 哈爾濱:哈爾濱工業(yè)大學出版社,1994.

[4] 朱曉宇, 聶穎. 基于Socket.io構建Web協(xié)同標繪應用[J]. 軟件, 2016, 37(1):110-113.

[5] 潘康華. 基于 MBD 的機械產(chǎn)品三維設計標準關鍵技術與應用研究[D]. 北京:機械科學研究總院,2012.

[6] 王維敏. Web3D技術探索及幾種Web3D技術的比較選擇[D]. 武漢:武漢大學,2004.

[7] 王強,朱吉強,張楨琦. 基于Web的3D模型協(xié)同瀏覽技術的研究與應用[J]. 山西大學學報(自然科學版),2007,30(3):335-339.

[8] 馬曉明. 基于WEB 3D多人建模平臺協(xié)同沖突分析與研究[D]. 上海:上海交通大學,2014.

[9] 胡曉琛. Web3D虛擬環(huán)境交互設計-基于Web3D虛擬環(huán)境技術的三維空間交互設計研究[D]. 杭州:中國美術學院,2008.

[10]馮開平,潘光洋. 基于Web3D的燈飾協(xié)同設計定制系統(tǒng)[J]. 圖學學報,2012,33(3):56-60.

[11]張嘯. 淺談基于Web3D的交互式工業(yè)產(chǎn)品三維虛擬場景的設計[J]. 科技傳播,2010(13):218,214.

[12]KLEIN M. Supporting conflict resolution in cooperative design systems[J]. IEEE Transactions on Systems Man and Cybernetics , 1991 , 21 (6) :1379-1390.

[13]陳文藝, 張霏, 龍艷. 基于Socket.IO的物聯(lián)網(wǎng)網(wǎng)關實時雙向通信系統(tǒng)[J]. 西安郵電大學學報, 2017,22(6):111-116.

猜你喜歡
服務器端客戶端分配
Crying Foul
遺產(chǎn)的分配
虛擬專用網(wǎng)絡訪問保護機制研究
新聞客戶端差異化發(fā)展策略
基于Qt的安全即時通訊軟件服務器端設計
基于Qt的網(wǎng)絡聊天軟件服務器端設計
一種基于Java的IM即時通訊軟件的設計與實現(xiàn)
基于C/S架構的嵌入式監(jiān)控組態(tài)外設擴展機制研究與應用
閱讀理解Ⅳ
我會好好地分配時間