news 2026/7/28 14:26:53

更新机制概述【技术文章】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
更新机制概述【技术文章】

摘要

本文介绍了特征更新机制的主要概念。

基本概念

规格-结果 模型

在 “Spec-Result” 规格-结果范式(spec是specification 的缩写)中,一个特征完全由其规格定义,并且能够在任何时刻计算其结果。

例如,一个圆可以以圆心和半径值作为其规格,而其结果是其轮廓,如下图所示:


图1 规格/结果

规格也可以称为输入,结果也可以称为输出。
特征的规格可以是:

  • 原始属性(布尔值、整数…)
  • 其他特征
  • 其他特征的属性
  • 其他特征的"结果"

特征的结果是一个宽泛的概念:

  • 对于机械特征,它是其生成的几何数据。
  • 对于知识公式,它是其输出参数。
  • 对于知识规则,它是脚本运行期间执行的操作
  • 对于许多"结构"特征:无结果

由于特征的结果是定义该特征的应用程序的内在概念,它并未被特征建模器形式化或管理。这种分离允许将规格-结果模型视为一个其结果可以异步计算的参数化系统

构建

构建是特征根据其规格计算相应结果的过程。此过程只能由拥有该特征的应用程序实现,并且不能直接调用。更多信息请阅读文章 “构建一个特征”1

特征在其构建过程中使用的规格,也可以是其他特征构建过程计算出的结果。例如,一个圆可以由一个长度和一个点组成,而这个点本身又是一个以坐标作为输入的特征。首先必须构建点,然后才能使用一个有效的点作为输入来更新圆。这种递归性由更新引擎管理。

更新

更新过程的目的是确保在构建过程中使用特征的规格之前,这些规格是有效的。因此更新引擎可以被看作是一个构建调度器,能够以正确的顺序启动特征网络的构建过程。
下图通过一个圆柱体说明了这个顺序。圆柱体(一个特征)由高度(实数值)和一个圆组成。而圆(一个特征)又由半径(实数值)和一个点(一个特征)组成。


图2 构建顺序

当您请求更新圆柱体时,首先更新点,然后更新圆,最后更新圆柱体。
与构建过程相反,更新不能被定制,但可以被应用程序直接调用。

更新状态

一个被更新引擎称为"最新"的特征,其结果是与其规格是匹配的。相反的状态是"过时"。

更新机制

能力与限制

更新引擎构建在特征建模器之上,因此所有特征,即使是那些从头创建的特征,都能受益于此引擎。
更新引擎在所有通过其特征建模器链接连接的特征之间创建了一个依赖关系图。因此依赖关系图的内省是完全集中化、健壮的,并且能够抵抗应用程序软件/模型的修改。
更新过程不是上下文相关的,只要应用程序的构建过程不变,它在命令中或在批处理过程中将以相同的方式工作。

更新算法

更新引擎可以概括为以下一句话:“一个特征是最新的,当且仅当其所有输入都是最新的,并且其构建过程成功”。这引出了以下三种算法:

  • IsUpToDate
  • Update
  • Impact Propagation

IsUpToDate

IsUpToDate 算法用于检索特征的更新状态。

"最新"意味着特征的结果与其规格一致。因此构建一个"最新"的特征是徒劳的,因为其构建过程将产生完全相同的结果。

一个特征处于最新状态,当且仅当:

  • 它的规格是最新的
  • 它已被成功构建
  • 自上次构建以来,其规格未被更改

"最新"状态可以通过以下方法检索:

  • CATFmFeatureFacade::IsUpToDate(框架 FeatureModelerExt)
  • DataCommonProtocolServices::IsUpToDate(框架 DataCommonProtocolUse)

Update

Update 算法用于计算特征的结果。如果特征已经是最新的,则不执行任何操作。它是将特征的更新状态从"过时"更改为"最新"的唯一方法。 Update 算法是:
  • 步骤1:递归更新所有规格
  • 步骤2:调用构建过程
  • 步骤3:将特征状态更改为最新

显然,如果任何一个步骤失败,特征将保持"过时"状态。

Update 可以通过以下方法调用:

  • CATFmFeatureFacade::Update(框架 FeatureModelerExt)
  • DataCommonProtocolServices::Update(框架 DataCommonProtocolUse)

Impact Propagation

当一个特征的规格被修改时,该特征变为过时。

递归地,所有以该第一个特征作为规格的特征也应该变为过时。

影响传播算法是:

  • 步骤1:将特征的更新状态更改为过时
  • 步骤2:递归地将影响链上特征的更新状态更改为过时

这项工作由影响传播机制同步执行,并避免了每次检索更新状态时对图的深度遍历。
在[图.2]的例子中,假设您修改了点的一个坐标。圆立即变为"过时",并且递归地圆柱体也变为"过时"。
请注意,即使规格的修改对特征的结果没有影响,整个影响关系图也将变为过时。例如[图.2],您将点的一个坐标替换为相同的值。但是尽管它们各自的结果仍然有效,圆和圆柱体还是变为"过时"。特征建模器不知道应用程序的语义。

没有办法显式调用影响传播。当修改对更新引擎可见的属性时,它将由特征建模器自动启动。

与其它特征建模器机制的集成

持久性

更新状态是持久化的,这意味着您可以保存过时的数据(并在另一个会话中更新它们)。

撤销/重做

更新是可撤销的。

如果特征结果不由特征建模器属性(这些属性也是可撤销的)持有,则由应用程序负责管理可撤销性。

实例化

创建(实例化)后,特征不是最新的,因为它从未被构建/更新过。

数据交换 (CCP/协作)

原生的特征建模器 CCP/协作实现会创建(如同实例化)过时的特征。

简而言之

本文介绍了特征更新机制的基础知识。

历史记录

版本:1 [2010年6月] 文档创建


  1. 构件示例 ↩︎

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 21:34:34

数字模型赋能大规模设计,连通城市与河流

通过利用数字模型,由21家分包咨询机构组成的团队实现无缝协作,工作效率提升高达300%重新连通城市与河流Pennoni是一家总部位于费城的工程公司,拥有60年的跨专业技术能力积淀。在改造费城大型滨水资产的过程中,该公司发挥了核心作用…

作者头像 李华
网站建设 2026/7/23 16:31:41

JSP 服务器响应

JSP 服务器响应 概述 JSP(JavaServer Pages)是一种基于Java技术的服务器端技术,它允许开发人员将Java代码嵌入到HTML页面中。在JSP应用中,服务器响应是一个关键的过程,涉及到服务器如何接收请求、处理请求并返回响应给客户端。本文将详细介绍JSP服务器响应的过程、原理以…

作者头像 李华
网站建设 2026/7/16 9:22:32

jQuery 淡入淡出效果详解

jQuery 淡入淡出效果详解 引言 在网页设计中,动画效果能够极大地提升用户体验。jQuery 是一个流行的 JavaScript 库,提供了丰富的动画效果,其中“淡入淡出”效果尤为常用。本文将详细介绍 jQuery 的淡入淡出效果,包括其原理、实现方法以及应用场景。 淡入淡出效果原理 …

作者头像 李华
网站建设 2026/7/23 12:50:24

获取java

java17下载地址:https://download.oracle.com/java/17/archive/jdk-17.0.12_windows-x64_bin.zip

作者头像 李华
网站建设 2026/7/16 2:18:50

centos+python批量导出csdn里的文章

首先,需要在centos里安装3.8版本以上的python,这里不再赘述,网上有的是安装步骤 检查是否安装成功 pip3 --version安装后执行 pip3 install requests beautifulsoup4 markdownify新建脚本 vim csdn_downloader.py脚本如下: #…

作者头像 李华