前页 后页

条件节点

条件结构化活动节点与“ If-Then-Else”编程构造的建模等效项。最简单地说,它包含一个子句,其中包含:

  • 评估条件的测试分区,以及
  • 如果满足测试条件,则执行一个或多个操作的主体分区
您可以有多个子句,因此,如果不满足“测试”条件,则将忽略其“正文”,然后处理移至下一个子句并评估另一个“测试”条件。

每个子句都有一个“决策者” ActionPin来保存测试的结果,以及一个“正文输出” ActionPin来保存正文的动作(如果执行)的结果。条件节点本身具有结果ActionPin,该结果可提供节点的整体结果(要执行的第一个Body的输出)。

活动图上条件节点的表示类似于以下内容:

A UML Conditional Activity Node showing Test and Body regions.

通过将其他“活动图”元素从“工具箱”页面拖动到元素的适当分区中,并根据需要链接和组织结构,可以定义条件节点。元素在分区的左上角对齐,以便调整节点的大小可保持分区内部和分区之间的结构组织。如果尝试将节点缩小到结构尺寸以下,则该节点将自动默认为“最适合”尺寸。

创建条件节点时,将显示“属性”对话框。您可以像完成任何其他元素一样完成许多工作。但是,对于条件节点,您还将显示“属性”窗口,该窗口具有附加的“条件”选项卡。

在此选项卡的“结果”面板中,添加一个操作销钉以保存该节点的结果,然后单击“添加”按钮以显示“选择销钉”对话框。

条件节点自动包含一个包含测试分区和主体分区的子句,以及决策者引脚和主体输出引脚。您可以根据需要添加其他条款。对于每个子句,为决策者和主体输出添加一个操作销。单击保存按钮以保存条款定义。

“选择引脚”对话框仅显示适合上下文的输出引脚。如果所需的操作销不存在,则可以单击对话框上的“添加新”按钮以在相应的父节点下自动创建输出销。

对于“结果”和“正文输出”条目,您可以通过右键单击条目并选择“在项目浏览器中查找”选项来检查每个操作销的确切位置。

默认情况下,“节点”面板列出了“测试”分区中包含的“动作和活动”。单击“身体”单选按钮以列出“身体”分区中包含的元素。元素必须完全包含在Body分区中才能在此处列出-如果元素与Test分区有任何重叠,则将其视为Test分区的一部分。

添加或删除条款

要添加另一个条款,请单击“条款”列表下方的“添加”按钮。这将在列表中插入新的子句,并标识哪个是前一个(前任)子句,以及(如果适用)是后一个(后继)子句。清除“子句”面板中的其余字段,以便您可以添加决策器和主体输出操作引脚。新的“测试”和“正文”分区将立即添加到该图上的元素,并且您可以使用“活动”元素填充这些分区,然后在“节点”面板中进行标识。

要删除条款,请在列表中突出显示该条款,然后单击“删除”按钮。这将立即从图中删除子句的相应分区,以及它们包含的所有Activity元素。从另外两个子句中删除一个子句会调整数字顺序;例如,如果从第1条到第3条之间删除了第2条,则第3条重命名为第2条,并且任何其他第3条也都上移了一位。

OMG UML规范:

OMG UML规范( UML上层结构规范,v2.1.1,第355页)指出:

条件节点是一个结构化活动节点,它代表一些替代方案中的唯一选择。

条件节点由一个或多个子句组成。每个子句都包含一个测试部分和一个主体部分。当条件节点开始执行时,将执行子句的测试部分。如果一个或多个测试部分产生一个真值,则将执行相应的主体部分之一。如果一个以上的测试部分产生一个真值,则仅执行一个主体部分。除非指定了子句的测试顺序,否则该选择是不确定的。如果没有测试节产生真实值,则不执行任何主体节;如果需要条件节点的输出值,则这可能是语义错误。