Sdílet prostřednictvím


Notifications

Často je vhodné mít možnost reagovat na změny stavu. Všechny zpětná volání podléhají zárukám založeným na Orleansturn; viz také část o zárukách souběžnosti.

Sledovat potvrzený stav

Aby bylo možné informovat o jakýchkoli změnách potvrzeného stavu, JournaledGrain<TGrainState,TEventBase> mohou podtřídy tuto metodu přepsat:

protected override void OnStateChanged()
{
   // read state and/or event log and take appropriate action
}

OnStateChanged je volána při každé aktualizaci potvrzeného stavu, tj. zvýšení počtu verzí. K tomu může dojít, když

  1. Z úložiště se načetla novější verze stavu.
  2. Událost vyvolaná touto instancí byla úspěšně zapsána do úložiště.
  3. Zpráva s oznámením byla přijata z nějaké jiné instance.

Všimněte si, že vzhledem k tomu, že všechna zrnka mají zpočátku nulu verze, dokud se počáteční zatížení z úložiště nekončí, znamená to, že OnStateChanged() se volá pokaždé, když se počáteční načtení dokončí s verzí větší než nula.

Sledovat nezávazný stav

Chcete-li být upozorněni na jakékoli změny nezávazného stavu, JournaledGrain mohou podtřídy přepsat tuto metodu:

protected override void OnTentativeStateChanged()
{
   // read state and/or events and take appropriate action
}

OnTentativeStateChanged() je volána vždy, když se nezávazně změní, tj. pokud se kombinovaná sekvence (ConfirmedEvents + UnconfirmedEvents) změní. Zejména zpětné volání, které se OnTentativeStateChanged() vždy děje během RaiseEvent.