999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于區(qū)塊鏈的建筑信息模型圖紙多人協(xié)同創(chuàng)作系統(tǒng)

2021-09-09 08:09:06申玉民王金龍胡殿凱劉星宇
計算機應(yīng)用 2021年8期
關(guān)鍵詞:圖紙創(chuàng)作用戶

申玉民,王金龍*,胡殿凱,劉星宇

(1.青島理工大學(xué)信息與控制工程學(xué)院,山東青島 266525;2.銘數(shù)科技(青島)有限公司,山東青島 266041)

0 引言

建筑信息模型(Building Information Modeling,BIM)是一種管理整個建筑生命周期中的基本建筑設(shè)計和項目數(shù)據(jù)的方法[1]。在建筑物整個生命周期中,BIM提供統(tǒng)一的表示、數(shù)據(jù)框架和組織,可以與各種數(shù)據(jù)庫集成,簡化文檔管理,可視化分析過程和結(jié)果以及提供可持續(xù)性分析和仿真[2]。當(dāng)前,BIM在大型建筑設(shè)計、施工、運維的應(yīng)用越來越廣泛[3-5]。一些大型項目的BIM圖紙由于其復(fù)雜性,工作量巨大,往往涉及建筑、結(jié)構(gòu)、設(shè)備等多個專業(yè),為了提高效率,這些BIM圖紙的設(shè)計往往需要多人協(xié)同創(chuàng)作[6]。但是多人協(xié)同創(chuàng)作BIM圖紙通常會帶來BIM圖紙版本混亂、版權(quán)劃分無準(zhǔn)確依據(jù)的問題[6-8]。

傳統(tǒng)BIM圖紙的多人協(xié)同創(chuàng)作大多是依靠BIM設(shè)計軟件Revit中自帶的工作共享或模型鏈接模式實現(xiàn)的[9-10],但是該方法存在對計算機性能要求高、單向更新的缺點[9],并且無法記錄和追溯每次創(chuàng)作后的BIM圖紙信息。之后出現(xiàn)了基于Wiki[11]和云服務(wù)的多人協(xié)同創(chuàng)作系統(tǒng),但是由于Wiki僅適用于像知識共享[12]或協(xié)作學(xué)習(xí)[13-14]等場景下的文本信息多人協(xié)同創(chuàng)作過程,所以無法應(yīng)用到BIM圖紙的多人協(xié)同創(chuàng)作過程中來。云服務(wù)應(yīng)用范圍更加廣泛,可以緩解本地計算機性能對BIM圖紙多人協(xié)同創(chuàng)作過程效率的約束,因此研究者提出將云服務(wù)與BIM技術(shù)結(jié)合起來,開發(fā)了基于云服務(wù)的BIM協(xié)同系統(tǒng)[15],使用云服務(wù)器代替本地計算機完成BIM圖紙的計算和協(xié)作,同時將每次創(chuàng)作后的BIM圖紙信息存儲到服務(wù)器中,解決了傳統(tǒng)BIM圖紙多人協(xié)同創(chuàng)作方法存在的計算機性能要求高等問題,但是由于所有數(shù)據(jù)都存儲在云服務(wù)器中,如果被黑客侵入惡意刪除或修改數(shù)據(jù)會造成嚴(yán)重的數(shù)據(jù)安全問題[16],雖然可以通過加密、授權(quán)等方式避免一些相關(guān)問題,但是仍然存在一些安全漏洞未被解決,數(shù)據(jù)安全無法保證。針對基于云服務(wù)的BIM協(xié)同系統(tǒng)存在的問題,一些研究者開始嘗試?yán)脜^(qū)塊鏈解決建筑信息化應(yīng)用問題[17-20],區(qū)塊鏈具有的去中心化、可追溯以及防篡改等特性可以較好地解決上述BIM圖紙信息記錄、數(shù)據(jù)安全等問題。Zheng等[21]提出使用區(qū)塊鏈記錄單人創(chuàng)作過程中每次創(chuàng)作后的BIM圖紙信息,利用區(qū)塊鏈防篡改和可追溯的性質(zhì),完整記錄BIM圖紙整個創(chuàng)作過程并且保證了數(shù)據(jù)的安全性,實現(xiàn)了單人創(chuàng)作BIM圖紙信息的記錄,但是并未考慮多人協(xié)同創(chuàng)作BIM圖紙的信息記錄問題。因此,在多人協(xié)同創(chuàng)作BIM圖紙的情況下,如何準(zhǔn)確、安全地記錄BIM圖紙的創(chuàng)作過程就成為一個亟待解決的問題,這也是保障設(shè)計者們的責(zé)權(quán)利問題的關(guān)鍵。

基于上述研究背景和出現(xiàn)的問題,本文對基于區(qū)塊鏈的BIM圖紙多人協(xié)同創(chuàng)作系統(tǒng)進(jìn)行了研究,使用區(qū)塊鏈技術(shù)記錄BIM圖紙整個創(chuàng)作過程,解決了多人協(xié)同創(chuàng)作BIM圖紙版本混亂、不易溯源以及存在數(shù)據(jù)安全風(fēng)險的問題。實驗結(jié)果表明,系統(tǒng)具有良好的性能,能夠滿足和解決BIM圖紙多人協(xié)同創(chuàng)作實際應(yīng)用中的需求和問題。

