تمثيل خطوات الطلب بإستخدام State Machine
بعض الانتقالات مسموحة في مرحلة معينة ومرفوضة في مرحلة تانية فلا تعتمد على تغيير الحالة مباشرة
المثال بإستخدام Python 3 لتوضيح الفكرة ويمكن تطبيق نفس المبدأ في لغات تانية
المثال العملي
allowed = {
'draft': {'submitted'},
'submitted': {'approved', 'rejected'},
'approved': set(),
'rejected': set(),
}
def transition(current, target):
if target not in allowed[current]:
return current
return target
print(transition('draft', 'approved'))
print(transition('submitted', 'approved'))النتيجة
draft
approvedالانتقال المباشر من المسودة للموافقة اترفض بينما الطلب المرسل يقدر ينتقل للموافقة
جرب بنفسك
أضف حالة cancelled وحدد بنفسك المراحل اللي تسمح بالانتقال ليها