首页> 中国专利> 用于解耦对基础设施模型的访问的技术

用于解耦对基础设施模型的访问的技术

摘要

在示例实施例中,提供了用于将对基础设施模型的用户访问与维护和更新基础设施模型的专有软件解耦的技术。后端应用可以包括基础设施建模后端模块以及基础设施建模本机模块,所述基础设施建模后端模块除了其他功能之外尤其处理与提供对基础设施模型的用户访问的前端应用的基础设施建模前端模块、维护基础设施模型的储存库的基础设施建模中枢服务的通信,所述基础设施建模本机模块在存储基础设施模型的数据库的本地实例上创建、执行操作并且更新所述本地实例。虽然基础设施建模后端模块可以将从基础设施建模前端模块和基础设施建模中枢服务获得的信息传递给基础设施建模本机模块,但是它可以在功能上与理解如何维护和更新基础设施模型(包括与数据库的本地实例交互)的基础设施建模本机模块的软件分离。

著录项

  • 公开/公告号CN113196231A

    专利类型发明专利

  • 公开/公告日2021-07-30

    原文格式PDF

  • 申请/专利权人 本特利系统有限公司;

    申请/专利号CN201980067119.1

  • 申请日2019-10-01

  • 分类号G06F8/658(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人陈晓;周学斌

  • 地址 美国宾夕法尼亚州

  • 入库时间 2023-06-19 12:02:28

说明书

背景技术

本公开一般涉及基础设施建模,并且更具体地涉及用于准许对基础设施模型的分布式用户访问的软件架构。

贯穿基础设施(例如,建筑物、工厂、道路、铁路、桥、电力和通信网络等)的设计、构造和运营,通常合期望的是使用基础设施建模应用来对基础设施建模。基础设施建模应用传统上使用多种不同的技术和数据格式来维护项目不同阶段的基础设施描述。在过去,根据这样的格式维护的基础设施信息是不连贯的,并且包括大量的数据冗余、不一致和其他低效率的源。模型可能已经针对特定的用例进行了优化和适配,通常不考虑基础设施项目的其他阶段,从而导致有区别的产品/规定/阶段数据简仓(silo)和断开的工作流。

最近,已经开发了系统,所述系统可以打破这样的现有的产品/规定/阶段数据简仓,并使能生成现实世界基础设施的真正“数字双胞胎”,其以更统一的方式描述基础设施的各方面。这类“数字双胞胎”的生成解决了传统基础设施建模技术的许多局限性。然而,这也导致了新的技术挑战。这些挑战包括如下问题:如何使能从多个不同源对基础设施模型的分布式用户访问,同时提供高性能(例如,就网络带宽、处理负载等而言)和确保安全性。因此,需要改进的技术来准许对基础设施模型的分布式用户访问同时解决这些问题。

发明内容

在示例实施例中,提供了用于将对基础设施模型的用户访问与维护和更新基础设施模型的专有软件解耦的技术。后端应用可以包括基础设施建模后端模块以及基础设施建模本机模块,所述基础设施建模后端模块除了其他功能之外尤其处理与提供对基础设施模型的用户访问的前端应用的基础设施建模前端模块、维护基础设施模型的储存库的基础设施建模中枢服务的通信,所述基础设施建模本机模块在存储基础设施模型的数据库的本地实例上创建、执行操作(例如,插入、删除和查询模型、元素、属性等)并且更新(例如,将变更集应用于)所述本地实例。虽然基础设施建模后端模块可以将从基础设施建模前端模块和基础设施建模中枢服务获得的信息传递给基础设施建模本机模块,但是它可以在功能上与理解如何维护和更新基础设施模型(包括与数据库的本地实例交互)的基础设施建模本机模块的软件分离。这样的布置可以允许开发多种定制的后端应用,其部署可以减少网络带宽消耗,提供负载(例如,处理负载)平衡和其他益处,同时通过将维护和更新基础设施模型的软件与后端应用的软件的其余部分在功能上分离来增加安全性。

应当理解,除了本发明内容中讨论的那些之外,可以实现多种附加特征和替代实施例。本发明内容旨在简单地作为对读者的简要介绍,并且不指示或暗示本文提及的示例涵盖本公开的所有方面,或者是本公开的必需或必要方面。

附图说明

以下描述参考了示例实施例的附图,其中:

图1是示例基础设施建模软件架构的高级框图,该示例基础设施建模软件架构将对基础设施模型的用户访问与维护和更新基础设施模型的专有软件解耦;

图2是用于打开基础设施模型的示例步骤序列的流程图;

图3是用于关闭基础设施模型的示例步骤序列的流程图;

图4是用于将元素插入基础设施模型的示例步骤序列的流程图;

图5是用于从基础设施模型检索元素属性的示例步骤序列的流程图;和

图6是用于查询基础设施模型的示例步骤序列的流程图。

具体实施方式

如本文所使用的,术语“基础设施”是指在现实世界中已经构建或计划构建的物理结构或对象。基础设施的示例包括建筑物、工厂、道路、铁路、桥、电力和通信网络等。

如本文所使用的,术语“构建的基础设施模式(schema)”或“BIS”是指一种类型的概念模式(即,概念数据模型),其描述了表示基础设施的数据的语义。

如本文所使用的,术语“基础设施模型”是指基础设施的数字表示。基础设施模型可以根据构建的基础设施模式来组织。一种特定类型的基础设施模型可以是iModel®基础设施模型。

如本文所使用的,术语“基础设施建模储存库”,或简称为“储存库”,是指存储一个或多个基础设施模型的分布式数据库。这样的分布式数据库的每个物化视图可以被称为“公文包(briefcase)”,如下面讨论的。

如本文所使用的,术语“变更集”是指捕获将数据库的特定实例从一个版本变换到新版本所需的变更的持久电子记录。如下面解释的,在示例实现中,有序系列的变更集可以表示时间线。时间线的变更集可以捕获将数据库实例从一个版本(版本M)移动到另一个版本(版本Q)所需的变更。变更集可以按顺序的次序被应用,以便将版本M移动到版本Q。变更集也可以按相反顺序的次序被应用,以便将版本Q移动回到版本M。

如本文所使用的,术语“公文包”是指数据库的特定实例。在示例实现中,公文包可以表示存储库的特定版本的信息的物化视图。公文包的一个版本(版本M)可以被认为是将所有变更集(直到并且包括变更集M)顺序应用到“基线”公文包(例如,空的“基线”公文包)所产生的信息。通过向它应用从N到Q(包括N和Q)的变更集的集合,版本M的公文包可以被移动到另一个版本(版本Q)。

如本文所使用的,术语“元素”是指维持在公文包中的记录。一个元素表示(即,“模型”,在该术语的口语意义上)现实世界中的实体。在示例实现中,现实世界中的实体可以是基础设施的单个单元。

如本文所使用的,术语“模型”是指一组元素的容器,其中该组元素共同表示(即,“模型”,在该术语的口语意义上)现实世界中的实体。在示例实现中,现实世界中的实体可以是基础设施的单个单元。在一些情况下,模型可以嵌套。也就是说,模型被称为将特定元素“分解”成更细化粒度的描述(即,描述现实世界中相同实体但在细化粒度下的描述)。

如本文所使用的,术语“关系”是指涉及两个或更多个元素或模型的连接。关系的示例包括可能暗示所有权的父子关系和可能定义组的对等关系。

图1是将对基础设施模型(例如,iModel®基础设施模型)的用户访问与维护和更新基础设施模型的专有软件140解耦的示例基础设施建模软件架构100的高级框图。该架构可以划分为在终端用户本地提供的一个或多个计算设备(统称为“客户端设备”)上执行的客户端侧软件110和在与终端用户远程提供的一个或多个计算设备(统称为“云计算设备”)上执行的基于云的软件112,该基于云的软件112经由网络(例如,因特网)可访问。客户端侧软件110可以包括在由网络浏览器124(例如,Chrome® 网络浏览器)提供的虚拟环境(例如,“浏览器沙箱”)内操作的网络前端应用120和直接在操作系统下操作的桌面前端应用122以及与之交互的后端应用132。基于云的软件112可以包括基础设施建模中枢服务(例如,iModelHub™服务)142和与网络前端应用120交互的后端应用130。至少操作用于维护和更新基础设施模型的基础设施建模中枢服务142以及后端应用132的部分可以被认为是专有软件140。

基于云的软件112的核心可以是基础设施建模中枢服务142,其管理包括存储基础设施模型的公文包的储存库144-146。储存库144-146中的公文包152可以作为空的“基线”公文包开始,该空的“基线”公文包由基础设施建模中枢服务142以编程方式生成并持续存在。储存库144-146可以通过接受新的变更集到接受的变更集147的集合中来被修改。随着接受的变更集147的集合中的变更集数量增长,对取得空的“基线”公文包并应用将其变换成在特定版本(例如,“最近版本”)下的公文包所需要的所有变更集所要求的时间可能增长变大。出于该理由,基础设施建模中枢服务142可以创建在不同版本下的附加的“快照”公文包152。当需要公文包的特定版本(例如,“最近版本”)时,访问最接近这样的版本的公文包152(其可以是“快照”公文包),并应用来自集合147的变更集(或反向变更集),直到获得所需版本的公文包为止。

可以利用概念模式(例如,BIS)来定义并且使用底层数据库模式(例如,SQlite模式)来存储储存库144-146的公文包152中维护的基础设施模型。概念模式可以使用包括元素、模型和关系的数字对象来描述基础设施,所述数字对象用作基础设施模型的构建块。元素表示(即,“模型”,在该术语的口语意义上)现实世界中的实体。基于被建模实体的性质,一个元素可以是“领导”元素。其他元素通常与领导元素反向相关。模型充当元素集合的容器,其中该元素集合共同表示(即,“模型”,在该术语的口语意义上)现实世界中的实体。在一些情况下,模型可以嵌套。也就是说,模型被称为将特定元素“分解”成更细化粒度的描述。模型可以根据模型层次结构进行布置,以支持从多个角度进行建模。单个存储库模型可以用作模型层次结构的根。关系涉及两个或更多个元素或模型。关系的示例包括可以暗示所有权的父子关系和可以定义组的对等关系。

底层数据库模式可以描述对象如何被存储到底层数据库的表的各个行中。可以使用存储对象属性的多个不同表的多个行来维护所述对象。例如,元素的属性可以跨多个表的多个行之上散布。为了创建、移除或修改对象,在适当的表的适当行上执行原始的数据库操作,诸如插入、删除或更新。

基础设施建模中枢服务142可以被云中执行信息管理和其他功能的多个其他服务调用。例如,信息管理服务152可以管理资产数据、项目数据、现实数据、物联网(IoT)数据、代码和其他特征。此外,桥服务154使用知道如何读取和解释传统格式的源数据的源格式特定桥156来准许与传统数据源(未示出)互操作,递增地对齐数据。还可以提供多种多样的附加服务(未示出),并调用基础设施建模中枢服务142或以其他方式与之交互。

为了准许对存储库144-146的公文包152和变更集147中维护的基础设施模型的访问,可以提供后端应用130、132。如以上提及的,一些后端应用130可以作为基于云的软件112的一部分位于云中,而其他后端应用可以作为客户端侧软件110的一部分位于客户端设备上。后端应用130、132可以维护本地公文包138和将它们变换成所期望版本所需的变更集。每个后端应用130、132可以包括用于如下各项的功能:与前端应用120、122交互并服务来自前端应用120、122的请求、调用基础设施建模中枢服务142以及在本地公文包138上创建和执行操作(例如,插入、删除和查询本地公文包138的模型、元素和属性,将变更集应用于本地公文包138等)。这样的功能可以由基础设施建模后端模块(例如,iModel.js后端模块)134(例如,用JavaScript或另一种语言编写)和基础设施建模本机模块(例如,iModel.js本机模块)136(例如,用C++或另一种语言编写)来实现。基础设施建模后端模块134可以处理与如下各项相关的功能:与前端应用120、122的交互和服务来自前端应用120、122的请求以及调用基础设施建模中枢服务142,但是不理解如何在存储基础设施模型的本地公文包138上创建和执行操作(例如,插入、删除和查询本地公文包138的模型、元素和属性,将变更集应用于本地公文包138等)。可以依赖基础设施建模本机模块来处理该功能。

前端应用120、122可以主要关注提供用户界面和使能与基础设施模型的用户交互。如以上提及的,一些前端应用可以是在由客户端设备上的网络浏览器(例如,Chrome®网络浏览器)124提供的虚拟环境(例如,“浏览器沙箱”)内操作的网络前端应用120,而其他前端应用可以是直接与客户端设备的操作系统交互的作为独立应用执行的桌面前端应用122。桌面前端应用122可以包括嵌入式网络浏览器代码(例如,Chromium® 嵌入式网络浏览器代码)126,以准许它们以与网络前端应用120类似的方式与后端应用132交互。前端应用120、122可以利用基础设施建模前端模块(例如,iModel.js前端模块)128(例如,用JavaScript或另一种语言编写)向基础设施建模后端模块(例如,iModel.js后端模块)134发送请求并处理来自其的响应。取决于前端应用120、122是网络前端应用120还是桌面前端应用122,请求和响应可以不同地发送。在网络前端应用120的情况下,通信可以经由网络协议(例如,超文本传输协议(HTTP))到后端应用130的基础设施建模后端模块(例如,iModel.js后端模块)134,所述后端应用130作为基于云的软件112的一部分位于云中。在桌面前端应用122的情况下,通信可以经由进程间通信(IPC)到后端应用132的基础设施建模后端模块(例如iModel.js后端模块)134,所述后端应用132作为客户端侧软件110的一部分位于客户端设备上。

在操作中,基础设施建模软件架构100起作用以将对基础设施模型的用户访问与维护和更新基础设施模型的专有软件140结构解耦。特别地,虽然基础设施建模后端模块(例如,iModel.js后端模块)134可以将从基础设施建模前端模块(例如,iModel.js前端模块)128和基础设施建模中枢服务142获得的信息传递给基础设施建模本机模块,其用于在公文包上创建和执行原始操作(例如,插入、删除和查询公文包的模型、元素和属性,将变更集应用于公文包等)中,但是基础设施建模后端模块本身可能不理解如何维护公文包以及如何与公文包交互,其在功能上与公文包隔离。这样的布置可以允许开发多种定制的后端应用130、132,其部署可以减少网络带宽消耗、提供负载平衡和其他益处,同时通过将理解如何与公文包交互的软件与后端应用的其余部分在功能上分离来增加安全性。

图2是用于打开基础设施模型的示例步骤序列200的流程图。这样的操作可以用于从储存库144-146获得基础设施模型的物化视图,以存储在公文包138中。在步骤205,后端应用130、132的基础设施建模后端模块(例如,iModel.js后端模块)134经由前端应用120、122的基础设施建模前端模块(例如,iModel.js前端模块)128接收对于打开基础设施模型的请求。作为响应,在步骤210,基础设施建模后端模块134从基础设施建模中枢服务142下拉任何相关变更集147,并将它们提供给基础设施建模本机模块136。在步骤215,基础设施建模本机模块136将变更集应用于基线公文包(例如,空公文包或快照公文包)数据库,以产生本地公文包138。在步骤220,它向基础设施建模后端模块134返回状态。在步骤225,基础设施建模后端模块134可以在错误状态下中止,或者在成功状态下继续。在步骤230,基础设施建模后端模块134调用基础设施建模本机模块136来打开本地公文包138。在步骤235,基础设施建模本机模块136打开本地公文包138,并且在步骤240,向基础设施建模后端模块134返回状态。在步骤245,基础设施建模后端模块134可以在错误状态下中止,或者在成功状态下继续。在步骤250,基础设施建模后端模块134调用基础设施建模本机模块136来获得属性。在步骤255,基础设施建模本机模块136对本地公文包138执行查询以利用专有值填充对象(例如,JavaScript对象标记法(JSON)对象或另一种类型的对象),并且在步骤260,将该对象返回给基础设施建模后端模块134。此后,在步骤265,基础设施建模后端模块134将来自对象的信息返回给前端应用120、122。

图3是用于关闭基础设施模型的示例步骤序列300的流程图。这样的操作可以用于关闭本地公文包138。在步骤305,后端应用130、132的基础设施建模后端模块(例如,iModel.js后端模块)134经由前端应用120、122的基础设施建模前端模块(例如,iModel.js前端模块)128接收用于关闭基础设施模型的请求。作为响应,在步骤310,基础设施建模后端模块134调用基础设施建模本机模块(例如,iModel.js本机模块)136来关闭本地公文包138。在步骤315,基础设施建模本机模块136关闭本地公文包138,在步骤320,向基础设施建模后端模块134返回确认。在步骤325,基础设施建模后端模块134可选地从其本地存储装置清除公文包的任何相关信息。此后,在步骤330,基础设施建模后端模块134经由基础设施建模前端模块128向前端应用120、122返回确认响应。

图4是用于将元素插入基础设施模型中的示例步骤序列400的流程图。在步骤405,后端应用130、132的基础设施建模后端模块(例如,iModel.js后端模块)134经由前端应用120、122的基础设施建模前端模块(例如,iModel.js前端模块)128接收用于插入具有一个或多个属性的新元素的请求。在步骤410,基础设施建模后端模块134将属性串行化为属性字符串(例如,JSON字符串)。作为响应,在步骤415,基础设施建模后端模块134调用基础设施建模本机模块(例如,iModel.js本机模块)136来插入元素,从而提供属性字符串。响应于该调用,在步骤420,基础设施建模本机模块136从属性字符串解析属性值,并且在步骤425,从属性值初始化元素结构。在步骤430,基础设施建模本机模块136将来自元素结构的值绑定到数据库语句(例如,SQL INSERT语句),并且在步骤435,对本地公文包138执行数据库语句。该语句可以在数据库中为插入的元素创建新行,并且这样的新行可以存储在变更集中。在步骤440,基础设施建模本机模块136检索新插入行的标识符(例如,ElementId(元素Id)),并且在步骤445,使标识符字符串中的标识符(例如,JSON字符串)串行化。在步骤450,它将标识符字符串返回给基础设施建模后端模块134。在步骤455,基础设施建模后端模块134使标识符字符串解串行化,并且在步骤460,经由基础设施建模前端模块128将对象(例如,JavaScript对象或另一种类型的对象)返回给前端应用120、122。

图5是用于从基础设施模型检索元素属性的示例步骤序列500的流程图。在步骤505,后端应用130、132的基础设施建模后端模块(例如,iModel.js后端模块)134经由前端应用120、122的基础设施建模前端模块(例如,iModel.js前端模块)128接收用于取得基础设施模型元素的元素属性的请求。该请求包括元素的标识符。作为响应,在步骤510,基础设施建模后端模块134将标识符串行化为标识符字符串(例如,JSON字符串),并且在步骤515,调用基础设施建模本机模块(例如,iModel.js本机模块)136,从而提供标识符字符串。响应于该调用,在步骤520,基础设施建模本机模块136从标识符字符串解析标识符(例如,ElementId(元素Id)),并且在步骤525,在公文包138上执行对包括该标识符(例如,ElementId(元素Id))的元素的查询。在步骤530,它从查询结果加载元素结构,并且在步骤535,在结果字符串(例如,JSON字符串)中串行化其至少一部分。在步骤540,基础设施建模本机模块136将结果字符串返回给基础设施建模后端模块134。在步骤545,基础设施建模后端模块134将结果字符串解串行化为对象(例如,及时定义的JavaScript类或其他类型的类)。在步骤550,基础设施建模后端模块134经由基础设施建模前端模块128将对象返回给前端应用120、122。

图6是用于查询基础设施模型的示例步骤序列600的流程图。在步骤605,后端应用130、132的基础设施建模后端模块(例如,iModel.js后端模块)134经由前端应用120、122的基础设施建模前端模块(例如,iModel.js前端模块)128接收用于查询基础设施模型的请求。该请求包括查询语句和绑定。作为响应,在步骤610,基础设施建模后端模块134调用基础设施建模本机模块(例如,iModel.js本机模块)136,提供查询语句。响应于该调用,在步骤615,基础设施建模本机模块136准备针对本地公文包138的数据库语句(例如,SQLSELECT语句),并且在步骤620,向基础设施建模后端模块134返回状态。在步骤625,基础设施建模后端模块134可以在错误状态下中止,或者在成功状态下继续。在步骤630,基础设施建模后端模块134调用提供绑定的基础设施建模本机模块136。在步骤635,基础设施建模本机模块136将来自绑定的值绑定到数据库语句(例如,SQL SELECT语句)中,并且在步骤640,向基础设施建模后端模块134返回状态。在步骤645,基础设施建模后端模块134可以在错误状态下中止,或者在成功状态下继续。在步骤650,基础设施建模后端模块134调用基础设施建模本机模块136以得到查询的结果。在步骤655,基础设施建模本机模块136在本地公文包138上执行数据库语句,并且在步骤660,从该结果构造对象(例如,JSON对象),所述结果在步骤665被返回到基础设施建模后端模块134。在步骤670,基础设施建模后端模块134经由基础设施建模前端模块128将对象返回给前端应用120、122。

总之,将对基础设施模型的用户访问与维护和更新基础设施模型的专有软件解耦。应当理解,可以对技术进行多种多样的适配和修改。此外,一般来说,功能可以用软件、硬件或其各种组合来实现。软件实现可以包括存储在非暂时性电子设备可读介质(例如,非暂时性计算机可读介质)中的电子设备可执行指令(例如,计算机可执行指令),所述非暂时性电子设备可读介质(例如,非暂时性计算机可读介质)诸如是易失性存储器、持久存储设备或其他有形介质。硬件实现可以包括逻辑电路、专用集成电路和/或其他类型的硬件组件。此外,组合的软件/硬件实现可以包括存储在非暂时性电子设备可读介质中的电子设备可执行指令,以及一个或多个硬件组件二者。最重要的是,应当理解,以上描述意味着仅作为示例来考虑。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号