TL;DR

システムで起こったことの記録。常に過去形で記述され、多くの場合、新しい活動(ワークフロー)を引き起こすトリガーになる。

仕組み

Martin Fowler は、ドメインイベントを「ドメインに影響する、何か興味深いことの記憶をとらえたもの」と説明している。要点は、アプリケーションの状態を変えるきっかけになるものを捕まえることにある。システムへの入力をドメインイベントの流れとして通せば、すべての入力の記録を残せる。このとき、元になるイベントのデータは不変にしておき、システムがそれに応じて行ったことを記録する処理側のデータだけを可変にする。英語版 Wikipedia では、ドメイン駆動設計におけるドメインイベントを、ドメインエキスパートが関心を持つイベントとしている。

注意点

Fowler によると、システムへの刺激をドメインイベントで捕まえるかどうかは大きな判断で、アプリケーションに独特のアーキテクチャのスタイルを課す。その代わりに、システムがおかしな状態になったとき、そこに至るまでの入力の完全なログが手に入る。ドメインイベントは、イベントソーシングに欠かせないパターンでもある。

関連

出典