实例化父块时实例化唯一的子块



我目前正在使用Cameo Systems Modeler 19.0,使用IBD和BDD。

我目前正在建模的系统涉及一个由两个子组件(:first,:second(组成的组件(:P arent(,我已经在我的主BDD中建立了同样多的东西。每个:P由 1 个唯一 :first 和 1 个唯一 :second 组成。从 :P aret 到 :first,从 :P aret 到 :second,建立了 1 对 1 的合成关系。

在系统上下文中使用此主要组件的多个实例 - 在系统的 ibd 上,我能够根据需要实例化任意数量的 :P aret类(即

父级 1:父级,父级 2:父级,父级 3 :父级等(我的问题是,当我显示每个父实例组成的部分时(以显示每个 :P arent 由唯一的 :first 和 :second 实例组成(,每个嵌套类都显示为同一实例。对父级 1 上的 :first 和 :second 子项的更改:父级将相同的更改应用于 :P arent 的所有实例。

我想将这些嵌套块实例化为它们的父块所独有的 - 到目前为止,我让它工作的唯一方法是简单地定义冗余块并根据需要显示它们,但我觉得我必须缺少一些东西,允许我为父级的每个实例实例实例化单独的子引用。

当您显示系统的部件树时,它看起来像这样(我在父部件中添加了名称(:

- «System» System1
- «part» part1:Parent
- «part» itsFirst:first
- «part» itsSecond:second
- «part» part2:Parent
- «part» itsFirst:first
- «part» itsSecond:second

此系统的实例将包含第一个实例的两个实例和第二个实例的两个实例。相同类型的两个实例看起来相同,但仍然是可拆分的实例。为了说明这一事实,您可以创建一个对象图,显示与您的 ibd 一致的七个唯一实例规范的示例。

它们必须是单个实例的事实是由组合关系给出的。它的语义是排他性。任何实例只能是一个复合的一部分。请注意,我说的是"可以"。first的实例也可以放在某个地方的架子上,并且根本不是复合的一部分。因此,关系为 0..1 到 1。first的实例也可以是其他复合的一部分,只是不是同时 - 因此具有排他性。

现在你说你想改变firstsecond的某些属性,以具有不同的值,这取决于它们是part1的嵌套部分还是part2。例如,它们可以在系统中具有物理位置。当然,每个实例都会有所不同。为此,SysML 引入了特定于上下文的初始值。Cameo Systems modeler很好地支持了它们。您将在系统的 ibd 中部件的上下文菜单中找到一个条目(您必须显示part1part2的嵌套部分(。只需选择"工具/定义特定于上下文的初始值"。

其工作方式是,该工具然后创建带有值插槽的实例规范,并将其设置为相应系统部件的默认值。因此,当您在系统块旁边发现全新的元素时,请不要感到惊讶。

最新更新