【问题标题】:Instantiate unique children when instantiating parent block实例化父块时实例化唯一的子代
【发布时间】:2020-05-13 13:44:06
【问题描述】:

我目前在 Cameo Systems Modeler 19.0 中工作,使用 IBD 和 BDD。

我目前正在建模的系统涉及一个由两个子组件(:first、:second)组成的组件(:Parent),并且我在我的主要 BDD 中建立了同样多的组件。每个 :Parent 由 1 个唯一的 :first 和 1 个唯一的 :second 组成。从 :Parent 到 :first 和 :Parent 到 :second 之间建立了 1 对 1 的组合关系。

在系统上下文中使用了这个主要组件的多个实例 - 在系统的 ibd 上,我可以根据需要实例化尽可能多的 :Parent 类(即 Parent 1 : Parent, Parent 2 : Parent, Parent 3 : Parent 等)

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

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

【问题讨论】:

    标签: sysml magic-draw


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 2015-04-26
      • 2013-05-07
      • 2013-04-14
      相关资源
      最近更新 更多