bbv.Common.StateMachine
कक्षा मैंने कभी देखा है सबसे अच्छा राज्य मशीन कोड है। लेकिन इसमें केवल एक चीज नहीं है: वर्तमान स्थिति प्राप्त करना।bbv.Common.StateMachine (अब Appccelerate.StateMachine) कक्षा से वर्तमान स्थिति कैसे प्राप्त करें?
यह एक आदेश ट्रैकिंग प्रणाली है:
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
आप देख सकते हैं कि यह कैसे आसानी से काम करता है।
लेकिन मैं डेटाबेस में ऑर्डर स्थिति को सहेजना चाहता हूं। इसलिए मैं यह दिखाने में सक्षम हूं कि कौन सा राज्य आदेश है।
मैं एक
fsm.GetCurrentState()
//show this state in the a table
विधि की जरूरत है। असल में एक तरीका है: मैं ExecuteOnEntry
का उपयोग कर सकता हूं और प्रत्येक राज्य की प्रविष्टि पर स्थानीय मूल्य बदल सकता हूं। लेकिन प्रत्येक राज्य के लिए ExecuteOnEntry
लिखना बोझिल होगा क्योंकि मैं खुद को दोहरा दूंगा!
ऐसा करने का एक नाजुक तरीका होना चाहिए।
क्या करने के लिए आसान है आप जानते हैं कि bbv.Common का नाम बदलकर बदल दिया गया है। हमारा नया होमपेज देखें http://www.appccelerate.com –