コミュニケーション図から状態機械の合成2 †例1では通信が全て非同期通信である場合の説明をしました.ここでは,同期通信が存在する場合の説明をします. 例題 †コレオグラフィを右図に示します. 例1とほぼ同じですが,shipReqが非同期メッセージから同期メッセージに変更になったので,Shippingからの返信メッセージがshipInfoからshipReqになっています. クラス図の作成 †例1同様にクラス図を作成します. コミュニケーション図の作成 †例1同様にコミュニケーション図を作成します. 右図のように3: shipReqの返信が 4:shipReq になっています. メッセージ間の順序関係を定義します.
状態機械の合成 †例1同様に状態機械を合成して下さい. 実行結果 †
例1の実行結果では,VendorはメッセージshipReqをshippingに送信し,その後shipInfoを受信していました. 今回合成された状態機械では,shippingのshipReq()を呼び出しています.
ShippingはshipReqを受信し,shipReqに返信しています. cbUMLでは,同期通信があると送信側の実行が停止します. この例では,Venderの状態V2内の初期疑似状態V7を持つ領域において,状態V8からV9への遷移(同期メッセージshipReqを送信している)において,この領域の実行が停止されます. ShippingがshipReqへの返信を送信し,Vendorが返信を受信すると,実行の停止が解除され,V9が活性状態となります. |