如何在Stateless(.NET状态机库)中记录状态转换

Edg*_*oks 10 c# stateless-state-machine

我想有一个登录我工作流状态转换的数据库.

使用Stateless触发日志记录的最佳位置在哪里?是否应为每个州配置进行设置:

phoneCall.Configure(State.Connected)
    .OnEntry(() => StartCallTimer())
    .OnEntry(() => Log());
Run Code Online (Sandbox Code Playgroud)

或者有一些方法可以为整个工作流程集中定义一次?

欢迎提供这方面的任何其他意见.

Geo*_*der 15

您可以使用OnTransitioned将在每次转换时触发的触发器作为中央日志记录工具.

_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
}
Run Code Online (Sandbox Code Playgroud)