Как регистрировать переходы состояний в 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
}
Другие вопросы по тегам