定义扩展特征【用户示例】

摘要

本文讨论CAAFmExtDefineExtensions用例。该用例详细说明了在特征目录中定义扩展特征所涉及的各个步骤。其前提条件是理解基本的特征建模器概念1、扩展特征2、特征启动项3以及创建启动项目录4

通过此用例您将学到什么

在CAAFmExtDefineExtensions用例中,用户将学习定义扩展特征并进一步生成特征目录的步骤。关键学习点包括:

  • 理解包含扩展特征定义的OSM文件的重要性。
  • 学习使用CATfctEditorAssistant工具来生成特征目录。

CAAFmExtDefineExtensions用例

CAAFmExtDefineExtensions是CAAFeatureModelerExt.edu框架中的一个用例,用于展示FeatureModelerExt框架的功能。

CAAFmExtDefineExtensions的功能是什么?

CAAFmExtDefineExtensions的目标是演示如何创建扩展特征。该用例将定义两个新的特征目录,每个目录包含一组不同的扩展特征。
下图展示了第一个特征目录的内容:该用例创建的目录包含扩展特征的定义。
目录CAAOsmExt1Catalog包含了两个扩展特征的定义,分别是CAAOsmHistoricalNovel(历史小说)和CAAOsmBiographicalNovel(传记小说),如图所示:


图 1: CAAOsmExt1Catalog.CATfct目录

CAAOsmHistoricalNovel的特征是一个字符串类型的属性Epoch(时代),代表小说所基于的历史时期。
CAAOsmBiographicalNovel扩展特征继承自CAAOsmHistoricalNovel。它具有两个属性:

  • Epoch(字符串类型):从父特征继承的属性。
  • Domain(字符串类型):由扩展特征显式添加的属性。代表传记所基于的领域。

第二个特征目录CAAOsmExt2Catalog的内容如下所示。


图 2: CAAOsmExt2Catalog.CATfct目录

CAAOsmChildrensNovel(儿童小说)是一个扩展特征,其扩展属性是整数类型的AgeGroup(年龄组)。

如何启动CAAFmExtDefineExtensions

要启动CAAFmExtDefineExtensions,首先需要设置运行时环境。具体步骤详见用例《创建启动项目录》4

$ mkrun -c cmd $cdyour_workspace_root $# 确保运行时视图(包括连接目录)中不存在之前的特征目录文件$rmOS_directory/resources/graphic/CAAOsmExt1Catalog.CATfct

我们使用命令mkrun -c cmd启动一个已设置mkrun环境的子控制台(cmd是Windows控制台命令解释器,Unix上的等效命令是sh)。

接着切换到工作空间目录并删除我们接下来打算创建、但可能已存在于工作空间运行时视图或连接目录中的所有特征目录(CATfct)文件。在本例中我们运行rm命令删除CAAOsmExt1Catalog.CATfct。

$# 创建空特征目录$ CATfctEditorAssistant -create-new-catalog -catalog-name CAAOsmExt1Catalog.CATfct -with-client-id CAAOsmClientId1 -into-directory$PWD/OS_directory/resources/graphic

接下来我们启动CAA安装RTV5中可用的CATfctEditorAssistant可执行文件。我们首先在-into-directory标志指定的地址中创建一个新的空特征目录。
<font color="red">clientID(客户端ID)是生成新目录过程的关键输入</font>。此后只有在验证了输入的客户端ID后,客户端才被授权访问特征目录。

$# 将空特征目录描述为一个OSM文件。$ CATfctEditorAssistant -describe-as-osm -catalog-name CAAOsmExt1Catalog.CATfct -with-client-id CAAOsmClientId1 -as CAAOsmExt1Catalog.osm -into-directory$PWD

在更新流程特征目录添加数据之前,将特征目录转换到一个OSM文件中

$# 使用InputData osm文件升级空特征目录。请注意升级后的特征目录将输出到指定地址中$ CATfctEditorAssistant -update-catalog CAAOsmExt1Catalog.CATfct -with-client-id CAAOsmClientId1 -with-osm$PWD-into-directory$PWD

继续使用更新后的OSM文件作为输入来升级特征目录。上一步输出的OSM文件已更新了所有扩展特征。升级后的目录(CAAOsmExt1Catalog.CATfct)则在您通过-into-directory标识指定的目录中生成。
只有成功验证了输入的客户端ID,目录的升级才会返回SUCCESS。

