Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to log state transitions in Stateless (.NET state machine library)

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.

like image 320
Edgars Pivovarenoks Avatar asked Jul 04 '16 07:07

Edgars Pivovarenoks


1 Answers

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
}
like image 80
Georg Patscheider Avatar answered Nov 13 '22 20:11

Georg Patscheider