上一页 下一页

条件节点

条件结构化活动节点是“If-Then-Else”编程结构的建模等价物。最简单的是,它包含一个包含以下内容的子句:

  • 用于评估条件的测试分区
  • Body分区,如果满足Test条件,则执行一个或多个操作

您可以拥有多个Clause,这样如果不满足Test条件,则忽略其Body并处理移至下一个Clause并评估另一个Test条件。

每个子句都有一个“Decider”ActionPin来保存测试结果,一个“Body Output”ActionPin用于保存Body的动作结果(如果执行)。条件节点本身有一个结果ActionPin,它使Node的整体结果可用(要执行的第一个Body的输出)。

活动图上的条件节点的表示类似于:

您可以通过将其他活动图元素从“工具箱”页面拖动到元素的相应分区中来定义条件节点,并根据需要链接和组织结构。元素在分区的左上方对齐,因此调整节点大小可以维护分区内和分区之间的结构组织。如果您尝试将节点缩小到结构大小以下,则节点会自动默认为“最适合”大小。

创建条件节点时,将显示元素“属性”对话框。您可以完成其中任何其他元素的大部分内容。但是,对于条件节点,还会显示“元素属性”窗口,该窗口还有一个“条件”选项卡。

在此选项卡上的“结果”面板中,添加一个动作引脚以保存节点的结果,单击“ 添加”按钮以显示“选择引脚”对话框。

条件节点自动包含一个Clause,其中包含一个Test分区和一个Body分区,以及一个Decider Pin和Body Output Pin。您可以根据需要添加更多条款。对于每个子句,您可以为Decider和Body Output添加一个Action Pin。单击“ 保存”按钮以保存“子句”定义。

“选择引脚”对话框仅显示适合上下文的输出引脚。如果所需的Action Pin尚不存在,则可以单击对话框上的Add New按钮,在相应的父节点下自动创建Output引脚。

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

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

添加或删除子句

要添加另一个Clause,请单击“Clause(s)”列表下方的Add按钮这将在列表中插入一个新的子句,并标识前面的(前任)子句和(如果适用)哪个是以下(后续)子句。“Clause(s)”面板中的其余字段将被清除,以便您可以添加Decider和Body Output Action Pins。New Test和Body分区会立即添加到图表上的元素中,您可以使用Activity元素填充这些分区,然后在“节点”面板中对其进行标识。

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

OMG UML规范

OMG UML规范(UML上部结构规范,v2.1.1,p.355)规定:

条件节点是结构化活动节点,表示一些替代方案中的排他性选择。

条件节点由一个或多个子句组成。每个子句由测试部分和正文部分组成。当条件节点开始执行时,执行子句的测试部分。如果一个或多个测试部分产生真值,则将执行相应的主体部分之一。如果多个测试部分产生真值,则只执行一个主体部分。除非指定了条款的测试顺序,否则选择是不确定的。如果没有测试部分产生真值,则不执行主体部分; 如果期望从条件节点输出值,则这可能是语义错误。