海
我如何在 UML 活动图中描述这一点?
最新(earliest_start_date,最早(latest_start_date,start_date))
这意味着:从 latest_start_date 和 start_date 中选择最早的,如果它晚于上一个决定的结果,则使用 early_start_date。我用钻石试过了,但我想我需要更多。
我希望你能帮帮我
谢谢。
海
我如何在 UML 活动图中描述这一点?
最新(earliest_start_date,最早(latest_start_date,start_date))
这意味着:从 latest_start_date 和 start_date 中选择最早的,如果它晚于上一个决定的结果,则使用 early_start_date。我用钻石试过了,但我想我需要更多。
我希望你能帮帮我
谢谢。
最复杂的部分是决策节点将它们收到的令牌(即“值”)传递给所选边缘,然后您需要明确表明该值已根据执行的分支而改变。如果您将建模start_date
为对象流(其中start_date
流过图表的值)并且earliest_start_date
是latest_start_date
范围内的变量或常量,您可以将操作表示为:
(注意,我假设earliest<latest
为了简化分支)上面的“菱形”是一个决策节点。三个分支中的一个被选择,这取决于在每个边的括号之间给出的分支(即条件)。下面的菱形是一个合并节点(替代执行路径相遇的地方)。在守卫的符号中,我假设<
运算符适用于 start_date 的类型。
另一种方法是编写一个表示操作的转换。在这种情况下, 的输入ActionState2
将是转换的结果,其中start_date
是 的输出ActionState1
。
第三种方法是将操作编写为执行此类计算的操作的后置条件(即,将构造型«postcondition»
附加到操作的约束)。
如果Latest
和Earliest
被定义为模型中的函数,则后置条件为:
result = Latest (earliest_start_date,
Earliest (latest_start_date, start_date))
如果start_date
定义了min
and的类型max
,则后置条件可以写成:
result = min(Set{latest_start_date,
max(Set{earliest_start_date,start_date})});
(即a) latest_start_date 组成的集合的最小值,b) early_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 定义标准符号。