沈杰
(上海核工程研究設計院有限公司,上海 200233)
SmartPlant P&ID軟件是鷹圖公司開發(fā)的二維工藝流程圖設計軟件,它被廣泛應用于能源與化工行業(yè),通過多專業(yè)協(xié)同配合完成工廠設計任務,能夠有效提高設計效率和設計質量。與傳統(tǒng)的CAD軟件相比,這個軟件不僅能繪制出美觀的圖面,而且每個物項上都存儲著大量的數據。利用這些存儲在數據庫中的大量信息,設計人員可以方便地抽取各種報表,大大提高了設計效率和準確度。
與其他的SmartPlant系列軟件一致,SmartPlant P&ID軟件對項目的創(chuàng)建和管理工作全部移交到SmartPlant Engineering Manager軟件中完成。作為一款將SmartPlant系列進行集中管理的項目管理工具,SmartPlant Engineering Manager為用戶提供了自由建立站點與工廠結構,自定義對應數據庫、備份數據,定義用戶與權限組等功能,從而實現用戶對整個工廠的自由定制和項目管理。
核電項目的設計涉及到多專業(yè)的協(xié)同,所以,整個電站的設計都是按階段、按區(qū)域交由不同專業(yè)的設計人員來設計。因此,為了便于項目工作的順利開展和進度控制,經常需要對已完成的區(qū)域或者圖紙進行權限的控制和凍結,從而保證這些圖紙的準確性。
SmartPlant Engineering Manager軟件對于角色權限的定義,都是以工廠為單位設置的,對于工廠下的不同區(qū)域乃至不同圖紙,無法采用不同的權限設置,這就導致了軟件設置與項目實際要求之間的矛盾。
基于上述考慮,為了滿足項目管理的實際需求,筆者發(fā)明了1種SmartPlant P&ID軟件的精細化權限控制方法,通過控制站點文件夾下圖紙的訪問權限來實現對每張圖紙的精細化權限管理,大大提高了管理精度和工程質量。
權限控制的基礎就是控制用戶對圖紙的操作,確保只有被允許的用戶才擁有對圖紙的編輯權。對于SmartPlant P&ID軟件,通過對SmartPlant Engineering Manager軟件的設置,所有的圖紙都會被放置在用戶建立站點時定義的站點服務器的特定路徑下,因此,用戶繪制編輯圖紙的過程即是對于服務器上圖紙文件的編輯過程。
圖紙的精細化權限控制就是指針對不同的設計圖紙,可以有完全不同的可操作用戶組,能夠最精確地控制每個設計人員的設計范圍,防止設計人員之間存在誤操作從而導致設計錯誤的發(fā)生,同時,也便于階段性設計完成后對于圖紙的保護。由于鷹圖公司提供的SmartPlant Engineering Manager軟件無法實現對圖紙的精細化權限控制,所以,采取控制對文件的訪問權限的方法實現對不同圖紙的精細化權限控制。文件的用戶權限控制如圖1所示。
由于SmartPlant Engineering Manager無法實現對工廠下每張圖紙的精細化權限設置,因此,必須繞開SmartPlant Engineering Manager軟件,另辟蹊徑,實現對每張圖紙的訪問權限的精細化權限控制。
整個P&ID軟件采用C/S模式,所有的站點參考文件和圖紙都存儲在服務器上。用戶編輯圖紙的過程等同于對服務器上的文件進行操作,因此,對于圖紙的控制可以簡化為對共享文件訪問權限的控制。
要對SmartPlant P&ID文件進行操作,必須先要對整個電站擁有操作權限,這個用戶組在SmartPlant Engineering Manager中設置。除了這個用戶組內的用戶以外,就算在共享文件中賦予權限,也無法對P&ID圖紙進行操作。因此,在權限管理過程中,先需要讀取整個電站下所有對圖紙擁有操作權限的用戶。讀取完畢后,再對這些用戶進行編輯,確定將需要的用戶加入對應圖紙的可編輯權限組中,從而完成對不同圖紙的差異化權限控制,如圖2所示。
圖1 文件的用戶權限控制
圖2 用戶權限關系
2.3.1 縮小圖紙使用人員范圍,保障圖紙安全
在1張P&ID圖紙被用戶編輯的情況下,其他用戶對這張圖紙只有只讀權限,只有等到編輯中的用戶釋放編輯權限后才能有下一位用戶編輯。而P&ID軟件并未提供當前編輯用戶查詢功能,因此,一旦出現這種情況,只能手動逐個排查所有可能進行圖紙編輯的用戶。
在當前粗顆粒度的權限管理的情況下,排查的范圍將會是整個項目的權限組,必然會浪費大量的時間。而精細化的權限管理使得每張圖紙的權限用戶縮小在一個可控的范圍,便于用戶排查,節(jié)省大量的時間。
當所有人員對所有圖紙都有一樣的控制權限時,容易因為誤操作而改動本來不屬于自己的圖紙,影響圖紙的準確性。如果能夠為每張圖紙設置使用人員,則可以大大減少每張圖紙的使用人數,從而更好地保證圖紙的安全。
2.3.2 方便凍結項目區(qū)域與圖紙
圖紙的精細化權限管理帶來的另一個好處就是能夠通過對不同區(qū)域和圖紙設定不同的用戶,來完成對整個區(qū)域或者單張圖紙的凍結。
凍結區(qū)域和圖紙的作用在于保護當前圖紙的狀態(tài),避免誤操作造成圖紙內容的修改。凍結的方法為將這些區(qū)域和圖紙的可操作人員列表清空。
SmartPlant P&ID的所有站點的工廠結構和圖紙信息都分布在站點數據庫下的各個schema下的table中。詳細的對應關系在此不一一贅述,具體可參考SmartPlant P&ID軟件相關參考文檔。
這里使用Windows自帶的訪問控制機制來實現對文件訪問權限組控制,整個過程如圖3所示。
圖3 修改訪問權限組
修改文件訪問權限的關鍵就是對DACL的修改,通過修改相應的組成來完成對訪問權限組的修改。其中,DACL為自主訪問控制列表,其內部構造如圖4所示。
圖4 DACL內部結構
權限控制組記錄最好的方法就是能夠直接讀取文件的DACL并且反饋到程序界面中,不過,在實際使用中,使用這種方法相當煩瑣,代碼冗長。因此,我們單獨在數據庫中對所有文件的權限進行記錄和跟蹤,建立2張表單,1張表單記錄所有對權限組的修改,1張表單則單純記錄每張圖紙有哪些用戶具有編輯權限。
程序開發(fā)使用C#作為開發(fā)語言,將Microsoft Visual Studio 2010作為開發(fā)環(huán)境。軟件能夠通過讀取配置文件獲得與SmartPlant P&ID Drawing Manager一樣的控制界面,然后針對每張圖紙設置能夠進行操作的用戶組,從而實現對每張圖紙的精細化權限管理。
如圖5所示,軟件開始需要用戶選定配置文件來完成站點的裝載工作。為了方便用戶使用,軟件設計成能夠讀取SmartPlant Engineering Manager生成的ini配置文件的形式。采取讀取配置文件的方法能夠最大限度地提升軟件的適用性,只要是通過SmartPlant Engineering Manager創(chuàng)建的P&ID項目,都能通過此軟件進行權限控制。
圖5 初始化配置界面
圖6 項目站點信息
圖7 圖紙權限讀取
裝載ini配置文件,軟件會自動從站點的數據庫中對應的schema和table中獲取整個站點下所有工廠以及對應工廠下所有的區(qū)域和圖紙以及其對應的所有信息,包括圖紙的路徑,如圖6所示。
4.2.1 讀取每張圖紙的權限組
如圖7所示,當前選中圖紙中可以使用的設計人員為2人,具體的實現方法為直接讀取記錄表單中的鍵值來獲取對應的用戶。
4.2.2 增減圖紙的控制人員
如圖8所示,軟件能夠自動讀取對站點具有編輯權限的所有用戶,管理員可以從中找出與圖紙有對應關系的人員添加到對應圖紙的完全控制權限組中,當然也可以刪除一些不再使用該圖紙的用戶。左側彈出的對話框中的用戶列表為在SmartPlant Engineering Manager中定義的所有對電廠擁有編輯權限的用戶列表。
圖8 新增權限組成員
本文從實際項目管理需求出發(fā),探討了當前SmartPlant P&ID軟件自帶的粗顆粒度的用戶權限管理方式與項目管理需求上日益增長的精細化管理之間的矛盾,并針對這一矛盾給出了可行的解決方案——使用文件訪問權限組控制來實現權限精細化管理的技術方案。最后,采用C#的開發(fā)語言編寫了權限管理軟件落實提出的技術方案,證明整個技術方案的可行性。使用這個方法有效克服了SmartPlant P&ID軟件在用戶權限管理上的不足,大幅提高了項目的管理精度和工程質量。
[1]Intergraph Corporation.SmartPlant P&ID Programmer's Guide[EB/CD].上海:鷹圖軟件技術(青島)有限公司上海分公司,2009.