一种基于web建模的数据同步方法、系统及相关装置
技术领域
本申请涉及计算机设计领域,特别涉及一种基于web建模的数据同步方法、系统及相关装置。
背景技术
智能制造需要协同设计的支持,这是当前的研究应用热点。协同设计技术在协同CAD,工业设计等制造设计中有着广泛的应用。协同建模是计算机支持的协同工作和传统的三维实体建模相结合的产物,它是分布协同设计的关键技术之一,对提高产品设计效率,降低设计成本具有重要作用。
CAD在各行业虽有广泛应用,但现在企业的设计团队人员数量不一,且设计周期不定,很容易出现信息孤岛、数据分散等问题。这种情况下,团体工作效率难以实现高效。而协同建模能将数据共享,随时了解其他人的设计进度,减少信息流失造成的低效率、沟通不畅等问题。而现有的协同设计方法为设计人员通过各自分别完成对应任务,通过视频会议、共享文件等形式进行较低程度的协同,而且目前的技术依然需要用户在本地客户端安装完整CAD软件,对终端的性能提出了更高的要求。
发明内容
本申请的目的是提供一种基于web建模的数据同步方法、系统、计算机可读存储介质和服务器,能够实现不同终端的模型同步。
为解决上述技术问题,本申请提供一种基于web建模的数据同步方法,具体技术方案如下:
接收终端的协作建模任务;
根据所述协作建模任务确定对应的用户权限工作集;
接收终端的增量数据;其中,所述增量数据为基于所述用户权限工作集范围内对模型的编辑数据;
将所述增量数据发送至协同终端,并利用所述增量数据对所述协同终端的模型进行融合。
可选的,接收终端的增量数据之前,还包括:
将所述用户权限工作集通过websocket发送至所述终端。
可选的,将所述增量数据发送至协同终端包括:
将所述增量数据的离散数据发送至协同终端;
相应的,将所述增量数据发送至协同终端之前,还包括:
确定所述增量数据的拓扑元素集合;
基于所述拓扑元素集合中的边数据和面数据进行离散,得到所述离散数据;其中,所述离散数据为所述模型对应的点数据、线数据和面数据。
可选的,还包括:
接收所述终端对于第二终端的额外操作权限请求;
将所述额外操作权限请求转发至所述第二终端;
在所述第二终端确认所述额外操作权限请求后,将额外操作权限更新至所述终端的用户权限工作集。
可选的,接收终端的协作建模任务后,还包括:
利用Web服务器网关接口将所述协作建模任务转为预设格式数据。
可选的,根据所述协作建模任务确定对应的用户权限工作集包括:
根据所述协作建模任务到达时间确定对应的用户权限工作集。
可选的,根据所述协作建模任务确定对应的用户权限工作集包括:
基于互斥锁机制确定所述协作建模任务对应的用户权限工作集。
本申请还提供一种基于web建模的数据同步系统,包括:
请求接收模块,用于接收终端的协作建模任务;
权限确定模块,用于根据所述协作建模任务确定对应的用户权限工作集;
增量接收模块,用于接收终端的增量数据;其中,所述增量数据为基于所述用户权限工作集范围内对模型的编辑数据;
模型同步模块,用于将所述增量数据发送至协同终端,并利用所述增量数据对所述协同终端的模型进行融合。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请还提供一种服务器,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
本申请提供一种基于web建模的数据同步方法,包括:接收终端的协作建模任务;根据所述协作建模任务确定对应的用户权限工作集;接收终端的增量数据;其中,所述增量数据为基于所述用户权限工作集范围内对模型的编辑数据;将所述增量数据发送至协同终端,并利用所述增量数据对所述协同终端的模型进行融合。
本申请借助于服务器,能够实现各终端建模的同步性,突破不同终端建模对于时间、空间及硬件性能的限制,满足多任务在不同终端并发执行的数据传输和管理需求,提高建模效率。本申请还提供一种基于web建模的数据同步系统、计算机可读存储介质和服务器,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种基于web建模的数据同步方法的流程图;
图2为本申请实施例所提供的一种模型融合示意图;
图3为本申请实施例所提供的一种基于web建模的数据同步系统结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更好的描述本申请所提供的一种基于web建模的数据同步方法,先针对本申请的应用场景作简要描述。
用于放置共享建模系统和用户文件数据的服务器,该服务器可以为云端服务器,服务器端主要提供实体造型及协作管理服务。当本申请应用于CAD(计算机辅助设计,Computer Aided Design)设计时,实体造型服务是通过基于如parasolid、ACIS、opencascade等几何造型内核开发的建模系统所提供的功能对精确几何造型进行运算操作,这些功能包括了二维草图绘制以及三维特征创建等一个CAD软件所拥有的基础功能。协作管理系统提供用户管理、任务管理和会话管理等开展协作任务必备的基础功能。用户管理包括新用户注册、用户注销、用户登录与退出等。任务管理是给每个协作建模任务分配相对独立的共享工作空间,保证多个协作任务可以并行展开。会话管理则负责某一个建模任务的所有终端之间的通讯转发并进行操作的并发控制。服务器还可以生成终端显示的数据,即实体的面片模型和线框模型以及用户界面。
用于交互输入和三维模型显示的终端,终端对所建实体模型的显示功能是基于webGL(WebGL,Web Graphics Library,一种3D绘图标准)实现的,通过webGL开发的旋转、放缩和移动等功能可以让用户更好的浏览查看模型,包括面片模型、线框模型等。终端的用户界面提供更流畅舒适的交互体验,交互主要包括对模型中元素的选取、造型命令的生成及其操作参数的输入等。
请参考图1,图1为本申请实施例所提供的一种基于web建模的数据同步方法的流程图,该方法包括:
S101:接收终端的协作建模任务;
本步骤旨在接收终端的协作建模任务。具体的,用户在终端登录后,可以在诊断创建协作任务,即打开文件或者创建新文件等任务,此后,包含任务需求的协作建模任务将发送至web服务器。需要注意的是,本申请中,web服务器与各终端之间通过websocket连接,websocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。
当针对于CAD设计时,建模系统可以基于几何造型内核,此时服务器接收到协作建模任务后,还可以利用Web服务器网关接口(Python Web Server Gateway Interface,简称为WSGI)将所述协作建模任务转为预设格式数据。当然,在此对于采用何种格式数据并不作具体限定,且容易理解的是当本申请应用到不同场景时,根据实际建模系统的内核不同,也可以将协作建模任务转为对应的格式数据,在此不一一举例限定。
S102:根据所述协作建模任务确定对应的用户权限工作集;
本步骤旨在确定对应的用户权限工作集。需要注意的是,用户权限工作集中的权限主要和协作建模任务的请求方身份以及请求时间有关。
在整个协同设计过程中,可能存在多用户同时对同一零件的同一属性进行编辑而引发并发操作冲突问题,为了保证协作建模任务的有序进行,避免引发并发冲突,本申请提供了两种方式来解决并发冲突问题,其一是基于优先级的自由式协同控制机制,即根据所述协作建模任务到达时间确定对应的用户权限工作集,其并发冲突处理步骤如下:
1)定义用户并发冲突指令集,包括编辑操作类型、用户编号、零件属性等信息,将时间间隔小于0.1秒的一系列编辑操作请求看作并发冲突,形成指令队列。
2)定义已执行队列用来存放指令队列中已经处理的编辑操作请求。
3)首先处理首个到达服务器的编辑操作请求,即指令队列的第一条指令,处理之后将数据通过websocket放入已执行队列。
4)然后按顺序逐个处理后续指令,首先将其与已执行队列进行冲突判断,若存在冲突则将其丢弃,处理下一条;若不存在冲突,则服务器执行此操作并群发数据,放入已执行队列,直至指令队列处理完毕。
5)清空指令队列和已执行队列,则此并发冲突解决完毕,开始下一次的冲突处理。
第二种方式是基于互斥锁机制确定所述协作建模任务对应的用户权限工作集。其并发冲突处理步骤如下:
1)定义一个动态数组记录令牌分配情况,以协作建模任务的ID为动态数组索引,以待分配用户的ID为作为填充值填充数组。
2)当值为空时,用户通过协作建模任务申请令牌即将用户ID填入数组,令牌分配完成,此时模型编辑状态为锁定,并通过websocket将模型编辑状态以及分配结果发送给所有终端,发送申请成功通知给用户ID对应的终端;
当值不为空时,则发送拒绝申请的通知给个协作建模任务对应的终端。
3)终端根据模型编辑状态以及分配信息去判断操作交互界面是否被允许修改,若是已分配用户,允许操作界面被修改,若不是,禁止操作界面被修改。
4)在服务器端为获取操作令牌的用户分配计时器,计时器时间结束则清空数组值,回收已申请者的令牌权限,发送回收通知给已申请者,并设定模型编辑状态为非锁定并发送给所有终端。
5)此时动态数组值为空,令牌可以再次被申请,重新分配。
S103:接收终端的增量数据;
本步骤旨在接收终端的增量数据,所谓增量数据,即用户通过终端在用户权限工作集范围内对模型的编辑数据,容易理解的是接收终端的增量数据之前,服务器需要将所述用户权限工作集通过websocket发送至终端。用户根据该终端被允许的用户权限工作集确定可操作的权限,对模型进行编辑。当然,在此对于可以采用哪些编辑操作不做具体限定。
用户可在终端通过输入交互界面,对打开的模型进行可视化的编辑操作,用户进行编辑时,将操作请求通过websocket发送给web服务器,web服务器将接收到的请求数据通过WSGI转换成flask/tornado程序能够使用的python数据,根据用户的编辑操作请求,flask/tornado根据操作函数地址调用基于几何造型内核开发的建模系统中对应的功能函数并执行操作生成响应,响应经WSGI、web服务器传递,再由websocket发送给终端。终端执行响应中的HTML(HyperText Markup Language,超文本标记语言)、CSS、Javascript和webGL代码,最终把解析后的模型呈现给用户,可以是面片模型,亦可是线框模型等。
需要注意的是,用户编辑自己权限范围内的模型时,能够看到但不能编辑其他用户创建的模型。
S104:将所述增量数据发送至协同终端,并利用所述增量数据对所述协同终端的模型进行融合。
本步骤旨在将终端的增量数据发送至协同终端,当然协同终端的数量至少为一个。在进行终端与协同终端之间的数据同步时,可以直接利用正能量数据对协同终端上的模型进行融合。由于采用增量数据进行数据同步,减少协同过程中模型数据的传输量,实现协同设计中模型的快速传输,保证模型的实时同步。具体的融合过程可以参见图2,图2为本申请实施例所提供的一种模型融合示意图,图2中,服务器通过对协作组员1的编辑操作进行比较,得到拓扑元素变量集,此后群发至各协作组员,图2中以协作组员2位列,即将拓扑元素变量集与协作组员2的本地实体模型相融合,得到协同后的模型。
作为一种优选的实施例,可以在执行本步骤时将所述增量数据的离散数据发送至协同终端,则在此之前,需要先确定所述增量数据的拓扑元素集合,基于所述拓扑元素集合中的边数据和面数据进行离散,得到所述离散数据。离散数据为所述模型对应的点数据、线数据和面数据。
服务器执行一个编辑操作后,比较该操作前后的实体模型,根据模型的变化,首先找出被该操作变动过的所有拓扑元素的集合,然后将该集合中的边和面进行离散,得到显示模型中相应的点、线、面数据。终端即可以将接收的数据与本地的原有实体模型进行融合,实时更新模型。
本申请实施例借助于服务器,能够实现各终端建模的同步性,突破不同终端建模对于时间、空间及硬件性能的限制,满足多任务在不同终端并发执行的数据传输和管理需求,提高建模效率。
基于上述实施例,作为一种优选的实施例,当需要修改其他用户权限范围内的模型构件时,服务器还可以执行如下步骤:
S201:接收所述终端对于第二终端的额外操作权限请求;
S202:将所述额外操作权限请求转发至所述第二终端;
S203:在所述第二终端确认所述额外操作权限请求后,将额外操作权限更新至所述终端的用户权限工作集。
当用户需要修改其他用户的模型时,需要征得该用户的使用权限许可后方可修改,此时服务器作为中转,实现终端与第二终端的操作权限请求转发。需要注意的是,额外操作权限需要在增量数据上传服务器后即时归还。
下面对本申请实施例提供的一种基于web建模的数据同步系统进行介绍,下文描述的数据同步系统与上文描述的一种基于web建模的数据同步方法可相互对应参照。
图3为本申请实施例所提供的一种基于web建模的数据同步系统结构示意图,本申请还提供一种基于web建模的数据同步系统,包括:
请求接收模块100,用于接收终端的协作建模任务;
权限确定模块200,用于根据所述协作建模任务确定对应的用户权限工作集;
增量接收模块300,用于接收终端的增量数据;其中,所述增量数据为基于所述用户权限工作集范围内对模型的编辑数据;
模型同步模块400,用于将所述增量数据发送至协同终端,并利用所述增量数据对所述协同终端的模型进行融合。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种服务器,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述服务器还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。