Как регистрировать переходы состояний в Stateless (библиотека конечных автоматов.NET)
Я хотел бы иметь журнал в базе данных переходов между состояниями моего рабочего процесса.
Где лучше всего запустить регистрацию с помощью Stateless? Должен ли он быть настроен для каждой конфигурации состояний:
phoneCall.Configure(State.Connected)
.OnEntry(() => StartCallTimer())
.OnEntry(() => Log());
или есть какой-то способ определить его централизованно для всего рабочего процесса один раз?
Любой другой вклад в этом отношении приветствуется.
1 ответ
Решение
Вы можете использовать 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
}