1 系統(tǒng)架構(gòu)設(shè)計

1.1 系統(tǒng)模型

建筑信息模型(BIM)圖紙通常需要多名設(shè)計者同時在一張圖紙上創(chuàng)作,由于對數(shù)據(jù)泄露、利益沖突、信息濫用的擔(dān)憂,當(dāng)前往往需要嚴(yán)格的許可管理[17]。因此,使用聯(lián)盟鏈構(gòu)建基于區(qū)塊鏈的BIM圖紙多人協(xié)同創(chuàng)作系統(tǒng)。

如圖1所示,本文提出的BIM圖紙多人協(xié)同創(chuàng)作系統(tǒng)采用聯(lián)盟鏈技術(shù)實現(xiàn),構(gòu)建的系統(tǒng)模型主要由BIM圖紙設(shè)計者和BIM圖紙負(fù)責(zé)人構(gòu)成的創(chuàng)作信息記錄鏈,以及BIM圖紙數(shù)據(jù)庫組成。BIM圖紙設(shè)計者加入創(chuàng)作信息記錄鏈需要獲得BIM圖紙負(fù)責(zé)人的許可,入鏈后BIM圖紙設(shè)計者可以通過遠(yuǎn)程過程調(diào)用(Remote Procedure Call,RPC)協(xié)議由已部署的智能合約向創(chuàng)作信息記錄鏈中發(fā)送通過解析BIM圖紙構(gòu)造的BIM圖紙信息并保存,然后將完整BIM圖紙保存到BIM圖紙數(shù)據(jù)庫中。同時,其他BIM圖紙設(shè)計者如果需要創(chuàng)作BIM圖紙,可以從創(chuàng)作信息記錄鏈中獲取圖紙最后一次創(chuàng)作后的唯一BIM圖紙信息并根據(jù)該信息在BIM圖紙數(shù)據(jù)庫中搜索獲取對應(yīng)的BIM圖紙進(jìn)行創(chuàng)作。

圖1 本文系統(tǒng)模型Fig.1 The proposed systemmodel

模型中主要包含如下實體。

1)BIM圖紙設(shè)計者:各個BIM圖紙設(shè)計者各自獨立,和BIM圖紙負(fù)責(zé)人共同組成創(chuàng)作信息記錄鏈,共同維護(hù)鏈上數(shù)據(jù),實現(xiàn)數(shù)據(jù)的分中心化維護(hù)。BIM圖紙設(shè)計者加入到創(chuàng)作信息記錄鏈中需要獲取BIM圖紙負(fù)責(zé)人的許可。

2)BIM圖紙負(fù)責(zé)人:BIM圖紙負(fù)責(zé)人是BIM圖紙的發(fā)起者和所有者,主要負(fù)責(zé)授權(quán)BIM圖紙設(shè)計者加入創(chuàng)作信息記錄鏈。

3)BIM圖紙數(shù)據(jù)庫:用于存儲初始以及每次創(chuàng)作后的BIM圖紙,存儲格式={BIM圖紙實體實例信息hash,創(chuàng)作后完整BIM圖紙}。

本文系統(tǒng)使用聯(lián)盟鏈作為BIM圖紙信息的存儲媒介,利用區(qū)塊鏈技術(shù)保證各設(shè)計者用戶上傳的BIM圖紙信息的不可篡改和公開透明,為以后設(shè)計者用戶間可能發(fā)生的版權(quán)糾紛問題提供存證。同時使用設(shè)計者用戶私鑰對BIM圖紙信息簽名,進(jìn)一步降低了多人協(xié)同創(chuàng)作BIM圖紙潛在的安全風(fēng)險。

1.2 系統(tǒng)架構(gòu)

基于區(qū)塊鏈的BIM圖紙多人創(chuàng)作系統(tǒng)架構(gòu)如圖2所示,包括以下六層結(jié)構(gòu)。

圖2 本文系統(tǒng)架構(gòu)Fig.2 The proposed system architecture

1)用戶層。包括BIM圖紙設(shè)計者和BIM圖紙負(fù)責(zé)人兩類用戶,BIM圖紙設(shè)計者用戶主要完成對BIM圖紙的創(chuàng)作,BIM圖紙負(fù)責(zé)人用戶是BIM圖紙的所有者和管理者,主要負(fù)責(zé)為BIM圖紙設(shè)計者用戶授權(quán)。

2)應(yīng)用服務(wù)層。主要包括針對系統(tǒng)應(yīng)用場景設(shè)計的服務(wù)功能。針對用戶操作場景,設(shè)計了用戶注冊和初始BIM圖紙上傳功能;針對數(shù)字簽名提取驗證場景,設(shè)計了BIM圖紙修改權(quán)設(shè)定和用戶數(shù)字簽名提取驗證功能;針對BIM圖紙修改提交場景,設(shè)計了修改后BIM圖紙?zhí)峤灰约白钚翨IM圖紙獲取功能。

3)節(jié)點層。包括BIM圖紙設(shè)計者用戶節(jié)點和BIM圖紙負(fù)責(zé)人用戶節(jié)點兩種類型,一個BIM圖紙設(shè)計者用戶節(jié)點對應(yīng)一個BIM圖紙設(shè)計者用戶,用戶的各種操作都由節(jié)點完成。

