SmartPlant P&ID图纸权限管理方法的讨论与实现
2018-02-28沈杰
沈杰
(上海核工程研究设计院有限公司,上海 200233)
1 引言
SmartPlant P&ID软件是鹰图公司开发的二维工艺流程图设计软件,它被广泛应用于能源与化工行业,通过多专业协同配合完成工厂设计任务,能够有效提高设计效率和设计质量。与传统的CAD软件相比,这个软件不仅能绘制出美观的图面,而且每个物项上都存储着大量的数据。利用这些存储在数据库中的大量信息,设计人员可以方便地抽取各种报表,大大提高了设计效率和准确度。
与其他的SmartPlant系列软件一致,SmartPlant P&ID软件对项目的创建和管理工作全部移交到SmartPlant Engineering Manager软件中完成。作为一款将SmartPlant系列进行集中管理的项目管理工具,SmartPlant Engineering Manager为用户提供了自由建立站点与工厂结构,自定义对应数据库、备份数据,定义用户与权限组等功能,从而实现用户对整个工厂的自由定制和项目管理。
核电项目的设计涉及到多专业的协同,所以,整个电站的设计都是按阶段、按区域交由不同专业的设计人员来设计。因此,为了便于项目工作的顺利开展和进度控制,经常需要对已完成的区域或者图纸进行权限的控制和冻结,从而保证这些图纸的准确性。
SmartPlant Engineering Manager软件对于角色权限的定义,都是以工厂为单位设置的,对于工厂下的不同区域乃至不同图纸,无法采用不同的权限设置,这就导致了软件设置与项目实际要求之间的矛盾。
基于上述考虑,为了满足项目管理的实际需求,笔者发明了1种SmartPlant P&ID软件的精细化权限控制方法,通过控制站点文件夹下图纸的访问权限来实现对每张图纸的精细化权限管理,大大提高了管理精度和工程质量。
2 图纸精细化权限管理分析
2.1 概述
权限控制的基础就是控制用户对图纸的操作,确保只有被允许的用户才拥有对图纸的编辑权。对于SmartPlant P&ID软件,通过对SmartPlant Engineering Manager软件的设置,所有的图纸都会被放置在用户建立站点时定义的站点服务器的特定路径下,因此,用户绘制编辑图纸的过程即是对于服务器上图纸文件的编辑过程。
图纸的精细化权限控制就是指针对不同的设计图纸,可以有完全不同的可操作用户组,能够最精确地控制每个设计人员的设计范围,防止设计人员之间存在误操作从而导致设计错误的发生,同时,也便于阶段性设计完成后对于图纸的保护。由于鹰图公司提供的SmartPlant Engineering Manager软件无法实现对图纸的精细化权限控制,所以,采取控制对文件的访问权限的方法实现对不同图纸的精细化权限控制。文件的用户权限控制如图1所示。
2.2 权限管理分析
由于SmartPlant Engineering Manager无法实现对工厂下每张图纸的精细化权限设置,因此,必须绕开SmartPlant Engineering Manager软件,另辟蹊径,实现对每张图纸的访问权限的精细化权限控制。
整个P&ID软件采用C/S模式,所有的站点参考文件和图纸都存储在服务器上。用户编辑图纸的过程等同于对服务器上的文件进行操作,因此,对于图纸的控制可以简化为对共享文件访问权限的控制。
要对SmartPlant P&ID文件进行操作,必须先要对整个电站拥有操作权限,这个用户组在SmartPlant Engineering Manager中设置。除了这个用户组内的用户以外,就算在共享文件中赋予权限,也无法对P&ID图纸进行操作。因此,在权限管理过程中,先需要读取整个电站下所有对图纸拥有操作权限的用户。读取完毕后,再对这些用户进行编辑,确定将需要的用户加入对应图纸的可编辑权限组中,从而完成对不同图纸的差异化权限控制,如图2所示。
图1 文件的用户权限控制
图2 用户权限关系
2.3 精细化权限管理的优势
2.3.1 缩小图纸使用人员范围,保障图纸安全
在1张P&ID图纸被用户编辑的情况下,其他用户对这张图纸只有只读权限,只有等到编辑中的用户释放编辑权限后才能有下一位用户编辑。而P&ID软件并未提供当前编辑用户查询功能,因此,一旦出现这种情况,只能手动逐个排查所有可能进行图纸编辑的用户。
在当前粗颗粒度的权限管理的情况下,排查的范围将会是整个项目的权限组,必然会浪费大量的时间。而精细化的权限管理使得每张图纸的权限用户缩小在一个可控的范围,便于用户排查,节省大量的时间。
当所有人员对所有图纸都有一样的控制权限时,容易因为误操作而改动本来不属于自己的图纸,影响图纸的准确性。如果能够为每张图纸设置使用人员,则可以大大减少每张图纸的使用人数,从而更好地保证图纸的安全。
2.3.2 方便冻结项目区域与图纸
图纸的精细化权限管理带来的另一个好处就是能够通过对不同区域和图纸设定不同的用户,来完成对整个区域或者单张图纸的冻结。
冻结区域和图纸的作用在于保护当前图纸的状态,避免误操作造成图纸内容的修改。冻结的方法为将这些区域和图纸的可操作人员列表清空。
3 技术要点分析
3.1 读取项目的工厂结构和图纸信息
SmartPlant P&ID的所有站点的工厂结构和图纸信息都分布在站点数据库下的各个schema下的table中。详细的对应关系在此不一一赘述,具体可参考SmartPlant P&ID软件相关参考文档。
3.2 文件访问权限组控制
这里使用Windows自带的访问控制机制来实现对文件访问权限组控制,整个过程如图3所示。
图3 修改访问权限组
修改文件访问权限的关键就是对DACL的修改,通过修改相应的组成来完成对访问权限组的修改。其中,DACL为自主访问控制列表,其内部构造如图4所示。
图4 DACL内部结构
3.3 权限控制组的记录
权限控制组记录最好的方法就是能够直接读取文件的DACL并且反馈到程序界面中,不过,在实际使用中,使用这种方法相当烦琐,代码冗长。因此,我们单独在数据库中对所有文件的权限进行记录和跟踪,建立2张表单,1张表单记录所有对权限组的修改,1张表单则单纯记录每张图纸有哪些用户具有编辑权限。
4 程序设计与实现
程序开发使用C#作为开发语言,将Microsoft Visual Studio 2010作为开发环境。软件能够通过读取配置文件获得与SmartPlant P&ID Drawing Manager一样的控制界面,然后针对每张图纸设置能够进行操作的用户组,从而实现对每张图纸的精细化权限管理。
4.1 项目信息获取
如图5所示,软件开始需要用户选定配置文件来完成站点的装载工作。为了方便用户使用,软件设计成能够读取SmartPlant Engineering Manager生成的ini配置文件的形式。采取读取配置文件的方法能够最大限度地提升软件的适用性,只要是通过SmartPlant Engineering Manager创建的P&ID项目,都能通过此软件进行权限控制。
图5 初始化配置界面
图6 项目站点信息
图7 图纸权限读取
装载ini配置文件,软件会自动从站点的数据库中对应的schema和table中获取整个站点下所有工厂以及对应工厂下所有的区域和图纸以及其对应的所有信息,包括图纸的路径,如图6所示。
4.2 权限读取与控制
4.2.1 读取每张图纸的权限组
如图7所示,当前选中图纸中可以使用的设计人员为2人,具体的实现方法为直接读取记录表单中的键值来获取对应的用户。
4.2.2 增减图纸的控制人员
如图8所示,软件能够自动读取对站点具有编辑权限的所有用户,管理员可以从中找出与图纸有对应关系的人员添加到对应图纸的完全控制权限组中,当然也可以删除一些不再使用该图纸的用户。左侧弹出的对话框中的用户列表为在SmartPlant Engineering Manager中定义的所有对电厂拥有编辑权限的用户列表。
图8 新增权限组成员
5 结束语
本文从实际项目管理需求出发,探讨了当前SmartPlant P&ID软件自带的粗颗粒度的用户权限管理方式与项目管理需求上日益增长的精细化管理之间的矛盾,并针对这一矛盾给出了可行的解决方案——使用文件访问权限组控制来实现权限精细化管理的技术方案。最后,采用C#的开发语言编写了权限管理软件落实提出的技术方案,证明整个技术方案的可行性。使用这个方法有效克服了SmartPlant P&ID软件在用户权限管理上的不足,大幅提高了项目的管理精度和工程质量。
[1]Intergraph Corporation.SmartPlant P&ID Programmer's Guide[EB/CD].上海:鹰图软件技术(青岛)有限公司上海分公司,2009.