bbv.Common.StateMachine
lớp là mã máy trạng thái tốt nhất mà tôi từng thấy. Nhưng nó thiếu một điều: nhận trạng thái hiện tại.Cách nhận trạng thái hiện tại từ lớp bbv.Common.StateMachine (hiện tại là Appccelerate.StateMachine)?
Đây là một hệ thống theo dõi thứ tự:
fsm = new ActiveStateMachine<States, Events>();
fsm.In(States.OrderCreated)
.On(Events.Submitted)
.Goto(States.WaitingForApproval);
fsm.In(States.WaitingForApproval)
.On(Events.Reject)
.Goto(States.Rejected);
fsm.In(States.WaitingForApproval)
.On(Events.Approve)
.Goto(States.BeingProcessed);
fsm.In(States.BeingProcessed)
.On(Events.ProcessFinished)
.Goto(States.SentByMail);
fsm.In(States.SentByMail)
.On(Events.Deliver)
.Goto(States.Delivered);
fsm.Initialize(States.OrderCreated);
fsm.Start();
fsm.Fire(Events.Submitted);
// Save this state to database
Bạn có thể xem làm thế nào nó hoạt động một cách dễ dàng.
Nhưng tôi muốn lưu trạng thái đơn đặt hàng trong cơ sở dữ liệu. Vì vậy, tôi sẽ có thể hiển thị trong đó nhà nước là thứ tự.
Tôi cần một phương pháp
fsm.GetCurrentState()
//show this state in the a table
. Trên thực tế có một cách: Tôi có thể sử dụng ExecuteOnEntry
và thay đổi giá trị cục bộ trên mỗi mục nhập của tiểu bang. Nhưng nó sẽ là cồng kềnh để viết ExecuteOnEntry
cho mọi tiểu bang bởi vì tôi sẽ lặp lại bản thân mình!
Phải có cách tinh tế để thực hiện.
Did bạn biết rằng bbv.Common đã được đổi tên thành Appccelerate. Hãy xem trang chủ mới của chúng tôi http://www.appccelerate.com –