2016-07-04 31 views
7

İş akışımın durum geçişleri veritabanında oturum açmak istiyorum.Durum geçişleri Durum bilgisi (.NET durum makine kitaplığı) nasıl kaydedilir

Stateless ile günlüğe kaydetmeyi tetikleyen en iyi yer neresidir?

phoneCall.Configure(State.Connected) 
    .OnEntry(() => StartCallTimer()) 
    .OnEntry(() => Log()); 

veya bir kez tüm iş akışı için merkezi olarak tanımlamak için bir yol vardır: her Devlet yapılandırması için set-up mıdır?

Bu konuda başka herhangi bir girdi memnuniyetle karşılanır.

cevap

10

Her geçişte merkezi günlüğe kaydetme özelliği olarak tetiklenecek olan OnTransitioned tetikleyicisini kullanabilirsiniz.

_stateMachine.OnTransitioned(OnTransitionedAction); 

void OnTransitionedAction(StateMachine<StateEnum, TriggerEnum>.Transition transition) { 
    TriggerEnum trigger = transition.Trigger; 
    StateEnum source = transition.Source; 
    StateEnum dest = transition.Destination; 
    // log trigger, source, destination 
} 
+0

Bunu ilk başta görmedim çünkü bu bir yükseltilmiş etkinlik değildi. – granadaCoder