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]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS