RIGHT:[[English>Synthesis2(Eng)]] ** コミュニケーション図から状態機械の合成2 [#qbf41a3f] #ref(purchaseordercol2.png,right,around) [[例1>コミュニケーション図から状態機械の合成]]では通信が全て非同期通信である場合の説明をしました.ここでは,同期通信が存在する場合の説明をします. [[例1>Synthesis(Jpn)]]では通信が全て非同期通信である場合の説明をしました.ここでは,同期通信が存在する場合の説明をします. *** 例題 [#e873c495] コレオグラフィを右図に示します. [[例1>コミュニケーション図から状態機械の合成]]とほぼ同じですが,shipReqが非同期メッセージから同期メッセージに変更になったので,Shippingからの返信メッセージがshipInfoからshipReqになっています. [[例1>Synthesis(Jpn)]]とほぼ同じですが,shipReqが非同期メッセージから同期メッセージに変更になったので,Shippingからの返信メッセージがshipInfoからshipReqになっています. *** クラス図の作成 [#pe69aaa6] [[例1>コミュニケーション図から状態機械の合成]]同様にクラス図を作成します. [[例1>Synthesis(Jpn)]]同様にクラス図を作成します. *** コミュニケーション図の作成 [#t120ba7a] #ref(communicationDiagram.png,right,around) [[例1>コミュニケーション図から状態機械の合成]]同様にコミュニケーション図を作成します. [[例1>Synthesis(Jpn)]]同様にコミュニケーション図を作成します. 右図のように3: shipReqの返信が 4:shipReq になっています. メッセージ間の順序関係を定義します. - 4:shipReqへの先行メッセージとして shipReq を文書欄に登録して下さい. - 2:orderReply, 6:shipType, 9:shipScheduleへの先行メッセージとしては rep_shipReq を登録して下さい.接頭語 rep_ は同期メッセージの返信メッセージを表します. *** 状態機械の合成 [#r100e3cd] [[例1>コミュニケーション図から状態機械の合成]]同様に状態機械を合成して下さい. [[例1>Synthesis(Jpn)]]同様に状態機械を合成して下さい. *** 実行結果 [#tba5403c] - Vendorの状態機械 [[例1>コミュニケーション図から状態機械の合成]]の実行結果では,VendorはメッセージshipReqをshippingに送信し,その後shipInfoを受信していました. [[例1>Synthesis(Jpn)]]の実行結果では,VendorはメッセージshipReqをshippingに送信し,その後shipInfoを受信していました. 今回合成された状態機械では,shippingのshipReq()を呼び出しています. #ref(stateMachine_vendor_sync.png,center) - Shippingの状態機械 ShippingはshipReqを受信し,shipReqに返信しています. #ref(stateMachine_shipping_sync.png,center) cbUMLでは,同期通信があると送信側の実行が停止します. この例では,Venderの状態V2内の初期疑似状態V7を持つ領域において,状態V8からV9への遷移(同期メッセージshipReqを送信している)において,この領域の実行が停止されます. ShippingがshipReqへの返信を送信し,Vendorが返信を受信すると,実行の停止が解除され,V9が活性状態となります. RIGHT:[[CSCB]]