news 2026/4/19 20:36:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
定义扩展特征【用户示例】

摘要

本文讨论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. 构建和启动用例 ↩︎ ↩︎

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

如何在 Docker 容器下运行 cronjob ?

当您想要安排计划任务&#xff0c;可以使用内置在 macOS 和 Linux 中的常见工具&#xff0c;比如 cron&#xff0c;或者像 AWS Lambda 这样的特殊工具。Cron 不如 AWS Lambda 强大&#xff0c;但它在 Unix 系统的后台任务中工作得很好&#xff0c;特别是在使用容器的情况下。然…

作者头像 李华
网站建设 2026/4/18 17:10:59

【无人机追踪】基于资源福利任务分配算法的无人机集群任务分配算法,完成目标攻击任务的基础上,无人机的资源利用率最大化 + 资源损耗的公平性最优附Matlab代码2

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

作者头像 李华
网站建设 2026/4/18 1:23:44

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()…

作者头像 李华
网站建设 2026/4/18 12:32:26

探索SUMO、CARLA与自动驾驶联合仿真的奇妙世界

sumo/carla/自动驾驶联合仿真 安装 配置 /教程/开发/驾驶模拟/强化学习/轨迹预测/轨迹规划 在自动驾驶领域的研究与开发中&#xff0c;联合仿真起着至关重要的作用。SUMO和CARLA作为两款强大的仿真工具&#xff0c;它们的联合使用能够为自动驾驶技术的研究带来诸多便利&#x…

作者头像 李华
网站建设 2026/4/17 4:12:29

IP6163至为芯支持MPPT功能的太阳能电池板充电DC-DC芯片

英集芯IP6163是一款应用于太阳能电池板供电的锂电池/磷酸铁锂电池充电方案芯片。集成MCU的高效光伏降压MPPT DC-DC控制器。内置专用MPPT硬件与动态算法&#xff0c;峰值效率达99.9%&#xff0c;可快速锁定太阳能电池板的最大功率点。支持6-40V宽电压输入&#xff0c;兼容最多72…

作者头像 李华
网站建设 2026/4/17 17:25:53

西部生态建设新范式:科技赋能重塑发展底色

来源&#xff1a;中国经营报 记者&#xff1a;索寒雪党的二十届四中全会审议通过的《中共中央关于制定国民经济和社会发展第十五个五年规划的建议》锚定“完善适应气候变化工作体系”“扎实推动西部大开发形成新格局”等战略目标&#xff0c;为西部开发指明了新方向。当前&am…

作者头像 李华