描述活动图中的决策

时间:2013-02-27 14:35:25

标签: uml activity-diagram

HY

我如何在UML活动图中描述这一点?

最新(earliest_start_date,Earliest(latest_start_date,start_date))

这意味着:从latest_start_date和start_date中选择最早的,并使用earliest_start_date,如果它稍后是上一个决定的结果。 我用钻石尝试过,但我想我还需要更多。

我希望你能帮助我

感谢。

1 个答案:

答案 0 :(得分:1)

最复杂的部分是决策节点将所接收的令牌(即“值”)传递给所选边缘,然后您需要根据执行的分支明确表示值已更改。如果您将start_date建模为对象流(其中start_date的值流过图表)并且earliest_start_datelatest_start_date是范围内变量或常量,则可以将操作表示为:

enter image description here

(注意我假设earliest<latest以简化分支) 上部“菱形”是决策节点。根据每条边的括号之间给出的分支(即条件),选择三个分支中的一个。较低的菱形是合并节点(备选执行路径相遇)。在守卫的表示法中,我假设<运算符适用于start_date的类型。

另一种方法是编写代表操作的转换。在这种情况下,ActionState2的输入将是转换的结果,其中start_dateActionState1的输出。

enter image description here

第三种方法是将操作编写为执行此类计算的操作的后置条件(即,对操作附加了刻板印象«postcondition»的约束)。

如果LatestEarliest被定义为模型中的函数,则后置条件为:

result = Latest (earliest_start_date, 
                  Earliest (latest_start_date, start_date))

enter image description here

如果start_date的类型定义minmax,则后置条件可以写为:

result = min(Set{latest_start_date, 
             max(Set{earliest_start_date,start_date})});

(即由a组成的集合的最小值)) - latest_start_date,b)由earliest_start_date和start_date组成的集合的最大值。

如果为<的类型定义start_date运算符,则后置条件为:

result = if start_date<earliest_start_date 
            then earliest_start_date 
            else 
              if start_data>latest_start_date 
                then latest_start_date 
                else start_date
              endif
          endif

您也可以将其表示为ConditionalNode(一个结构化的活动节点,从一些选项中选择一个),但没有为ConditionalNodes定义标准符号。