.NET 오프 소스 - stateless 라이브러리

  • 유한 상태 머신을 쉽게 구현해 주는 라이브러리.
  • 닷넷 코어 지원.
  • Export to DOT graph 지원으로 상태 머신 구조를 이미지로 출력한다.
  • async/await 지원.
  • 공식
var phoneCall = new StateMachine<State, Trigger>(State.OffHook);

phoneCall.Configure(State.OffHook)
    .Permit(Trigger.CallDialed, State.Ringing);
	
phoneCall.Configure(State.Ringing)
    .Permit(Trigger.HungUp, State.OffHook)
    .Permit(Trigger.CallConnected, State.Connected);
 
phoneCall.Configure(State.Connected)
    .OnEntry(() => StartCallTimer())
    .OnExit(() => StopCallTimer())
    .Permit(Trigger.LeftMessage, State.OffHook)
    .Permit(Trigger.HungUp, State.OffHook)
    .Permit(Trigger.PlacedOnHold, State.OnHold);

// ...

phoneCall.Fire(Trigger.CallDialled);
Assert.AreEqual(State.Ringing, phoneCall.State);

이 글은 2019-12-20에 작성되었습니다.