$# 删除空的特征目录和osm文件$rmOS_directory/resources/graphic/CAAOsmExt1Catalog.CATfct $rm$PWD/CAAOsmExt1Catalog.osm $# 将更新后的目录移动到运行时视图中$mv$PWD/CAAOsmExt1Catalog.CATfct OS_directory/resources/graphic/CAAOsmExt1Catalog.CATfct

最后我们删除不再相关的空OSM和空特征目录文件。

注意:
CATfctEditorAssistant以下列不同的方式处理目录参数:

  • 输入时目录参数会被剥离其目录路径,然后在运行时视图中查找。在您的工作空间级别就是(目录文件必须放在以下地址否则生成OSM文件失败)workspace_root/OS_directory/resources/graphic
  • 输出时目录被写入到目录参数指定的位置。

在工作空间中存储目录的位置是framework/CNext/resources/graphic。在此地址(位于工作空间文件夹内)中找到的任何特征目录,都会由mkrtv命令自动复制到运行时视图workspace_root/OS_directory/resources/graphic。

上述过程将创建扩展特征目录CAAOsmExt1Catalog.CATfct。要创建扩展特征目录CAAOsmExt2Catalog.CATfct,请重复相同的过程,只需将CAAOsmClientId1、CAAOsmExt1Catalog.osm和CAAOsmExt1Catalog.CATfct分别替换为CAAOsmClientId2、CAAOsmExt2Catalog.osm和CAAOsmExt2Catalog.CATfct。

在哪里可以找到CAAFmExtDefineExtensions的OSM文件

对应两个扩展特征目录的两个OSM文件都位于CAAFeatureModelerExt.edu框架的InputData目录中:InstallRootFolder/CAAFeatureModelerExt.edu/InputData其中InstallRootFolder5是您API安装的根文件夹。

分步说明

此用例中创建了两个扩展特征目录。CAAFmExtDefineExtensions 包含3个逻辑步骤:

  1. 定义启动项(1)
  2. 定义启动项(2)
  3. 生成特征目录

定义启动项(1)

每个扩展特征目录都有一个关联的OSM文件。OSM文件中定义了扩展特征。
与CAAOsmExt1Catalog关联的CAAOsmExt1Catalog.osm文件内容如下所示。
它定义了CAAOsmHistoricalNovel和CAAOsmBiographicalNovel扩展特征。

document `CAAOsmExt1Catalog.CATfct` { container RootCont #root { feature CAAOsmHistoricalNovel #startup #extension { #creation::parameter=metadata_NovelExtn string Epoch Epoch="Middle Ages" } feature CAAOsmBiographicalNovel CAAOsmHistoricalNovel #startup #extension { string Domain Domain="Music" } } ...

您首先可能注意到的是#extension标签,它指定该启动项是一个扩展启动项,而不是常规启动项。另一点是启动项可以派生自另一个启动项,如此例中CAAOsmBiographicalNovel继承自 CAAOsmHistoricalNovel。 此外CAAOsmHistoricalNovel特征关联了一个字符串类型的属性Epoch,其默认值设置为Middle Ages。 而CAAOsmBiographicalNovel特征关联了一个字符串类型的属性Domain,其默认值设置为Music。 然后请注意CAAOsmHistoricalNovel的元数据声明(#creation::parameter)。继承自CAAOsmHistoricalNovel的CAAOsmBiographicalNovel继承了相同的元数据:

metadata metadata_NovelExtn { `ContType` = "CAAFmExtApplication1" `Container` = "CAAFmExtApplication1" `Extends` = ["CAAOsmNovel"] `IsLocal` = true } } // OSM 结束 ...

因此CAAOsmHistoricalNovel和CAAOsmBiographicalNovel可以成为CAAOsmNovel特征的本地扩展特征,在应用容器CAAFmExtApplication1内实例化。

注意:
元数据必须包含这4行(ContType/Container/Extends/IsLocal)
当您创建/升级osm文件时,可以省略``。

定义启动项(2)

与CAAOsmExt2Catalog关联的CAAOsmExt2Catalog.osm文件内容如下所示。它定义了CAAOsmChildrensNovel扩展。

document `CAAOsmExt1Catalog.CATfct` { container RootCont #root { feature CAAOsmChildrensNovel #startup #extension { #creation::parameter=metadata_ChildrensNovelExtn int AgeGroup AgeGroup=12 } } }

CAAOsmChildrensNovel被定义为一个扩展特征,其特征是一个整数类型的属性AgeGroup,默认值设置为12。
#creation::parameter=刻面声明的元数据如下:

metadata metadata_ChildrensNovelExtn { `ContType` = "CAAFmExtApplication2" `Container` = "CAAFmExtApplication2" `Extends` = ["CAAOsmNovel"] `IsLocal` = true } } // OSM 结束 ...

