Theme
Primary Color

تمثيل خطوات الطلب بإستخدام 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 وحدد بنفسك المراحل اللي تسمح بالانتقال ليها

programming شرح