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

本文关键字:状态 转换 记录 NET 状态机 Stateless | 更新日期: 2023-09-27 17:54:57

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

用无状态触发日志记录的最佳位置是哪里?是否应该为每个State配置设置:

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

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

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

您可以使用将在每次转换时触发的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
}