生成目录

既然我们已经为目录创建了OSM文件,下一步就是生成目录。CAA安装RTV中提供的CATfctEditorAssistant工具可以生成新目录。前面关于如何启动该用例的部分更详细地介绍了这一步骤。

简而言之

该用例详细说明了定义扩展特征并随后生成目录所涉及的步骤。在此过程中用户了解到以下内容的重要性:

  • OSM文件:可由最终用户编辑,包含扩展特征的定义。
  • CATfctEditorAssistant工具:用于生成特征目录。

历史版本

版本1 [2000年2月] 文档创建
版本2 [2005年2月] 为新接口更新文档
版本3 [2019年6月] 应用创建新目录时不创建OSM文件的规则


  1. 特征建模器概念 ↩︎

  2. 理解扩展特征 ↩︎

  3. 建模启动项 ↩︎

  4. 在目录中创建启动项 ↩︎ ↩︎

  5. 构建和启动用例 ↩︎ ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1221014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建接口 【技术文章】

摘要 本文介绍接口的概念。阐述了接口在对象建模器中的作用、组成结构及使用方法。 CAA接口是什么&#xff1f; 面向对象设计及相关面向对象语言&#xff08;如C&#xff09;允许应用程序员通过类来描述和编码真实对象&#xff0c;这些类包含结构部分&#xff08;数据成员&a…

云智慧Cloudwise X1 轮足机器人重磅发布:跨楼层全自动巡检,重塑数据中心运维范式

随着算力需求激增&#xff0c;数据中心规模快速扩张&#xff0c;传统人工巡检正面临漏检率高、人才流动快、合规追溯难、老旧机房改造成本高等系统性瓶颈。从纸质记录到手持PDA&#xff0c;再到自主巡检机器人&#xff0c;运维方式的智能化演进&#xff0c;已成为行业共识。当轮…

节卡机器人 2026:核心动态与全景解析

一、2026 年开年重磅动态1. 战略级技术合作与英特尔共建具身智能生态&#xff08;1 月 7 日&#xff09;&#xff1a;围绕 "算力与作业力融合"&#xff0c;聚焦前沿技术研发、场景化方案落地、联合生态共建三大方向&#xff0c;解决具身智能规模化应用的算力瓶颈与兼…

【无人机三维路径规划】基于LevyPSO实现无人机三维路径规划附MATLAB代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

动物育种值评估原则

