news 2026/4/23 12:12:21

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

作者头像

张小明

前端开发工程师

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/4/21 22:52:37

光亚鸿道子公司科东软件荣获国家级专精特新“小巨人”企业授牌

2月4日,由 广州市工业和信息化局主办的广州市2026年专精特新重点“小巨人”政策宣贯暨 第七批专精特新“小巨人”企业授牌仪式 在广州举行。光亚鸿道子公司科东软件凭借在工业操作系统领域的深耕创新与突出的行业贡献,成功入选第七批专精特新 “小巨人”…

作者头像 李华
网站建设 2026/4/14 20:40:40

职教数字化八年观察:当代码成为产教融合的“隐形桥梁”

凌晨的写字楼里,某职业教育数字化团队的屏幕上,一组关于“新能源汽车虚拟仿真实训系统”的测试数据仍在滚动。合作院校发来的反馈消息在对话框里闪烁:“模块上线后,学生实操通过率从58%跃升至92%,企业验收一次通过。”…

作者头像 李华
网站建设 2026/4/23 11:01:15

中电金信助力广西某万亿规模农商行新一代核心系统群投产上线

近日,由中电金信承建的广西某万亿规模农商行新一代核心系统群顺利投产上线,标志着该行在“十五五”规划开局之年,全面迈向以“人工智能分布式国产化”底座为基础的数智化高质量发展新征程。伴随该行业务规模的持续高速增长与服务模式的不断创…

作者头像 李华
网站建设 2026/4/7 12:34:43

【计算机毕业设计案例】基于SpringBoot的智慧社区管理系统的设计与实现基于springboot的在线社区系统的设计与开发(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/22 19:00:12

计算机Java毕设实战-基于springboot的在线社区系统的设计与开发基于SpringBoot的社区居民服务系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华