Notifications
Często wygodne jest, aby mieć możliwość reagowania na zmiany stanu. Wszystkie wywołania zwrotne podlegają "gwarancjom opartym na Orleanskolei; zobacz również sekcję dotyczącą gwarancji współbieżności.
Śledzenie potwierdzonego stanu
Aby otrzymywać powiadomienia o wszelkich zmianach w potwierdzonym stanie, JournaledGrain<TGrainState,TEventBase> podklasy mogą zastąpić tę metodę:
protected override void OnStateChanged()
{
// read state and/or event log and take appropriate action
}
OnStateChanged
jest wywoływany za każdym razem, gdy zostanie zaktualizowany potwierdzony stan, tj. liczba wersji się zwiększa. Może się tak zdarzyć, gdy
- Nowsza wersja stanu została załadowana z magazynu.
- Zdarzenie zgłoszone przez to wystąpienie zostało pomyślnie zapisane w magazynie.
- Komunikat powiadomienia został odebrany z innego wystąpienia.
Należy pamiętać, że ponieważ wszystkie ziarna początkowo mają wersję zero, dopóki początkowe obciążenie magazynu nie zostanie ukończone, oznacza to, że OnStateChanged() jest wywoływany za każdym razem, gdy początkowe obciążenie zakończy się z wersją większą niż zero.
Śledzenie stanu wstępnie wstępnie
Aby otrzymywać powiadomienia o wszelkich zmianach w stanie wstępnym, JournaledGrain
podklasy mogą zastąpić tę metodę:
protected override void OnTentativeStateChanged()
{
// read state and/or events and take appropriate action
}
OnTentativeStateChanged() jest wywoływany za każdym razem, gdy stan wstępny ulegnie zmianie, tj. jeśli zmienia się połączona sekwencja (ConfirmedEvents + UnconfirmedEvents). W szczególności wywołanie zwrotne OnTentativeStateChanged()
zawsze odbywa się podczas .RaiseEvent