我目前正在使用IBD和BDD在Cameo Systems Modeler 19.0中工作。
我当前正在建模的系统涉及一个组件(:Parent),该组件由两个子组件(:first,:second)组成,并且我已经在主BDD中建立了尽可能多的组件。每个:Parent由1个唯一的:first和1个唯一的:second组成。从:Parent到:first,以及:Parent到:second建立了1对1的合成关系。
在系统的上下文中使用了这个主要组件的多个实例-在系统的ibd上,我能够实例化所需的:Parent类(即Parent 1:Parent,Parent 2) :父母,父母3:父母等)
我的问题是,当我显示每个父实例的组成部分(以显示每个:Parent由唯一的:first和:second实例组成)时,每个嵌套类都显示为同一实例。对父项1的:first和:second子项的更改:父项将相同的更改应用于:Parent的所有实例。
我想将这些嵌套块实例化为它们的父级唯一的-到目前为止,使它工作一点的唯一方法就是简单地定义冗余块并根据需要显示它们,但是我觉得有成为我所缺少的东西,它将允许我为父对象的每个实例实例化单独的子对象引用。
答案 0 :(得分:0)
当您显示系统的零件树时,它看起来像这样(我在父零件中添加了名称):
- «System» System1
- «part» part1:Parent
- «part» itsFirst:first
- «part» itsSecond:second
- «part» part2:Parent
- «part» itsFirst:first
- «part» itsSecond:second
此系统的一个实例将包含两个“ first”实例和两个“ seconds”实例。相同类型的两个实例看起来都相同,但仍然是可区分的实例。为了说明这个事实,您可以创建一个对象图,显示与ibd一致的七个唯一InstanceSpecifications的示例。
事实上,它们必须是单独的实例是由组合关系给出的。它的语义是排他性的。任何实例都只能是一个组合的一部分。请注意,我说“可以”。 first
的实例也可以放在某个地方的架子上,并且根本不属于任何复合物。因此,关系是0..1到1。first
的实例也可以是其他某些复合的一部分,只是不同时存在-因此是排他性的。
现在,您说要更改first
和second
的某些属性以具有不同的值,这取决于它们是part1
还是part2
的嵌套部分。例如,他们可能在系统中具有物理位置。当然,每个实例都会有所不同。为此,SysML引入了上下文特定的初始值。 Cameo Systems建模者很好地支持它们。您将在系统ibd的零件的上下文菜单中找到一个条目(您必须显示part1
和part2
的嵌套零件)。只需选择“工具/定义特定于上下文的初始值”即可。
此方法的工作方式是,该工具然后使用值的插槽创建InstanceSpecifications并将其设置为各个系统部件的默认值。因此,当您在系统块旁边找到全新的元素时,请不要感到惊讶。