元模型化模式是参数化的结构,当将其应用于实际参数时,会产生规则的,非参数化的结构。 结构只是由关联和聚合关联的元类的集合。 模式的好处在于,它们允许重复使用重复结构,而无需重复其定义。 本章介绍元建模模式的概念,以及它们在AUTOSAR元模型中的使用和表示法。 另一个优点是,保留了元模型的原始结构,并且不会因实现细节而模糊。
Tips:此章节运用泛型编程思想,不懂先去百度后再来看。
本章内容有
4:元模型中应用的模型转换
4.1:实施原始型
4.2:实施 Associations 关系作为 References关联(上)
模型转换模式机制在MetaModel中应用于
• 变体处理(第7章)
• 其他特定目的,例如参考资料
本节说明了原语的实现,即使尚未将其(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属性最终将实现为该元类的聚合。
本节说明了关联的实现,即使尚未将其(R4.0)实现为真正的模型转换也是如此。
建立参考
元类之间的引用表示为关联。 引用的元类派生自Referrable,主要是可识别的。 因此,它们定义了一个shortName,在其名称空间内应该是唯一的。 因此,引用(元模型中的关联)由
1.通过指定区分大小写的shortName(绝对或相对)路径
2.引用的目标类型
3.如果是相对引用,则引用库的区分大小写的名称
名称空间层次结构是在元模型中通过以下方式的复合关联来定义的:
从Identifiable派生的类。 每个Identifiable是其直接或间接关联(复合关联)类的名称空间。
类型引用的表示
注意,对于用《 IsOfType》定型的关联,引用类的角色是 theRoleTref。
关联模型转换
关联被转换为具有属性dest的匿名元类的聚合。 在根据【基元模型转换】进行转换后,该元类从Ref继承。 因此,Ref提供了一个值,该值表示到所引用对象的shortName路径。 下图说明了等效模式。
ShortName路径由以'/'分隔的shortName序列组成。 以下规则适用于AUTOSAR中使用的shortName路径:
绝对shortName-Path
1.通过收集从模型的根元素到引用元素的包含路径上的模型元素的shortName来计算绝对路径。
2.绝对路径以字符“ /”开头。
3.如果使用绝对引用路径,则忽略属性库。
请注意,通过删除基数指定的shortName-path,可以将绝对路径转换为相对路径。
相对的短名称路径
相对参考路径的开头不是字符“ /”。 通过在相对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