4)合約層。主要包括為區(qū)塊鏈節(jié)點提供相應(yīng)功能的智能合約。具體來說,用戶注冊合約對應(yīng)用戶注冊功能;BIM圖紙修改權(quán)設(shè)定合約對應(yīng)BIM圖紙修改權(quán)設(shè)定功能;BIM圖紙最新修改信息獲取合約對應(yīng)最新BIM圖紙獲取功能;BIM圖紙修改信息上傳合約對應(yīng)修改后BIM圖紙?zhí)峤还δ埽粩?shù)字簽名驗證合約對應(yīng)用戶數(shù)字簽名提取驗證功能。

5)共識層。采用Kafka共識機制,保證區(qū)塊鏈交易能夠快速地在所有區(qū)塊鏈節(jié)點之間達(dá)成一致性共識并上鏈存儲。

6)數(shù)據(jù)層。主要包括創(chuàng)作信息記錄鏈。創(chuàng)作信息記錄鏈由所有節(jié)點共同維護(hù),保證了BIM圖紙信息記錄的公開和透明。

為了方便系統(tǒng)調(diào)用,使用fabric-go-sdk封裝合約鏈碼并向系統(tǒng)和用戶暴露接口,具體接口名稱和屬性見表1。

表1 接口名稱和屬性Tab.1 Interfacenamesand attributes

下面將分別介紹系統(tǒng)各個模塊的功能和流程。

1.2.1 用戶操作模塊

本模塊主要實現(xiàn)用戶注冊和初始BIM圖紙上傳兩種功能,具體流程如圖3所示。

圖3 用戶操作模塊流程Fig.3 Flowchart of user operation module

1)用戶注冊。

如圖3虛線所示,BIM圖紙預(yù)設(shè)設(shè)計者用戶User2發(fā)起用戶注冊請求,將用戶注冊信息user發(fā)送到系統(tǒng)為之分配的用戶節(jié)點Pu,調(diào)用UserRegister()接口觸發(fā)用戶注冊合約使用橢圓曲線加密算法為用戶生成唯一的公私鑰對,并將用戶注冊信息與公私鑰對綁定,即私鑰=Map[用戶名,用戶密碼]。最后,用戶節(jié)點Pu將公私鑰對返回給用戶。

其中,用戶注冊信息user定義如下:

user={name,pwd,id_encryption}

其中name、pwd、id_encryption分別代表用戶名、用戶密碼以及經(jīng)過SHA1()函數(shù)加密過的用戶身份證號。將身份證號加密是為了防止用戶節(jié)點被不法黑客入侵帶來的用戶真實身份信息泄露問題。

2)初始BIM圖紙上傳。

設(shè)定BIM圖紙的預(yù)設(shè)設(shè)計者用戶User2已經(jīng)在系統(tǒng)中進(jìn)行了用戶注冊。如圖3序號①所示,預(yù)設(shè)設(shè)計者用戶User2發(fā)起B(yǎng)IM圖紙初始信息上傳請求,將初始BIM圖紙上傳到對應(yīng)的用戶節(jié)點Pu。隨后用戶節(jié)點Pu使用ifcOpenShell解析BIM圖紙,獲取BIM圖紙實體實例信息BIM_main,然后調(diào)用PutChangeRecord()接口觸發(fā)BIM圖紙修改信息上傳合約生成BIM圖紙初始信息記錄BIM_init,同時將BIM圖紙初始信息記錄BIM_init打包成交易后共識上鏈,如圖3序號②和③所示。最后用戶節(jié)點Pu將初始BIM圖紙上傳到BIM圖紙數(shù)據(jù)庫中,如圖3序號④所示。

其中,BIM圖紙實體實例信息BIM_main定義如下:

BIM_main={GUID,app_name,per,org,action,T,mod_date,mod_user,mod_app}

其內(nèi)容依次為BIM圖紙全局唯一標(biāo)識符(Globally Unique Identifier,GUID)、BIM圖紙創(chuàng)建應(yīng)用名稱、創(chuàng)建人信息、創(chuàng)建人所屬組織信息、修改狀態(tài)、BIM圖紙創(chuàng)建時間戳、修改日期、修改用戶、修改應(yīng)用。由于某些項目在BIM圖紙創(chuàng)建時未設(shè)置等原因,上述某些內(nèi)容可能為空。

BIM圖紙初始信息記錄BIM_init定義如下:

BIM_init={GUID,uploader_name,version,main_hash,uploader_sign,root_hash,T,MRS_hash,uploader_pub}

具體包括BIM圖紙全局唯一標(biāo)識符GUID、上傳者用戶名uploader_name、BIM圖紙版本version、BIM圖紙實體實例信息哈希值main_hash、上傳者私鑰簽名uploader_sign、溯源哈希值root_hash、時間戳T、BIM圖紙修改權(quán)設(shè)定交易哈希值MRS_hash、上傳者公鑰uploader_pub。其中:由于是初始BIM圖紙,所以初始BIM圖紙版本設(shè)為1,之后每次上傳BIM圖紙版本默認(rèn)加1;BIM圖紙修改權(quán)設(shè)定交易哈希值由下文數(shù)字簽名提取驗證模塊調(diào)用PutRightRecord()接口完成BIM圖紙修改權(quán)設(shè)定合約生成;root_hash表示當(dāng)前圖紙的上一次修改交易哈希值,該值可以通過交易自帶的GetTxID()函數(shù)獲取,由于這是BIM圖紙的初始信息,所以設(shè)定為BIM圖紙修改權(quán)設(shè)定交易哈希值。

