Version: 0.7.4

「状態」(State)

ステートは、アクタ モードでアクタ オブジェクトの現在のデータ表現を表します。Claptrap は、単にこの上に制限を追加:"State はイベント トレーサビリティでのみ更新できます" です。イベントのトレーサビリティの信頼性により、Claptrap の State の信頼性も向上します。

State のバージョン番号#

Claptrap の State には、State の現在のバージョンを表す Version という名前のプロパティがあります。バージョン番号は 0 から始まる自己増加数で、イベントが処理されるたびに自己増加します。

バージョン番号 0 の State は、Claptrap の初期状態であり、ジェネシス状態とも呼ばれています。初期状態は、ビジネス ニーズに合わせてカスタマイズできます。

Claptrap と Minion には、バージョン番号の処理にもいくつかの違いがあります。

Claptrap の場合、Claptrap はイベントのプロデューサーであるため、イベントのバージョン番号自体は Claptrap によって割り当てされます。たとえば、イベントの処理中に、次の処理が順番に発生します:

  1. State Version = 1000
  2. Version = State Version + 1 = 1001 の Event の処理を開始します
  3. Event が処理され、State Version = 1001 が更新されます

Minion の場合、これは Claptrap イベントのコンシューマーです。したがって、バージョン番号の処理は若干異なります。たとえば、イベントの処理中に、次のイベントが順番に発生します:

  1. State Version = 1000
  2. Event Version が 1001 のイベントが読み取られます
  3. Event が処理され、State Version = 1001 が更新されます

State のバージョン番号と Event のバージョン番号は相互依存しており、相互に検証され、イベントの順序付けの鍵となります。処理中に State のバージョン番号と Event のバージョン番号が一致しない場合は、深刻な問題になります。通常、バージョン番号の不一致が発生し、次の 2 つのケース:

  1. 永続化レイヤー内のイベントが失われました
  2. フレームワークの悪性バグ

ICON#

claptrap