12

I would like to have a log in database of state transitions of my workflow.

Where is the best place to trigger logging with Stateless? Should it be set-up for each State configuration :

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

or there is some way to define it centrally for whole workflow once?

Any other input in this regard is welcome.

Edgars Pivovarenoks
  • 1,526
  • 1
  • 17
  • 31

1 Answers1

19

You can use the OnTransitioned trigger that will be fired on every transition as central logging facility.

_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
}
Georg Patscheider
  • 9,357
  • 1
  • 26
  • 36