多次使用 class 实例的模型组合
Model composition where instance of class is used multiple times
我想模拟以下场景:
- 消息 a 由一种或多种基本类型组成。
- 基本类型是 uint8 .. uint64 和 int8 .. int64。
- 一条消息还可以包含其他消息。
示例:
留言位置
- uint8 x
- uint8 y
消息移动
- 位置开始
- 位置结束
- uint8 速度
到目前为止,这是我在 Sirius 中建模的内容
这里的问题是我不能link消息位置两次到消息移动。您能否提供一种对此问题建模的方法?
您的模型缺少一个 "layer" 来表示您的 "message type" / "message instance" 结构。
我认为你需要做的事情有点像这样:
- Class
MessageType
对 BaseType
的遏制(IMO 应该重命名为 MessageDataType
)
- Class
MessageInstance
包含对自身的包含和对 MessageType
. 的引用
然后您的最终用户必须首先创建一个名为 "position" 的 MessageType
实例和另一个名为 "movement" 的实例。然后创建三个 MessageInstance
个实例,两个指向 MessageType
"movement",一个包含前两个 MessageInstance
个实例。
我还建议您认真考虑如何命名您的概念,因为您的 EClass 之一的 Ecore 实例与您正在有效地建模 [= =39=]结构。
我想模拟以下场景:
- 消息 a 由一种或多种基本类型组成。
- 基本类型是 uint8 .. uint64 和 int8 .. int64。
- 一条消息还可以包含其他消息。
示例:
留言位置
- uint8 x
- uint8 y
消息移动
- 位置开始
- 位置结束
- uint8 速度
到目前为止,这是我在 Sirius 中建模的内容
这里的问题是我不能link消息位置两次到消息移动。您能否提供一种对此问题建模的方法?
您的模型缺少一个 "layer" 来表示您的 "message type" / "message instance" 结构。
我认为你需要做的事情有点像这样:
- Class
MessageType
对BaseType
的遏制(IMO 应该重命名为MessageDataType
) - Class
MessageInstance
包含对自身的包含和对MessageType
. 的引用
然后您的最终用户必须首先创建一个名为 "position" 的 MessageType
实例和另一个名为 "movement" 的实例。然后创建三个 MessageInstance
个实例,两个指向 MessageType
"movement",一个包含前两个 MessageInstance
个实例。
我还建议您认真考虑如何命名您的概念,因为您的 EClass 之一的 Ecore 实例与您正在有效地建模 [= =39=]结构。