具體實例如圖4所示。原始BIM為一個房屋模型,包括家具、門、窗、墻等組件。用戶User2首先解析初始BIM圖紙得到BIM圖紙實體實例信息BIM_main,然后將其和用戶名一同輸入初始BIM圖紙上傳界面,點擊界面中的上傳按鈕后調(diào)用PutChangeRecord()接口生成BIM圖紙初始信息記錄BIM_init,然后將BIM_init打包成交易后共識上鏈,同時將初始BIM圖紙上傳到BIM圖紙數(shù)據(jù)庫中。由于是初始圖紙,BIM圖紙實體實例信息中修改狀態(tài)action默認(rèn)為“NOCHANGE”,BIM圖紙初始信息記錄中將溯源哈希root_hash設(shè)置為和圖5中BIM圖紙修改權(quán)設(shè)定交易哈希值MRS_hash相同。

圖4 初始BIM圖紙上傳示意圖Fig.4 Schematic diagram of initial BIM drawing uploading

在本文系統(tǒng)中,修改后BIM圖紙信息被分別存儲在若干個區(qū)塊中,區(qū)塊包括區(qū)塊頭和區(qū)塊體兩個部分,區(qū)塊頭中包括頭哈希Hash_h、父哈希Hash_pre、時間戳T以及默克爾樹根MT_Root。其中,頭哈希由父哈希和本區(qū)塊頭中的其他信息進(jìn)行哈希運算得到。區(qū)塊體中主要存儲BIM圖紙修改記錄BIM_change。

其中,BIM圖紙修改記錄BIM_change定義如下:

BIM_change={GUID,modifier_name,version,main_hash,modifier_sign,root_hash,T,MRS_hash,modifier_pub}

其內(nèi)容依次為BIM圖紙全局唯一標(biāo)識符、修改者用戶名、BIM圖紙版本、實體實例信息哈希值、修改者私鑰簽名、溯源哈希值、時間戳、BIM圖紙修改權(quán)設(shè)定交易哈希值以及修改者公鑰。其中,root_hash表示當(dāng)前圖紙的上一次修改記錄哈希值,如果這是當(dāng)前BIM圖紙的第一次修改,則該值設(shè)定為BIM圖紙初始信息上傳交易哈希值,該值可以通過交易自帶的GetTxID()函數(shù)獲取。

1.2.2 數(shù)字簽名提取驗證模塊

本模塊主要實現(xiàn)用戶數(shù)字簽名提取驗證以及BIM圖紙修改權(quán)設(shè)定兩個功能。系統(tǒng)中的所有用戶操作都需要進(jìn)行用戶數(shù)字簽名驗證,驗證用戶是不是BIM圖紙的預(yù)設(shè)設(shè)計者用戶,從而保證系統(tǒng)的安全性和魯棒性,因此本模塊在系統(tǒng)中非常重要。

1)用戶數(shù)字簽名提取驗證。

用戶數(shù)字簽名提取驗證功能在系統(tǒng)中是通過觸發(fā)數(shù)字簽名驗證合約實現(xiàn)的,主要有如下步驟:首先獲取用戶簽名的原數(shù)據(jù)、用戶私鑰簽名以及用戶公鑰,然后將其傳入數(shù)字簽名驗證合約中的verify()驗證函數(shù)使用用戶公鑰解密用戶私鑰簽名得到解密后的明文,和用戶簽名的原數(shù)據(jù)做對比,如果相同則說明用戶有權(quán)利進(jìn)行操作或者原數(shù)據(jù)沒有被篡改。

用戶數(shù)字簽名提取驗證功能步驟雖然比較簡單,但是對于整個系統(tǒng)很重要,它進(jìn)一步保證了系統(tǒng)中用戶各類操作的合法性和安全性。

2)BIM圖紙修改權(quán)設(shè)定。

BIM圖紙預(yù)設(shè)設(shè)計者用戶對應(yīng)的用戶節(jié)點解析完初始BIM圖紙后,調(diào)用PutRightRecord()接口觸發(fā)BIM圖紙修改權(quán)設(shè)定合約根據(jù)預(yù)先設(shè)定的設(shè)計者列表,使用列表中設(shè)計者的私鑰對BIM圖紙初始信息記錄BIM_init中的全局唯一標(biāo)識符簽名,從而得到設(shè)計者數(shù)字簽名列表,然后繼續(xù)生成BIM圖紙修改權(quán)設(shè)定記錄MRS,最后將BIM圖紙修改權(quán)設(shè)定記錄MRS打包成交易后共識上鏈。

其中,BIM圖紙修改權(quán)設(shè)定記錄MRS定義如下:

MRS={BIM_desc,sign_list,GUID,main_hash,co_desc,T,MRS_hash}

其 中BIM_desc、sign_list、GUID、main_hash、co_desc、T、MRS_hash分別代表BIM圖紙描述、設(shè)計者私鑰簽名列表、BIM圖紙全局唯一標(biāo)識符、實體實例信息哈希值、設(shè)計者公司簡介、時間戳以及此次BIM圖紙修改權(quán)設(shè)定交易哈希值。

