Autosar4.4:通用架构模板 - 元建模模式与模型转换(2/3)

元模型化模式是参数化的结构,当将其应用于实际参数时,会产生规则的,非参数化的结构。 结构只是由关联和聚合关联的元类的集合。 模式的好处在于,它们允许重复使用重复结构,而无需重复其定义。 本章介绍元建模模式的概念,以及它们在AUTOSAR元模型中的使用和表示法。 另一个优点是,保留了元模型的原始结构,并且不会因实现细节而模糊。

Tips:此章节运用泛型编程思想,不懂先去百度后再来看。

 

本章内容有

4:元模型中应用的模型转换

4.1:实施原始型

4.2:实施 Associations 关系作为 References关联(上)

 

 

 

 

4、元模型中应用的模型转换

模型转换模式机制在MetaModel中应用于

• 变体处理(第7章)

• 其他特定目的,例如参考资料

4.1实施《primitive》

本节说明了原语的实现,即使尚未将其(R4.0)实现为真正的模型转换。该方法在模式生成器中实现。

primitive的模型转换

元类“原始”转换为以下元素。

1.用“ _simple”后缀名的另一个primitive。

对于xml,此原语会在生成的模式中产生简单类型,并指定实现细节,例如模式和构面。 此元类用于标记为xml.attribute = true的属性,还用作标记为xml.roleElement = false,xml.roleWrapperElement = false,
xml.typeElement = false,xml.typeWrapperElement = false。

2.具有相同名称的元类。

与所有其他元类一样,此元类继承自《 atpObject》。 因此,除非使用xml.attribute = true进行标记,否则元模型中的UML属性最终将实现为该元类的聚合。

Autosar4.4:通用架构模板 - 元建模模式与模型转换(2/3)_第1张图片 实现基元的模式

 

4.2 实施 Associations 关系作为 References关联

本节说明了关联的实现,即使尚未将其(R4.0)实现为真正的模型转换也是如此。

建立参考

元类之间的引用表示为关联。 引用的元类派生自Referrable,主要是可识别的。 因此,它们定义了一个shortName,在其名称空间内应该是唯一的。 因此,引用(元模型中的关联)由

1.通过指定区分大小写的shortName(绝对或相对)路径

2.引用的目标类型

3.如果是相对引用,则引用库的区分大小写的名称

名称空间层次结构是在元模型中通过以下方式的复合关联来定义的:

从Identifiable派生的类。 每个Identifiable是其直接或间接关联(复合关联)类的名称空间。

类型引用的表示

注意,对于用《 IsOfType》定型的关联,引用类的角色是 theRoleTref。

关联模型转换

关联被转换为具有属性dest的匿名元类的聚合。 在根据【基元模型转换】进行转换后,该元类从Ref继承。 因此,Ref提供了一个值,该值表示到所引用对象的shortName路径。 下图说明了等效模式。

Autosar4.4:通用架构模板 - 元建模模式与模型转换(2/3)_第2张图片 实现引用的模式

 

4.2.1 绝对短名称路径

ShortName路径由以'/'分隔的shortName序列组成。 以下规则适用于AUTOSAR中使用的shortName路径:
绝对shortName-Path

1.通过收集从模型的根元素到引用元素的包含路径上的模型元素的shortName来计算绝对路径。

2.绝对路径以字符“ /”开头。

3.如果使用绝对引用路径,则忽略属性库。

请注意,通过删除基数指定的shortName-path,可以将绝对路径转换为相对路径。

 

4.2.2 相对短名称路径

相对的短名称路径

相对参考路径的开头不是字符“ /”。 通过在相对shortName-path前面添加ReferenceBase的适当shortName-path,可以将相对参考路径转换为绝对路径。

识别相对引用的ReferenceBase

适当的ReferenceBase通过以下方式标识

•属性库。 这表示从引用中可见的第一个包含ARPackage(从引用到模型根的第一个祖先包)

其中referenceBase的shortLabel等于基数。 换句话说:随着程序包的嵌套,将自底向上搜索相应的referenceBase。

•或者,最里面的程序包具有一个referenceBase,默认情况下设置为“ true”。

命名参考库应可用

如果存在相对引用,则其中一个包含包的应具有referenceBase,且shortLabel等于引用的基数。

局部模型中的ReferenceBase

注意ReferenceBase是《 atpSplitable》。 因此,有必要在整个模型中搜索适当的ReferenceBase。 换句话说,应该在所有局部模型中搜索ReferenceBase。

下面展示了相对引用的最简单形式。 在这种情况下,包装内的相对引用应独立于包装名称。 请注意标注为xml注释的标注<!-1->

1. <!-1->:这是相对引用的基础。 请注意,isDefault表示它是默认值。

2. <!-2->:这是一个相对参考。 由于未指定base属性,因此使用<!-1->中指定的默认基数来解析引用。





MyComponent



default
true
false
false
/MyComponent




MyInterface


MyData
VALUE




MyComponent


MyPort



MyInterface






下面说明了可以有多个参考库。 在这种情况下,除了前面的示例外,CompuMethods还提供了另一个基础,因为它们位于单独的程序包中。

1. <!-1.1->:这是相对引用的另一个基础。 请注意,缺少isDefault属性。 与指定为false相同。

2. <!-2.1->:这是一个相对参考。 属性base表示相对引用应使用具有shortLabel compum(在<!-1.1->中定义的)的引用。相应的绝对引用为/ CompuMethods / MyCompu。





MyComponent



default
true
false
false
/MyComponent


compum
false
false
false

/CompuMethods




MyInterface


MyData
VALUE






MyCompu







MyComponent


MyPort



MyInterface






CompuMethods


MyCompu
RATFUNC




 

 

 

 

 

 

你可能感兴趣的:(Autosar官方搬运,autosar)