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ž
- Z úložiště se načetla novější verze stavu.
- Událost vyvolaná touto instancí byla úspěšně zapsána do úložiště.
- 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.