圖5說明了BIM圖紙修改權(quán)設(shè)定的整個過程,設(shè)定圖4中初始BIM圖紙的預(yù)設(shè)設(shè)計者用戶為User1和User2。當(dāng)用戶User2對應(yīng)的用戶節(jié)點解析完初始BIM圖紙后,將解析得到的初始BIM圖紙實體實例信息和預(yù)設(shè)用戶名列表輸入BIM圖紙修改權(quán)設(shè)定界面,點擊界面中的設(shè)定按鈕后調(diào)用PutRightRecord()接口使用預(yù)設(shè)設(shè)計者用戶User1和User2的私鑰對BIM圖紙全局唯一標(biāo)識符簽名并生成設(shè)計者私鑰簽名列表sign_list,然后繼續(xù)生成BIM圖紙修改權(quán)設(shè)定記錄MRS,最后將記錄打包成交易共識上鏈存儲。圖4中BIM圖紙初始信息記錄的MRS_hash即為此次BIM圖紙修改權(quán)設(shè)定記錄中的MRS_hash。

圖5 BIM圖紙修改權(quán)設(shè)定示意圖Fig.5 Schematic diagram of setting BIM drawingmodification right

1.2.3 BIM圖紙修改提交模塊

為了滿足BIM圖紙頻繁修改的需求,避免BIM圖紙頻繁修改導(dǎo)致的BIM圖紙版本混亂和版權(quán)劃分無準(zhǔn)確依據(jù)等問題,本模塊使用智能合約技術(shù)自動檢驗用戶操作合法性,自動記錄合法用戶的修改操作,利用智能合約規(guī)范鏈上交易者的行為,有效防止了上述問題的產(chǎn)生。

本模塊主要實現(xiàn)修改后BIM圖紙?zhí)峤灰约白钚翨IM圖紙獲取兩個功能。模塊完整流程如圖6所示。

圖6 BIM圖紙修改提交模塊流程Fig.6 Flowchart of BIM drawing modification and submission module

1)最新BIM圖紙獲取。

如圖6序號①和②所示,BIM圖紙預(yù)設(shè)設(shè)計者用戶User2發(fā)起最新BIM圖紙獲取請求,觸發(fā)數(shù)字簽名驗證合約驗證當(dāng)前用戶是否是BIM圖紙的預(yù)設(shè)修改用戶,如果驗證通過,則繼續(xù)進(jìn)行后面操作,否則拒絕請求并退出。然后,調(diào)用QueryChangeRecord()接口觸發(fā)BIM圖紙最新修改信息獲取合約從創(chuàng)作信息記錄鏈上查詢最新BIM圖紙信息hash,即區(qū)塊鏈中BIM圖紙最后一次修改記錄中的實體實例信息哈希值,見圖6序號③。隨后,用戶節(jié)點Pu將查詢到的最新BIM圖紙信息hash返回給用戶,用戶根據(jù)該hash去BIM圖紙數(shù)據(jù)庫中查找最新BIM圖紙進(jìn)行創(chuàng)作,如圖6序號④~⑥所示。

2)修改后BIM圖紙?zhí)峤弧?/p>

BIM圖紙預(yù)設(shè)設(shè)計者用戶User2在修改完BIM圖紙后,發(fā)起B(yǎng)IM圖紙修改信息提交請求。隨后觸發(fā)數(shù)字簽名驗證合約驗證當(dāng)前用戶是否是圖紙預(yù)設(shè)修改用戶,如果驗證通過,則繼續(xù)進(jìn)行后面操作,否則拒絕請求并退出,如圖6下半部分序號(1)和(2)所示。之后,調(diào)用PutChangeRecord()接口觸發(fā)BIM圖紙最新修改信息獲取合約查詢當(dāng)前鏈上最新BIM圖紙修改信息記錄中的BIM圖紙版本并和本地修改前BIM圖紙版本比較,根據(jù)比較結(jié)果和接口預(yù)設(shè)規(guī)則返回最新BIM圖紙修改信息記錄或NULL,見圖6序號(3)和(4)。如圖6序號(5)~(7)所示,如果返回最新BIM圖紙修改信息記錄則根據(jù)記錄從BIM圖紙數(shù)據(jù)庫中獲取完整BIM圖紙并與本地修改后BIM圖紙使用腳本通過Revit等建模軟件實現(xiàn)BIM圖紙融合,然后使用ifcOpenShell解析融合后BIM圖紙獲得BIM圖紙實體實例信息BIM_main,繼而生成BIM圖紙修改信息記錄BIM_change,之后將BIM_change打包成交易后共識上鏈。最后,用戶節(jié)點Pu將融合后的完整BIM圖紙上傳到BIM圖紙數(shù)據(jù)庫中存儲。

上述流程提到的PutChangeRecord()接口預(yù)設(shè)規(guī)則如下:

a)如果當(dāng)前鏈上BIM圖紙版本等于本地修改前BIM圖紙圖紙版本加1,說明本地修改前BIM圖紙圖紙被多位設(shè)計者修改,則返回當(dāng)前鏈上最新BIM圖紙修改信息記錄并獲取完整BIM圖紙與本地修改后BIM圖紙融合,融合后BIM圖紙版本設(shè)為本地修改前BIM圖紙版本加1;

