对象行为是生命周期状态的一个属性,用于设置源对象(父项)与关联对象(子项)之间的连接行为。
仅当源对象和关联对象可进行版本控制(即可换版)时,此属性才适用。此外,关系类型上也定义了一个对象行为属性。这两个属性(关系类型的对象行为和生命周期状态的对象行为)共同控制源对象和关联对象的版本变化规则。
对象行为共有四个选项:float(浮动),fixed(固定),Hard float(强制浮动)和Hard fixed(强制固定)。
此外,还有两种情况需要考虑 - 父项(或源对象)先换版,或是子项(或关联对象)先换版,会发生什么情况。
父项先换版,父项与子项的版本变化规则
1.当生命周期状态未设置对象行为时,结果如下(此时完全由关系类型的对象行为控制):
注:关系类型设置为Float时,在创建 Child2 时,Parent1 仍指向 Child1。这样是因为,当创建父级的新版本时,旧版本关联关系保持不变。因此,当创建 Parent2 时,Parent1 指向 Child1。无论在此之后对 Child 进行多少次版本控制,它都会保持该状态。
2.当生命周期图状态的对象行为设置为 Float 时,它会强制定义为 Fixed 的关系类型充变化为Float。见下图:
3.当生命周期状态行为设置为“fixed”时,它会强制定义为“fioat”的关系类型进行“fixed”操作。见下图:
4.当关系类型定义为“Hard fix”或“Hard float”时,它将覆盖生命周期状态设置的对象行为。请见下图,该图显示关系类型定义的对象行为,而不考虑生命周期状态定义的对象行为:
子项先换版,父项与子项的版本变化规则
1.我们先考虑没有设置生命周期状态的对象行为时的版本变化:
注:即使对于Fixed,Parent2 也与 Child2 相关联。因为当父项进行换版时,它自动关联子项的最新可用版本。在本例中,由于之前创建了Child2,因此Parent2 指向Child2,而不是指向 Child1。
2.设置“生命周期状态”的对象行为后,版本变化规则,如下图所示,关系类型的Fixed 关系在 Float 生命周期状态下的作用类似于 Float,而 Float 关系在 Fixed 生命周期状态下的作用类似于 Fixed:
3.当关系类型的对象行为设置为“强制固定”或“强制浮动”时,它将覆盖生命周期状态的对象行为。如下图,无论生命周期状态如何设置,Hard Fixed 行为都充当 Fixed,而 Hard Float 都充当 Float:
4.如果关系类型的对象行为未设置为“Hard”类型,当生命周期状态发生变化,且前后两种生命周期状态的对象行为不同时,下图展示了当Parent1处于一种状态而Parent2处于另一种生命周期状态时会发生什么情况:
5.如果“生命周期”状态的对象行为设置为“Hard Float”或“Hard Fixed”,它将覆盖后续状态的对象行为,直到周期结束。如果您的生命周期图的状态在“已发布”之后,例如“已过期”或“已废弃”,则此功能特别有用。最有可能的是,一旦某个项目达到“已发布”状态,会希望强制固定其行为,以便其配置保持不变,即使该项目被提升为“已过时”或“已取代”。
6.综上所述,对象行为的优先级为:Hard Float或Hard Fixed>float 或者Fixed;Life Cycle State>RelationshipType,Hard类型的Relaitonship Type>普通的Life Cycle State.