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