b)如果當(dāng)前鏈上BIM圖紙版本為NULL或小于本地修改前BIM圖紙圖紙版本加1,說明本地修改后BIM圖紙為最新版,則返回NULL,本地修改后BIM圖紙版本設(shè)為本地修改前BIM圖紙版本加1;

c)如果當(dāng)前鏈上BIM圖紙版本大于本地修改前BIM圖紙版本加1,說明本地修改后BIM圖紙前已有多個版本,則返回當(dāng)前鏈上最新BIM圖紙修改信息記錄并獲取完整BIM圖紙與本地修改后BIM圖紙融合,融合后BIM圖紙版本設(shè)為當(dāng)前鏈上最新BIM圖紙版本加1。

當(dāng)上傳初始BIM圖紙時,經(jīng)查詢鏈上最新BIM圖紙版本為NULL,應(yīng)用接口規(guī)則b返回NULL后直接將接口生成的BIM圖紙初始信息記錄和初始BIM圖紙上傳到區(qū)塊鏈和BIM圖紙數(shù)據(jù)庫中,初始BIM圖紙版本號為1。圖7以各版本BIM圖紙鏈上次序為例說明多位BIM圖紙設(shè)計者在同一初始版本BIM圖紙的基礎(chǔ)上進(jìn)行協(xié)作修改提交的流程,圖中數(shù)字代表BIM圖紙版本號,大寫字母代表BIM圖紙設(shè)計者。

圖7 多人協(xié)作修改提交示意圖Fig.7 Schematic diagram of multi-person collaborativemodification and submission

下面將對圖7中的多人協(xié)作修改提交流程做詳細(xì)解釋。

1)A、B、C、D四位設(shè)計者同時獲取版本1的初始BIM圖紙進(jìn)行修改。

2)設(shè)計者A首先創(chuàng)作完,首先查看當(dāng)前鏈中最新BIM圖紙版本號,結(jié)果是1,比本地修改前BIM圖紙版本加1要小,根據(jù)PutChangeRecord()接口規(guī)則b,將本地修改后BIM圖紙版本設(shè)為本地修改前BIM圖紙版本加1后直接上傳到區(qū)塊鏈和BIM圖紙數(shù)據(jù)庫中,記為版本A2。

3)設(shè)計者B隨后創(chuàng)作完畢,首先查看當(dāng)前鏈中最新BIM圖紙版本號,結(jié)果是2,和本地修改前BIM圖紙版本加1相同,根據(jù)PutChangeRecord()接口規(guī)則a,返回當(dāng)前鏈上最新BIM圖紙修改信息記錄并獲取完整BIM圖紙與本地修改后BIM圖紙融合,將融合后的BIM圖紙版本設(shè)為本地修改前BIM圖紙版本加1后上傳到區(qū)塊鏈和BIM圖紙數(shù)據(jù)庫中,記為版本AB2,此時設(shè)計者E獲取版本AB2的BIM圖紙進(jìn)行創(chuàng)作。

4)設(shè)計者E創(chuàng)作完畢,首先查看當(dāng)前鏈中最新BIM圖紙版本號,結(jié)果是2,比本地修改前BIM圖紙版本加1要小,根據(jù)PutChangeRecord()接口規(guī)則b,將本地修改后BIM圖紙版本設(shè)為本地修改前BIM圖紙版本加1后直接上傳到區(qū)塊鏈和BIM圖紙數(shù)據(jù)庫中,記為版本E3。

5)此時設(shè)計者C創(chuàng)作完畢,首先查看當(dāng)前鏈中最新BIM圖紙版本號,結(jié)果是3,比本地修改前BIM圖紙版本加1要大,根據(jù)PutChangeRecord()接口規(guī)則c,返回當(dāng)前鏈上最新BIM圖紙修改信息記錄并獲取完整BIM圖紙與本地修改后BIM圖紙融合,將融合后的BIM圖紙版本設(shè)為當(dāng)前鏈上最新BIM圖紙版本加1后上傳到區(qū)塊鏈和BIM圖紙數(shù)據(jù)庫中,記為版本C4。以上就是圖7中多人協(xié)作修改提交流程的詳細(xì)解釋,未說明設(shè)計者D的修改提交操作和設(shè)計者C同理,在此不再贅述,按照此方法上傳修改后BIM圖紙可以較好地解決多人協(xié)同創(chuàng)作同一BIM圖紙上傳時帶來的融合或版本控制問題。

BIM圖紙修改提交具體實例如圖8所示,圖中僅展示主要步驟。設(shè)定這是圖4中初始BIM圖紙的第一次修改,修改操作為刪除圖紙中的一個家具組件。用戶User2發(fā)起B(yǎng)IM圖紙最新信息獲取請求,通過最新BIM圖紙獲取界面調(diào)用QueryChangeRecord()接口從本地區(qū)塊鏈中搜索BIM圖紙最新實體實例信息hash,然后根據(jù)該hash從BIM圖紙數(shù)據(jù)庫獲取最新BIM圖紙進(jìn)行修改,如圖8中序號①和②所示。用戶User2修改完BIM圖紙之后,將修改狀態(tài)action設(shè)置為“DELETED”,然后發(fā)起B(yǎng)IM圖紙修改提交請求,將用戶名和修改后BIM圖紙實體實例信息輸入修改后BIM圖紙?zhí)峤唤缑?,點擊提交按鈕后調(diào)用PutChangeRecord()接口查詢鏈上最新BIM圖紙版本并和本地修改前BIM圖紙版本加1比較,發(fā)現(xiàn)鏈上最新BIM圖紙版本比本地修改前BIM圖紙版本加1要小,根據(jù)PutChangeRecord()接口規(guī)則b,將本地修改后的BIM圖紙版本設(shè)為本地修改前的BIM圖紙版本加1,然后解析修改后的BIM圖紙獲取BIM圖紙實體實例信息,生成BIM圖紙修改信息記錄BIM_change并打包成交易共識上鏈,如圖8中序號③~⑤所示,最后將修改后的BIM圖紙上傳到BIM圖紙數(shù)據(jù)庫中。