P = G + E G = A + D + IP = A + D + I + E001、尽可能的消除环境因素的影响(只比较遗传上的优略)002、尽可能的利用更多的信息(亲缘关系 + 亲属的表型信息)003、选择科学的动物育种值估计方法(可能充分的利用所有…

2026年1月CNAS认证咨询机构推荐榜:专业CNAS/CNAS咨询/CNAS认证/CNAS认证咨询一站式服务,权威辅导与高效合规的可靠之选

2026年1月CNAS认证咨询机构推荐榜:专业CNAS/CNAS咨询/CNAS认证/CNAS认证咨询一站式服务,权威辅导与高效合规的可靠之选 随着我国检验检测市场的不断规范与高质量发展,实验室能力建设已成为企业、科研院所乃至第三方…

VScode for stm32 消除中文数组警告

在用VScode 开发stm32的时候&#xff0c;有些场景下不得不用GB2312编码格式的c文件&#xff0c;如采用液晶中文字库等。常规的UTF-8格式下&#xff0c;一个中文字符占用3个字节&#xff0c;而GB2312是占用2字节的&#xff0c;为能让字库正常识别中文&#xff0c;不得不定义中文…

文旅元宇宙AI应用:AI+虚拟文物的复原与交互架构

文旅元宇宙AI应用&#xff1a;AI虚拟文物的复原与交互架构 一、引入&#xff1a;当千年壁画在AI里“活”过来 2023年秋&#xff0c;敦煌莫高窟第257窟的壁画修复现场&#xff0c;年轻的数字修复师李阳盯着电脑屏幕&#xff0c;指尖轻轻拖动鼠标——屏幕里&#xff0c;一幅褪色…

裂纹剥落齿轮时变啮合刚度与动力学【附代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅成品或者定制&#xff0c;扫描文章底部微信二维码。 (1) 复合故障时变啮合刚度理论建模 齿轮传动系统在长期服役过程中,受交变载荷、润…

60天自我松绑:一个“被困住”成长者的破局宣言

困局中的觉醒凌晨三点的屏幕冷光&#xff0c;映照出空洞的眼神。拇指机械滑动&#xff0c;从短视频跳转到“深度好文”&#xff0c;信息潮水般涌来&#xff0c;退去后却留下更深的虚无。四小时后&#xff0c;闹钟将唤醒我奔赴那重复千次的工位。内心尖叫着“这不是我想要的生活…

Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置

Spring MVC 响应机制的核心方式返回视图&#xff08;页面渲染&#xff09; 通过返回视图名称&#xff08;如 return "home"&#xff09;&#xff0c;配合视图解析器&#xff08;InternalResourceViewResolver&#xff09;定位到 /WEB-INF/views/home.jsp 等具体页面。…

java Date转换为string

在Java中将Date转换为String有多种方法&#xff0c;以下是常用的几种方式&#xff1a; 1. 使用 SimpleDateFormat&#xff08;传统方式&#xff0c;Java 8之前&#xff09; import java.text.SimpleDateFormat; import java.util.Date;// 创建Date对象 Date date new Date()…

看清不要什么:60天松绑第二步——用“反愿景”照见你的隐形牢笼与停滞沼泽

一、从“想要”到“不想要”的认知升级上一期&#xff0c;我们一起启动了“60天松绑”的第一步。但一个更深层的问题随之浮现&#xff1a;为什么我们总是对“想要的生活”心潮澎湃&#xff0c;却在行动时寸步难行&#xff1f;一个隐秘的答案或许是&#xff1a;我们弄错了顺序。…

如何甄别一家靠谱的背调公司?

如何选择一家可靠的背调服务商&#xff0c;是企业招聘中关键却常被忽视的一环。在信息繁杂的市场中&#xff0c;甄别需要回归核心&#xff0c;关注以下几个务实维度。首先&#xff0c;核查其数据源的合法性与广度。专业的背调公司应具备多元、合规的信息获取渠道&#xff0c;而…

SimpleDateFormat 为什么线程不安全

SimpleDateFormat是线程不安全的&#xff0c;主要原因如下&#xff1a; 1. 内部状态可变性 // SimpleDateFormat 内部维护了可变状态 private StringBuffer format(Date date, StringBuffer toAppendTo, FieldDelegate delegate) {// 会修改内部的 Calendar 对象calendar.set…

【Rust开发】Rust基础语法详细解析,助力你快速通关Rust

Rust基础语法解析变量与可变性Rust中变量默认不可变&#xff0c;使用let声明。可变变量需添加mut关键字&#xff1a;let x 5; // 不可变 let mut y 10; // 可变 y 15; // 允许修改常量使用const声明&#xff0c;必须标注类型&#xff1a;const MAX_POINTS: …

性能优化:类型系统的最佳实践

性能优化&#xff1a;类型系统的最佳实践 欢迎继续本专栏的第三十七篇文章。在前几期中&#xff0c;我们已逐步深化了对 TypeScript 测试实践的理解&#xff0c;包括如何配置 Jest 以支持类型安全的断言和 mock&#xff0c;以及在异步代码中的错误处理策略。这些内容帮助我们构…

设计模式在 TypeScript 中的实现

设计模式在 TypeScript 中的实现 欢迎继续本专栏的第三十八篇文章。在前几期中&#xff0c;我们已逐步深化了对 TypeScript 性能优化的理解&#xff0c;包括避免 any 类型的策略、类型推断的优化技巧&#xff0c;以及在大型项目中的性能考虑。这些实践帮助我们构建了更高效和可…

2026年1月线切割机床厂家推荐排行榜,中走丝/快走丝/电火花线切割机床,穿孔机,精密高效加工设备源头厂商精选

2026年1月线切割机床厂家推荐排行榜:中走丝/快走丝/电火花线切割机床与穿孔机精密高效加工设备源头厂商精选 随着制造业向高精度、高效率、智能化方向持续演进,特种加工技术在现代工业体系中的地位日益凸显。线切割机…

C盘爆红怎么办!几招彻底清理电脑C盘空间

真实用户求救&#xff1a;C盘红了&#xff0c;我慌了&#xff01; “昨天开黑突然卡死&#xff0c;一看C盘只剩200MB&#xff01;不得不考虑清理电脑c盘空间&#xff01;c盘爆红了可以删除哪些文件&#xff1f;怕删错系统崩了...求大神指点怎么清除电脑c盘的空间才安全&#x…