ドメイン駆動設計の勉強をするために、仮想のシナリオ、業務を用意してドメインモデルの作成やロバストネス図の作成をしてみました。
まずは作ってみることを優先したので、正しい文法で図が描けているかどうかはひとまず置いておきました。
シナリオ概要
自社商品をインターネット経由で注文を受けて販売・配送する会社。
顧客から注文された品物を物流センターで梱包し、発送する。
複数の注文をまとめて発送する。(ロットで発送する)
業務の流れ
顧客がECサイトにアクセスする。
顧客が購入したい商品をカートに入れる。
顧客は注文確認画面で購入したい商品を選択している事を確認し、注文を確定する。
注文が確定されると、システムにより購入された商品の在庫が引当られる。
在庫引当が完了後、システムにより売掛金が計上される。
在庫引当が完了後、システムから商品が保管されている倉庫に出荷指示が出される。
出荷指示と同時に、システムから物流センターに配送指示が出される。
倉庫オペレーターは、出荷指示確認画面を見て出荷する商品を確認し、物流センターに送る。
物流センターオペレーターは倉庫から出荷された商品が届いたら、出荷品受領画面から商品を受領した旨を登録する。
物流センターオペレーターは、配送準備画面を確認し、配送する商品を確認して配送準備を行う。
物流センターオペレーターは、配送準備が完了した後、運送会社に配送依頼をする。
経理担当者は、クレジットカード会社からの入金情報を元に売掛金の消込を行う。
補足
- ECサイトはクレジットカード決済のみとする
- 物流センターからの配送はすべて外部の運送会社に依頼している
- 顧客は個人も法人も存在する
ドメインモデル
ロバストネス図
コントロールはアクターからのリクエストを受け付けるものとドメインを表すものに分けています。
一旦、ドメインが持つ複数の振る舞いをひとつのコントロールにまとめました。