圖8 BIM圖紙修改提交示意圖Fig.8 Schematic diagram of BIM drawing modification and submission

2 系統(tǒng)測試評估

2.1 系統(tǒng)環(huán)境介紹

本文系統(tǒng)基于Hyperledger Fabric1.4框架結(jié)合智能合約技術(shù)開發(fā)實現(xiàn)。本文系統(tǒng)安全機制依靠Fabric成熟的安全機制,選用的共識機制Kafka也是Fabric自帶的共識機制,因此系統(tǒng)安全性得到保障。

2.2 區(qū)塊鏈系統(tǒng)性能測試

實驗用設(shè)備為兩臺筆記本,兩臺筆記本均為8 GB內(nèi)存且都使用4核lntel Core i5處理器,每臺筆記本都運行4核2 GB內(nèi)存的虛擬機兩臺。虛擬機中均搭載Ubuntu18.04系統(tǒng)。Kafka實驗環(huán)境共有3個ZooKeeper服務(wù)、4個Kafka服務(wù)、3個排序節(jié)點服務(wù)、2個組織。每個組織一個證書頒發(fā)機構(gòu)(Certificate Authority,CA)服務(wù)、3個節(jié)點,組織1兩個節(jié)點,組織2一個節(jié)點,每個節(jié)點對應(yīng)一個CouchDB。背書策略設(shè)定為每個組織中至少一個背書節(jié)點參與背書。

圖9為實驗BIM,包括家具、門、窗以及墻組件。預(yù)設(shè)修改用戶為User1、User2以及User3,每位用戶對應(yīng)一個節(jié)點,User1和User2屬于組織1,User3屬于組織2。

圖9 實驗BIMFig.9 Experimental BIM

系統(tǒng)性能測試相關(guān)指標(biāo)主要包括:節(jié)點提交交易到系統(tǒng)出塊的時間Btime、最長出塊等待時間Btimeout、區(qū)塊最大交易數(shù)MMCount。其中,Btimeout與MMCount為系統(tǒng)的出塊條件,滿足其中之一的條件即可出塊。

2.2.1 出塊時間測試

針對同時間段內(nèi)多用戶節(jié)點并發(fā)交易的場景,進(jìn)行系統(tǒng)出塊時間測試,測試系統(tǒng)在處理多節(jié)點并發(fā)交易時,出塊時間是否能夠滿足用戶日常應(yīng)用。測試環(huán)境設(shè)定如下:每個組織中的用戶節(jié)點都不停地發(fā)送1 000條BIM圖紙修改提交交易,測試系統(tǒng)的平均出塊時間是否滿足要求,即小于設(shè)定的最大出塊時間。本文按照Fabric聯(lián)盟鏈出塊常規(guī)設(shè)定Btimeout為2 s,本文系統(tǒng)共3個用戶節(jié)點,故設(shè)定MMCount為3。

一共進(jìn)行20次測試,每次測試后計算平均出塊時間,結(jié)果如圖10所示。由圖10可知,出塊時間一開始呈現(xiàn)上升趨勢,到第9次測試左右到達(dá)最大出塊時間,之后圍繞平均出塊時間上下波動,這種結(jié)果的原因是隨著測試次數(shù)的增加,大量的測試數(shù)據(jù)占用了較多的系統(tǒng)內(nèi)存,所以會對系統(tǒng)的性能產(chǎn)生一定影響。經(jīng)過20次測試,本文系統(tǒng)處理BIM圖紙修改提交交易的平均出塊時間為0.467 85 s,最大時間為0.55 s,遠(yuǎn)遠(yuǎn)小于設(shè)定的最大出塊時間2 s,故實驗的出塊條件為達(dá)到區(qū)塊最大交易數(shù)。實驗結(jié)果表明,本文系統(tǒng)能夠完善處理3個節(jié)點并發(fā)提交的3 000條交易請求,能夠滿足正常系統(tǒng)的應(yīng)用需求。

圖10 出塊時間Fig.10 Block generation time

2.2.2 系統(tǒng)處理速率測試

針對多用戶并發(fā)大量交易請求的場景,進(jìn)行系統(tǒng)處理速率測試,測試系統(tǒng)在處理多節(jié)點并發(fā)交易時,系統(tǒng)在保證最大出塊時間內(nèi)穩(wěn)定出塊的條件下的處理速率。測試環(huán)境設(shè)定如下:每個組織中的節(jié)點同時發(fā)出400、800、1 200、1 600、2000、2400條交易請求,測試系統(tǒng)在保證最大出塊時間內(nèi)穩(wěn)定出塊的條件下的處理速率。

測試結(jié)果如圖11所示。由圖11可以看出,隨著用戶請求頻率的增加,系統(tǒng)處理速率最初是線性增加的,直到用戶請求頻率達(dá)到每秒1 600次交易時,系統(tǒng)處理速率逐漸達(dá)到飽和,約為每秒1 568次交易。隨后系統(tǒng)處理速率由于數(shù)據(jù)量過大占用內(nèi)存等原因而開始下降。實驗結(jié)果表明,系統(tǒng)在保證最大出塊時間內(nèi)穩(wěn)定出塊的條件下的最大處理速率為每秒1 568次交易,完全可以滿足用戶日常的正常使用需求以及系統(tǒng)的使用標(biāo)準(zhǔn)。

圖11 系統(tǒng)處理速率Fig.11 System processing rate

3 結(jié)語

區(qū)塊鏈?zhǔn)且环N通過去中心化和去信任化,依靠集體共同維護(hù)的數(shù)據(jù)庫技術(shù),作為近幾年的新興技術(shù)已經(jīng)在各行各業(yè)引起了廣泛的關(guān)注和研究熱潮。BIM通過數(shù)字化手段,將建筑的各種信息整合于一個三維模型信息數(shù)據(jù)庫中,與區(qū)塊鏈技術(shù)有很好的契合點。本文結(jié)合區(qū)塊鏈技術(shù),提出了基于區(qū)塊鏈的BIM圖紙多人協(xié)同創(chuàng)作系統(tǒng),將BIM圖紙整個創(chuàng)作過程中的所有創(chuàng)作后BIM圖紙信息上鏈存儲,依靠區(qū)塊鏈可追溯、防篡改等特性,解決了BIM圖紙版本混亂、不易溯源以及存在數(shù)據(jù)安全風(fēng)險等問題。最后,設(shè)計了相關(guān)實驗對系統(tǒng)性能進(jìn)行了測試,測試結(jié)果表明系統(tǒng)具有良好的性能,能夠滿足用戶日常需求。本文提出的BIM圖紙多人創(chuàng)作系統(tǒng)可以為后續(xù)的版權(quán)劃分工作提供依據(jù),后續(xù)可以對此展開研究。

猜你喜歡
圖紙創(chuàng)作用戶
淺談汽車線束產(chǎn)品圖紙管理
創(chuàng)作之星
創(chuàng)作(2020年3期)2020-06-28 05:52:44
看圖紙
《一墻之隔》創(chuàng)作談
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創(chuàng)作心得
小說月刊(2014年1期)2014-04-23 09:00:04
酒店室內(nèi)裝修圖紙深化設(shè)計淺析
河南科技(2014年12期)2014-02-27 14:10:44
主站蜘蛛池模板: 亚洲中文字幕无码爆乳| 亚洲成人精品在线| 在线观看国产小视频| 亚洲aaa视频| 婷婷伊人五月| 一区二区理伦视频| 99在线小视频| 天堂网亚洲综合在线| 欧美专区在线观看| 综合色在线| 亚洲成aⅴ人片在线影院八| 99re免费视频| 国产丰满成熟女性性满足视频| 91久久国产热精品免费| 国产精品妖精视频| 国产成人精品视频一区二区电影| 国产毛片久久国产| 亚洲国产综合精品一区| 毛片在线播放网址| 热伊人99re久久精品最新地| 久久黄色影院| 91精品啪在线观看国产| 亚洲无码精彩视频在线观看 | 欧美午夜在线视频| 欧美精品另类| 天天视频在线91频| 国产呦精品一区二区三区网站| 亚洲水蜜桃久久综合网站| 欧美无专区| 国产网友愉拍精品视频| 亚洲天堂成人在线观看| 一级毛片高清| 囯产av无码片毛片一级| 精品三级网站| 天天躁日日躁狠狠躁中文字幕| 干中文字幕| 这里只有精品在线播放| 国产一在线观看| 国产午夜无码片在线观看网站| 美女裸体18禁网站| 国产另类视频| 99久久精彩视频| 亚洲视频在线青青| 拍国产真实乱人偷精品| 视频一本大道香蕉久在线播放| 欧美精品一区在线看| 色综合五月婷婷| 露脸真实国语乱在线观看| 午夜成人在线视频| 亚洲欧美日韩成人在线| 成人韩免费网站| www.日韩三级| 538精品在线观看| 久久亚洲国产视频| 亚洲制服丝袜第一页| 2020精品极品国产色在线观看| 国内99精品激情视频精品| 美女啪啪无遮挡| 台湾AV国片精品女同性| 高清不卡一区二区三区香蕉| 国产主播喷水| 国产美女主播一级成人毛片| 亚洲综合久久一本伊一区| 久久性妇女精品免费| 青青草91视频| 亚洲三级成人| 东京热高清无码精品| 亚洲美女视频一区| 日本精品一在线观看视频| 欧洲av毛片| 久久亚洲国产最新网站| 五月婷婷综合网| 国产亚洲欧美在线人成aaaa| 福利国产微拍广场一区视频在线| 久久精品女人天堂aaa| 国产18在线播放| 日本影院一区| 小13箩利洗澡无码视频免费网站| 婷婷六月综合网| 另类专区亚洲| 2021最新国产精品网站| 三级欧美在线|