2013-02-27 47 views
1

Hy描述活動圖中的決定

我該如何在UML活動圖中描述這一點?

最新(earliest_start_date,早到(latest_start_date,起始日期))

,這意味着:從latest_start_date和起始日期最早,如果以後再之前的判決結果使用earliest_start_date。 我嘗試了鑽石,但我想我需要更多一點。

希望你能幫幫我

謝謝。

+0

什麼是latest_start_date和earliest_start_date?常量?變量?輸入參數? 將start_date建模爲變量還是作爲對象流? – Javier 2013-02-27 15:50:15

+1

這些都是常量 – 2013-02-27 15:59:46

+0

是否需要最早的<最新的,或可能不是這樣的? – Javier 2013-02-27 16:03:29

回答

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(即選擇一箇中的一些數目的替代品的一個結構化的活動節點),但是沒有爲條件節點定義的標準符號。