一种三维CAD协同设计方法及系统
技术领域
本说明书涉及协同建模技术领域,尤其涉及一种三维CAD协同设计方法及系统。
背景技术
计算机辅助设计(CAD,Computer Aided Design)指利用计算机及其图形设备帮助设计人员进行设计的工具。在产品研发设计、生产制造过程中,设计工程师需要频繁的根据企业内部或外部的设计人员、审核人员、生产制造人员、客户等提出的需求对产品三维CAD模型的设计进行构建,并对设计细节重复进行修改。当处理大型三维CAD项目时,设计人员需要对庞大的设计模型进行构建与修改,此时协同设计可以极大提升大型及复杂三维CAD模型的构建效率。
然而当前主流的CAD软件都是基于C/S的架构,用户在使用时需在本地PC机安装客户端软件,随着软件功能的不断完善,安装和使用成本越来越高,伴随着对高配置硬件的依赖,逐渐成为一种潜在负担。与此同时,现有的三维CAD无法对协同场景提供支持,常常需要借助PLM/PDM 系统,无法提供符合工业设计流程的协同,也无法实现真正的协同设计。此外,现有协同设计的协同方式大部分是基于单一人员设计完成后再对设计完成的模型进行同步,因此存在协同编辑方式单一且效率低的问题。
发明内容
为解决上述技术问题,本说明书一个或多个实施例中提供了一种基于云架构的三维CAD协同设计方法及系统。
本说明书一个或多个实施例采用下述技术方案:
本说明书一个或多个实施例提供一种三维CAD协同设计方法,应用于三维CAD协同设计系统,所述三维CAD协同设计系统包括web客户端、与所述web客户端相交互的应用服务器集群,以及与所述应用服务器集群相交互的建模服务集群,其中,应用服务器集群包括多个应用服务器,所述建模服务集群包含多个建模服务器,所述方法包括:
应用服务器集群中的指定应用服务器,接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求;其中,所述负载均衡服务模块记录CAD项目模型指定的应用服务器,以保证后续CAD项目模型的建模操作指令转发到同一台应用服务器;
所述指定应用服务器在接收CAD项目模型请求时,将连接同一CAD项目模型的客户端作为同一个web客户端组;其中,所述web客户端组,用于分发协同相关的数据;
所述指定应用服务器记录并确定所述web客户端的协同状态,根据协同状态,分发协同跟随中需要的特殊数据;其中,所述协同状态包括:普通状态、跟随状态、被跟随状态;所述协同跟随中需要的特殊数据包括:镜头数据、指针数据、缩放数据;
所述建模服务集群内指定建模服务器的建模引擎实例,响应于所述指定应用服务器转发的建模操作指令,返回特征操作的增量数据到所述指定应用服务器,以使所述指定应用服务器基于所述web客户端的协同状态将所述增量数据发布到与所述web客户端相对应的web客户端组。
可选地,在本说明书一个或多个实施例中,应用服务器集群中的指定应用服务器,接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求之前,所述方法还包括:
所述应用服务器集群中的指定应用服务器,基于web接口接收所述负载均衡服务模块分发的web客户端的模型文档获取指令,以根据所述模型文档获取指令,确定待获取模型文档的模型标识与所述web客户端的访问权限;其中,所述模型文档获取指令中的信息包括:用户基本信息、模型获取信息;
所述指定应用服务器根据所述web客户端的访问权限,获取所述访问权限内的模型列表;
若所述指定应用服务器确定所述模型列表中存在所述模型标识,则基于所述指定应用服务器的文档数据访问接口访问所述模型文档,并将所述模型文档返回所述web客户端;其中,所述文档数据访问接口为REST API接口。
可选地,在本说明书一个或多个实施例中,所述应用服务器集群中的指定应用服务器,接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求之后,所述方法还包括:
所述web客户端基于WebSocket与所述指定应用服务器的建模流程服务模块建立连接,获得第一连接映射关系;
所述建模流程服务模块根据预置建模引擎记录,获取与所述web客户端的CAD项目模型相对应的建模引擎实例,以确定所述相对应的建模引擎实例所在的建模服务器组为指定建模服务器;其中,所述CAD项目模型的模型文档与所述建模引擎实例为一一对应关系;
所述建模流程服务模块向所述指定建模服务器发送调度请求信息,若所述建模流程服务模块接收到所述指定建模服务器返回的请求成功信息,则连接到指定建模服务器的建模引擎实例,建立所述指定应用服务器中建模流程服务模块与所述指定建模服务器中建模引擎实例之间的第二连接映射关系;
所述指定应用服务器基于所述第一连接映射关系与所述第二连接映射关系,确定所述web客户端与所述指定建模服务器中建模引擎实例之间的映射路线;
所述指定应用服务器基于所述映射路线将所述web客户端的建模操作指令发送到所述建模引擎实例进行执行,以便生成所述增量数据后基于所述映射路线返回所述指定应用服务器。
可选地,在本说明书一个或多个实施例中,所述指定应用服务器记录并确定所述web客户端的协同状态,具体包括:
当所述web客户端跟随其他web客户端时,所述web客户端向指定应用服务器发送相应的跟随指令;
所述指定应用服务器根据跟随指令,记录并确定各所述web客户端的跟随与被跟随状态。
可选地,在本说明书一个或多个实施例中,根据协同状态,分发协同跟随中需要的特殊数据之后,所述方法还包括:
若确定所述web客户端为普通状态,则所述指定应用服务器内置的协同设计服务模块向该普通状态的web客户端分发增量数据进行同步;
若确定所述web客户端为跟随状态,则应用服务器中的协同设计服务模块判断所述跟随状态的web客户端与被跟随状态的web客户端是否具有协同编辑状态;
若是,则所述指定应用服务器内置的协同设计服务模块基于所述被跟随状态的web客户端的特征操作,向所述跟随状态的web客户端分发所述特征操作的中间数据并进行显示。
可选地,在本说明书一个或多个实施例中,基于所述web客户端的协同状态,将所述增量数据发布到与所述web客户端相对应的web客户端组,所述方法还包括:
所述指定建模服务器基于建模引擎获取与所述建模操作指令相对应的变更操作数据,以获取各所述变更操作数据的变更类型与数据属性;其中,所述变更类型包括:新增、编辑、删除,所述数据属性包括:实体、元素、注释、视图、变量;
所述指定建模服务器基于所述变更类型与所述数据属性,对各所述变更操作数据进行分类获得分类结果,以基于所述分类结果筛选所述变更操作数据中的精简CAD结构数据;其中,所述精简CAD结构数据包括:拓扑结构数据、几何数据;
所述指定建模服务器将所述精简CAD数据作为所述建模操作指令的增量数据,以便基于建模流程服务模块返回所述web客户端组。
可选地,在本说明书一个或多个实施例中,基于建模流程服务模块返回所述web客户端组,具体包括:
所述指定应用服务器内置的协同设计服务模块获取与所述模型标识相对应的广播地址;其中,所述广播地址为与所述web客户端协同操作的协同web客户端订阅的地址;
所述指定应用服务器内置的协同设计服务模块,若确定所述建模流程模块接收到所述增量数据,则基于所述广播地址对所述增量数据进行广播,以将所述增量数据同步更新到所述web客户端,以及与所述web客户端相对应的web客户端组。
可选地,在本说明书一个或多个实施例中,基于所述web客户端的协同状态,将所述增量数据发布到与所述web客户端相对应的web客户端组之后,所述方法还包括:
所述web客户端解析所述增量数据获得拓扑结构数据与几何数据;
所述web客户端根据所述拓扑结构数据确定所述几何数据的解析顺序,以基于所述解析顺序构建所述几何数据的依赖关系;
所述web客户端根据所述依赖关系解析所述几何数据,以生成所述web客户端建模场景内对应的几何物体;
所述web客户端根据所述几何数据所对应的数据属性与变更类型,确定所述几何物体所对应的展示场景,以对所述几何物体进行展示。
可选地,在本说明书一个或多个实施例中,应用服务器集群中的指定应用服务器,接收负载均衡服务模块分发的所述web客户端的CAD项目模型请求之前,所述方法还包括:
所述负载均衡服务模块获取所述应用服务器集群中各所述应用服务器的基本信息,其中,所述基本信息包括:性能参数与负载参数;
所述负载均衡服务模块基于所述性能参数与所述负载参数对各所述应用服务器的负载能力进行评估,确定下一CAD项目模型所对应的指定应用服务器。
可选地,在本说明书一个或多个实施例中,基于所述性能参数与所述负载参数对所述应用服务器的负载能力进行评估,确定下一CAD项目模型所对应的指定应用服务器,具体包括:
所述负载均衡服务模块基于预设时间间隔对所述负载参数数据进行采样以获得负载参数序列;
所述负载均衡服务模块获取所述负载参数序列中各所述负载参数数据的向量值,以基于各所述向量值的余弦相似度对所述负载参数数据进行聚类,获得多个聚类集合;
所述负载均衡服务模块获取预设直觉模糊范数距离,以基于所述预设直觉模糊范数距离与各所述聚类集合的聚类中心,获得当前直觉模糊隶属度与当前直觉模糊非隶属度,以将所述当前直觉模糊隶属度与当前直觉模糊非隶属度代入直觉模糊时间序列算法,获得所述应用服务器的负载预测值;
所述负载均衡服务模块确定所述性能参数的数值,并获取所述应用服务器的历史性能参数的数值;其中,所述性能参数包括:CPU使用率、内存使用率、磁盘IO利用率、网络吞吐量;
所述负载均衡服务模块对比所述性能参数的数值与所述历史性能参数的数值,以确定各所述性能参数的数据变化信息;其中,所述数据变化信息包括:数据变化量、数据变化方向;
所述负载均衡服务模块将所述负载预测值和所述性能参数的数据变化信息,输入最小二乘支持向量机算法模型,输出所述应用服务器集群中各所述应用服务器的权重值,以基于所述权重值确定待分发的指定应用服务器。
本说明书一个或多个实施例提供一种三维CAD协同设计系统,系统包括:web客户端、应用服务器集群以及建模服务集群,其中应用服务器集群包括多个应用服务器,所述建模服务集群包含多个建模服务器;
所述web客户端用于展现UI操作界面,执行建模过程中的模型展示与交互,并将建模操作指令发送到应用服务器集群;
应用服务器集群中的指定应用服务器,用于接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求;其中,所述负载均衡服务模块记录CAD项目模型指定的应用服务器,以保证后续CAD项目模型的建模操作指令转发到同一台应用服务器;
所述指定应用服务器,用于在接收CAD项目模型请求时,将连接同一CAD项目模型的客户端作为同一个web客户端组;其中,所述web客户端组,用于分发协同相关的数据;
所述指定应用服务器,用于记录并确定所述web客户端的协同状态,根据协同状态,分发协同跟随中需要的特殊数据;其中,所述协同状态包括:普通状态、跟随状态、被跟随状态;所述协同跟随中需要的特殊数据包括:镜头数据、指针数据、缩放数据;
所述建模服务集群内指定建模服务器的建模引擎实例,用于响应于所述指定应用服务器转发的建模操作指令,返回特征操作的增量数据到所述指定应用服务器,以使所述指定应用服务器基于所述web客户端的协同状态将所述增量数据发布到与所述web客户端相对应的web客户端组。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
应用服务器集群中的指定应用服务器,接收负载均衡服务模块所分发的建模操作指令,以便于应用服务器集群能够有效承担协同设计的访问压力,提高建模操作指令的处理效率。通过获取web客户端的协同状态以执行不同协同状态所对应的建模操作流程,提高了协同建模的多样性。通过将建模操作指令所对应的特征操作,连接到内置协同设计服务模块中,使得web客户端的特征操作过程与结构均可基于内置协同设计服务模块同步到协同web客户端,提高了协同建模过程中数据获取的实时性,使得协同编辑的效率得到了提升。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书实施例提供的一种三维CAD协同设计方法的流程示意图;
图2为本说明书实施例提供的一种CAD项目模型分发部署给该指定应用服务器的流程示意图;
图3为本说明书实施例提供的一种负载均衡服务模块的调度流程示意图;
图4为本说明书实施例提供的一种不同协同状态下的web客户端协同建模过程;
图5为本说明书实施例提供的一种三维CAD协同设计系统的结构示意图。
具体实施方式
本说明书实施例提供一种三维CAD协同设计方法及系统。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
如图1所示,本说明书一个或多个实施例中,提供了一种三维CAD协同设计方法流程示意图。本说明书实施例中,一种三维CAD协同设计方法,应用于如图3所示的三维CAD协同设计系统,由图3可知该三维CAD协同设计系统包括web客户端、与web客户端相交互的应用服务器集群,以及与应用服务器集群相交互的建模服务集群,其中,应用服务器集群包括多个应用服务器,建模服务集群包含多个建模服务器。在如图3所示的三维CAD协同设计系统中,方法包括如图1所示的以下方法:
S101:应用服务器集群中的指定应用服务器,接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求;其中,所述负载均衡服务模块记录CAD项目模型指定的应用服务器,以保证后续CAD项目模型的建模操作指令转发到同一台应用服务器。
由于当前CAD项目的日趋常态化与复杂化,大流量高并发的建模处理操作将会产生大量的操作数据集,因此本说明书实施例中为了保证三维协同设计系统的协同建模的协同能力。本说明书实施例中三维CAD协同设计系统中的应用服务器集群将不同的CAD项目模型连接部署到多台不同的应用服务器机上,组成处理集群,而基于负载均衡服务模块的分发解决了大量用户访问过程时,多并发的压力提高了网络吞吐量的问题,同时有利于横向扩展服务器提高应用服务器集群的处理能力,此外当集群中某应用服务器发生故障后,还可以基于负载均衡服务模块进行故障转移,检测下游应用服务器的状态实现系统高可用的效果。在协同设计过程中本说明书实施例中应用服务器集群中的指定应用服务器,接收负载均衡服务模块所分发的web客户端的CAD项目模型请求,进而接收和CAD项目模型请求相对应建模操作指令,以便于应用服务器集群能够有效承担多用户的访问压力,提高建模操作指令的处理效率。其中,需要说明的是,负载均衡服务模块可以为Nginx、HAproxy、LVS等。
进一步地,受三维CAD项目保密性的影响,其模型文档也具有相应的保密性,例如:私有属性即是除了文档所有者和被分享者,其余用户没有访问权限,也就是说写作者可以浏览文档但是不可以操作文档的权限要求;而公有属性是除了所有者和被分享者,其余用户可以访问,但是只有只读权限,用户可以通过对于文档共享权限的设置实现对于用户可操作组件的限制的权限要求。所以为了保证项目所有者的管理权以及模型文档的保密性。使得有权限的web客户端能够获得相应模型文档,从而进行后续的相关建模操作。在本说明书一个或多个实施例中,应用服务器集群中的指定应用服务器,接收负载均衡服务模块分发的web客户端的CAD项目模型请求之前,方法还包括以下过程:
本说明书实施例中的应用服务器集群中的指定应用服务器,通过web接口接收负载均衡服务模块分发的web客户端的模型文档获取指令,从而根据模型文档获取指令中的用户信息查询获取到预先存储的web客户端的访问权限,并基于模型文档获取指令中的模型获取信息确定出待获取模型文档的模型标识。然后指定应用服务器根据web客户端的访问权限,获取数据库中与访问权限相对应的模型列表。如果模型列表中存在有该模型文档获取指令中的模型标识,那么该指定应用服务器通过文档数据访问接口访问获取存储在三维CAD协同设计系统内的该模型文档,并将该模型文档返回给web客户端。其中,需要说明的是,文档数据访问接口为REST API接口,还需要说明的是基于REST API接口,可以访问存储在系统中的各类设计数据,包括项目文档数据,模型数据,建模历史,特征列表,BOM数据等数据。
进一步地,如图2所示为了提高协同设计的建模处理效率,保证应用服务器集群的服务能力,需要确定出能够执行建模操作指令的指定应用服务器执行后续的建模流程。在本说明书一个或多个实施例中,应用服务器集群中的指定应用服务器,接收负载均衡服务模块分发的web客户端的CAD项目模型请求之前,方法还包括以下过程:
S201:负载均衡服务模块获取应用服务器集群中各应用服务器的基本信息,其中,可以理解需要说明的是,基本信息包括:例如:CPU使用率、内存使用率、磁盘IO利用率、网络吞吐量等性能参数,以及例如:应用服务器连接的web客户端的数量、应用服务器处理进程数量等负载参数。
S202:负载均衡服务模块根据确定的性能参数与负载参数对各应用服务器的负载能力进行评估,从而确定出下一个打开的CAD项目模型文档所对应的指定应用服务器,从而将CAD项目模型分发部署给该指定应用服务器。进一步地,如图3所示在本说明书一个或多个实施例中,基于性能参数与负载参数对应用服务器的负载能力进行评估,确定下一CAD项目模型所对应的指定应用服务器,具体包括以下过程:
S2021:为了降低计算分析的压力,负载均衡服务模块根据预先设置的时间间隔对负载参数数据进行采样,从而获得负载参数序列。
S2022:负载均衡服务模块获取负载参数序列中各负载参数数据的向量值,从而根据各向量值的余弦相似度对负载参数数据进行聚类,获得多个聚类集合。
S2023:负载均衡服务模块获取预设直觉模糊范数距离,以基于预设直觉模糊范数距离与各聚类集合的聚类中心,获得当前直觉模糊隶属度与当前直觉模糊非隶属度。在获得当前直觉模糊隶属度与当前直觉模糊非隶属度之后,将当前直觉模糊隶属度与当前直觉模糊费隶属度代入到直觉模糊时间序列算法中,获得应用服务器的负载预测值。通过对各个聚类中心进行直觉模糊化,更加细腻地反映负载参数数据的不确定性本质,从而提高预测的准确性。
S2024:负载均衡服务模块确定出性能参数中各个参数的数值,并获取应用服务器的历史性能参数的数值;其中,由上述可知性能参数包括:CPU使用率、内存使用率、磁盘IO利用率、网络吞吐量等。
S2025:负载均衡服务模块对比性能参数的数值与历史性能参数的数值,从而确定出各个性能参数的数据变化信息。其中,需要说明的是数据变化信息包括:数据变化量、数据变化方向。
S2026:负载均衡服务模块将负载预测值和性能参数的数据变化信息,输入最小二乘支持向量机算法模型中,从而输出应用服务器集群中各应用服务器的权重值,进而根据获得权重值确定各应用服务器中权重值最高的为待分发的指定应用服务器。
为了使得同一个项目尽量分配到同一台建模实例服务器,需要进行调度选择,因此本说明书实施例中指定应用服务器向建模服务集群发送调度请求,从而根据建模服务集群的建模内核调度,将指定应用服务器内的建模流程服务模块连接到指定建模服务器的建模引擎实例中。其中,需要说明的是建模内核调度为用于建模流程的内核调度,其决定了什么时候停止一个建模进程以便让其他建模进程有机会运行,同时挑选出一个其他的建模进程开始运行。具体地,在本说明书一个或多个实施例中,应用服务器集群中的指定应用服务器,接收负载均衡服务模块分发的所述web客户端的CAD项目模型请求之后,方法还包括以下步骤:
首先,建模流程服务模块根据预置建模引擎记录,获取和CAD项目模型相对应的建模引擎实例。其中,需要说明的是,CAD项目模型的模型文档和建模引擎实例为一一对应关系。然后指定应用服务器内的建模流程模块确定所述相对应的建模引擎实例,所在的建模服务器组为指定建模服务器,以便于指定应用服务器向该指定建模服务器发送调度请求信息。如果指定应用服务器内的建模流程模块接收到指定建模服务器返回的请求成功信息,那么就将该建模流程模块连接到该指定建模服务器的建模引擎实例,以便基于建模引擎实例进行后续建模。
进一步地,为了能够使得后续的建模结果,可以返回对应的web客户端,在本说明书一个或多个实施例中,应用服务器集群中的指定应用服务器,接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求之后,方法还包括以下过程:
首先web客户端基于WebSocket与指定应用服务器的建模流程服务模块建立连接,获得第一连接映射关系,然后建模流程服务模块根据预置建模引擎记录,获取与CAD项目模型相对应的建模引擎实例,确定该相对应的建模引擎实例当前所在的建模服务器,为指定建模服务器。其中,需要说明的是CAD项目模型的模型文档与建模引擎实例为一一对应关系。然后建模服务模块向该指定建模服务器发送建模请求信息。如果建模流程服务模块接收到指定建模服务器返回的请求成功信息,那么就连接到指定建模服务器的建模引擎实例,建立指定应用服务器中建模流程服务模块与指定建模服务器中建模引擎实例之间的第二连接映射关系。指定应用服务器根据上述过程中确定的第一连接映射关系与第二连接映射关系,确定出web客户端和建模引擎实例之间的映射路线。定应用服务器根据确定出的映射路线将web客户端的建模操作指令发送到建模引擎实例中进行执行,从而方便生成增量数据后能够基于映射路线返回指定应用服务器。
基于上述可知,在本说明书某应用场景中,web客户端将建模操作指令发送到指定应用服务器后,指定应用服务器内的建模流程服务模块发起调度请求,从而连接建模引擎服务,协调并转发建模指令和结果。建模流程服务模块连接建模引擎服务后,向实例管理器发起建模引擎实例申请的请求,申请成功后返回建模实例地址端口,建立基于TCP的建模会话连接。建模会话建立时,web客户端通过WebSocket与建模流程服务模块建立连接,建模流程服务模块与对应的建模引擎实例建立连接,并且记录建模会话和建模引擎实例的映射关系,通过建立映射关系,方便了当web客户端发出建模操作指令后,根据记录的映射关系,找到对应的建模引擎实例执行。
S102:所述指定应用服务器在接收CAD项目模型请求时,将连接同一CAD项目模型的客户端作为同一个web客户端组;其中,所述web客户端组,用于分发协同相关的数据。
如图4所示,参与协同编辑的web客户端的用户角色被称为“协作者”也就是协同web客户端,协同web客户端的用户可以实时跟随同一个项目中的其他web客户端用户的操作,以实现多用户协同设计的目的,而同属于一个CAD项目模型的客户端属于同一个web客户端组。所以为了实现三维CAD项目的协同设计,本说明书实施例中,指定应用服务器在接收CAD项目模型请求时,将连接同一CAD项目模型的客户端作为同一个web客户端组。其中,还需要说明的是,web客户端组用于分发协同相关的数据。
S103:所述指定应用服务器记录并确定所述web客户端的协同状态,根据协同状态,分发协同跟随中需要的特殊数据;其中,所述协同状态包括:普通状态、跟随状态、被跟随状态;所述协同跟随中需要的特殊数据包括:镜头数据、指针数据、缩放数据。
基于上述步骤S102中确定出同属于一个CAD项目模型的web客户端组之后,为了能够使得web客户端组中各个web客户端可以获得协同设计过程中的相关数据,方便进行协同建模。本说明书实施例中首先获得了web客户端的协同状态,从而方便了基于web客户端的不同协同状态,分发协同跟随中需要的特殊数据,进行不同的协同建模操作。其中,需要说明的是协同跟随中需要的特殊数据包括:镜头数据、指针数据、缩放数据等。此外,还需要说明的是,协同状态包括:普通状态、跟随状态和被跟随状态,当web客户端为普通状态时,web客户端的建模操作指令没有跟随其他协作者或被其他协作者跟随,只会获得其他协作者对文档的最终编辑状态,不会获得编辑过程中的数据。当web客户端为跟随状态时,web客户端会实时跟随另一个web客户端对文档的任何操作或编辑行为。而当web客户端为被跟随状态时,web客户端会被其他客户端所跟随,而被跟随状态的web客户端的操作也会实时同步到跟随状态的web客户端。
具体地,在本说明书一个或多个实施例中,指定应用服务器记录并确定所述web客户端的协同状态,具体包括以下过程:当web客户端跟随其他web客户端时,该web客户端向指定应用服务器发送相应的跟随指令;然后指定应用服务器根据跟随指令,记录并确定各web客户端的跟随与被跟随状态。
进一步地,除上述跟随的协同状态外,web客户端还具有协同编辑的状态,因此在本说明书一个或多个实施例中,根据协同状态,分发协同跟随中需要的特殊数据之后,方法还包括:
如果确定web客户端为普通状态,那么指定应用服务器内置的协同设计服务模块向该普通状态的web客户端分发增量数据进行同步。而如果确定web客户端为跟随状态,那么应用服务器中的协同设计服务模块判断跟随状态的web客户端与被跟随状态的web客户端是否具有协同编辑状态。如果跟随状态的web客户端与被跟随状态的web客户端具有协同编辑状态,那么指定应用服务器内置的协同设计服务模块基于被跟随状态的web客户端的特征操作,向跟随状态的web客户端分发特征操作的中间数据并进行显示。
其中,需要说明的是如图5所示,本说明书实施例中的协同设计服务模块位于应用服务器中用于对各web客户端的协同设计进行管理。基于上述可知,本说明书实施例中能够将web客户端的协作设计分为两种类型,即跟随与协同编辑。对于跟随类协作,web客户端用户具有普通、跟随、被跟随三种状态。而对于协同编辑类协作,web客户端用户同时具备两种状态:一是操作状态下,web客户端执行操作,同时获得操作时的中间数据例如:预览、编辑等,并将操作结果同步给协同web客户端;同步状态下,web客户端接受协同web客户端的操作结果,并更新到当前模型文档。
进一步地,基于上述步骤如果确定web客户端为被跟随状态,那么为了使得跟踪状态的web客户端,可以及时获取被跟随状态下web客户端的操作过程与操作结果,使得相应操作可以在跟踪状态的web客户端进行显示。本说明书实施例中的通过WebSocket将建模操作指令所对应的特征操作连接到指定应用服务器的内置协同设计服务模块中,以便基于该协同设计服务模块将对应的特征操作返回对应的跟随web客户端。例如当处于被跟随者状态的用户[2]在文档中进行操作时会将操作的鼠标移动、相机缩放、执行命令等事件和参数通过连接[3]发布至应用服务器,以便于建模完成后应用服务器内的协同设计模块将这些特征操作组播给跟随状态的web客户端。
S104:所述建模服务集群内指定建模服务器的建模引擎实例,响应于所述指定应用服务器转发的建模操作指令,返回特征操作的增量数据到所述指定应用服务器,以使所述指定应用服务器基于所述web客户端的协同状态将所述增量数据发布到与所述web客户端相对应的web客户端组。
基于上述步骤通过建模内核调度,将指定应用服务器内的建模流程服务模块连接到指定建模服务器的建模引擎实例之后,本说明书实施例中指定应用服务器接收建模引擎实例所返回的增量数据,其中,需要说明的是建模更新结果是建模引擎实例通过执行建模操作指令所生成的。
为了使得增量数据基于应用服务器返回web客户端组时,能够以精简的数据进行传输,提高数据传输的效率,本说明书一个或多个实施例中,基于所述web客户端的协同状态,将所述增量数据发布到与所述web客户端相对应的web客户端组之前,会对数据进行精简,具体方法包括以下过程:
指定建模服务器根据建模引擎获取和建模操作指令相对应的变更操作数据,从而获取各个变更操作数据的变更类型与数据属性。其中,需要说明的是变更类型包括:新增、编辑、删除,数据属性包括:实体、元素、注释、视图、变量。然后指定建模服务器根据变更类型和数据属性,对各变更操作数据进行分类从而获得分类结果,并根据分类结果筛选出变更操作数据中的精简CAD结构数据。其中,需要说明的是精简CAD结构数据包括:拓扑结构数据、几何数据。然后指定建模服务器将精简CAD数据作为建模操作指令的增量数据,以便基于建模流程服务模块将所述增量数据返回web客户端组。通过对于变更操作数据进行精简的过程,避免了数据大量传输所导致的传输成本高且传输速度慢的问题,提高了增量数据的传输效率。
基于上述步骤获取到增量数据后,指定应用服务器会将增量数据同步实时更新到web客户端组,以便于实现同一CAD项目模型所对应的web客户端能够实现协同设计。具体地,在本说明书一个或多个实施例中,基于建模流程服务模块返回所述web客户端组,具体包括以下过程:
首先指定应用服务器内置的协同设计服务模块获取与模型标识相对应的广播地址;其中,需要说明的是广播地址是和web客户端协同操作的协同web客户端所订阅的地址。指定应用服务器内置的协同设计服务模块,如果确定建模流程模块接收到增量数据,则基于广播地址对增量数据进行广播,从而将增量数据同步更新到与web客户端相对应的协同web客户端。其中,需要说明的是该更新过程是基于双工通信实现的,也就是说web客户端将建模操作指令发送到指定应用服务器,从而基于指定应用服务器将建模操作指令转发给建模引擎执行,执行结果返回指定应用服务器,在基于指定应用服务器将执行结果推送到其他协同编辑模型文档的协同web客户端,基于全双工的通信协议实现了指定应用服务器向web客户端的推流广播。也就是说建模引擎返回的增量数据,要广播到所有连接到该模型文档的用户终端上,从而实现协同设计,与模型数据的实时变更。
进一步地,在本说明书一个或多个实施例中,将所述增量数据发布到web客户端组之后,方法还包括以下过程:首先web客户端解析增量数据获得拓扑结构数据与几何数据。然后web客户端根据拓扑结构数据确定出几何数据的解析顺序,从而根据解析顺序构建出几何数据的依赖关系。然后web客户端根据依赖关系解析几何数据,以生成web客户端建模场景内对应的几何物体。web客户端根据几何数据所对应的数据属性与变更类型,确定几何物体所对应的展示场景,以对几何物体进行展示。
如图5所示为本说明书一个或多个实施例中提供的一种三维CAD协同设计系统的结构示意图。由图5可知,本说明书一个或多个实施例中是基于分布式服务的设计理念来搭建的,遵循构件化、模块化的设计原则,将系统组件进行合理化拆分,组件间采用松耦合形式,增加整个系统的软硬件的扩展能力,具体地系统包括:web客户端、应用服务器集群以及建模服务集群,其中应用服务器集群包括多个应用服务器,建模服务集群包含多个建模服务器。而应用服务器包含:建模流程服务模块、项目管理服务模块、协同设计服务模块,建模服务器包含:建模内核模块、实例管理器模块;
其中,web客户端用于展现UI操作界面,负责执行建模过程中的模型展示与交互,并将建模操作指令发送到应用服务器集群。
应用服务器集群中的指定应用服务器,用于接收负载均衡服务模块转发的所述web客户端的CAD项目模型请求;其中,所述负载均衡服务模块记录CAD项目模型指定的应用服务器,以保证后续CAD项目模型的建模操作指令转发到同一台应用服务器;所述指定应用服务器在接收CAD项目模型请求时,会将连接同一CAD项目模型的客户端作为同一个web客户端组;然后记录并确定web客户端的协同状态,根据协同状态,分发协同跟随中需要的特殊数据;其中,所述协同状态包括:普通状态、跟随状态、被跟随状态;所述协同跟随中需要的特殊数据包括:镜头数据、指针数据、缩放数据。
此外,还需要说明的是,指定应用服务器的上述操作过程基于其内置的不同模块实现,例如:
建模流程服务模块用于控制web客户端的建模流程;
项目管理服务模块用于提供提供项目管理服务:包括对用户图文档信息的查询、管理、权限控制等功能;
协同设计服务模块用于根据提供项目管理服务:包括对用户图文档信息的查询、管理、权限控制等功能,从而实现协同web客户端的建模设计。而除上述模块外,指定应用服务器还提供了Web接口和文档数据访问的REST API接口,REST API接口用于访问存储在系统中的各类设计数据,包括项目文档数据,模型数据,建模历史,特征列表,BOM数据等。
建模服务集群内指定建模服务器的建模引擎实例,用于响应于指定应用服务器转发的建模操作指令,返回特征操作的增量数据到所述指定应用服务器,以使指定应用服务器基于web客户端的协同状态将增量数据发布到与web客户端相对应的web客户端组中。其中,还需要说明的是,建模服务器内的实例管理器模块,负责管理服务组内的建模引擎实例,负责建模引擎的创建与销毁,为建模引擎分配网络端口,同时为其提供模型文件。此外,该系统中的建模服务器还具有建模引擎模块,该建模引擎模块包括:几何建模引擎、约束求解器、数据交换等组件,用于负责建模命令的解析与执行,建模数据的输出。此类服务以动态创建实例的方式运行,与用户“建模会话”生命周期相关,通过实例管理服务调用启动,与建模流程服务模块通信。为了保证其稳定性,采用每个模型对应独立的建模引擎实例,隔离不同的建模进程。
进一步地,在本说明书一个或多个实施例中,一种三维CAD协同设计系统还包括:服务注册中心与数据库;其中,服务注册中心用于建模流程服务,实例管理服务在启动时注册到服务注册发现中心,后续调度控制器会根据服务状态进行调度选择。调度的主要原则是同一个项目尽量分配到同一台建模实例服务器。数据库包括存储图文档数据的非关系型数据库,存储用户信息的关系型数据库,提供会话管理的缓存数据库等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。