فهم الـ state machines في Almadar
الـ state machines (أنظمة تتحكم بسلوك البرنامج عبر حالات محددة) هي جوهر Almadar. في هذا المقال، نستكشف لماذا اخترنا الـ state machines كأساس لسلوك التطبيق.
لماذا الـ state machines؟
غالباً ما تعاني تطبيقات الويب التقليدية من سلوك غير متوقع. قد ينفذ زر إجراءات مختلفة حسب حالة مخفية أو سباقات أو افتراضات مدفونة في الكود.
الـ state machines تحل هذا بجعل كل حالة ممكنة صريحة وكل transition مقصود.
تشريح state machine في Almadar
كل trait (خاصية سلوكية مرتبطة بالكيان) في Almadar تحتوي على state machine:
{
"name": "Toggleable",
"stateMachine": {
"states": [
{ "name": "off", "isInitial": true },
{ "name": "on" }
],
"transitions": [
{
"from": "off",
"event": "TOGGLE",
"to": "on",
"effects": [
["render-ui", "main", { "type": "toggle", "active": true }]
]
},
{
"from": "on",
"event": "TOGGLE",
"to": "off",
"effects": [
["render-ui", "main", { "type": "toggle", "active": false }]
]
}
]
}
}
المفاهيم الأساسية
الحالات
الحالات تمثل الأوضاع الممكنة لـ entity (الكيان/نموذج البيانات) الخاص بك. كل حالة صريحة ومسماة.
الأحداث
الأحداث تفعّل الـ transitions. يمكن أن تأتي من إجراءات المستخدم أو أحداث النظام أو orbitals أخرى.
الـ Transitions
الـ transitions (الانتقالات بين الحالات) تحدد كيف ينتقل الـ entity من حالة لأخرى. كل transition ممكن يحتوي على:
- guards (شروط حماية): شروط يجب أن تتحقق
- effects (نتائج): إجراءات تنفَّذ (تحديث الحقول، عرض الواجهة، إرسال أحداث)
الـ Effects
الـ effects هي side effects لـ transition. Almadar يدعم:
set- تحديث حقل الـ entityincrement/decrement- تعديل الأرقامrender-ui- عرض pattern واجهةemit- نشر أحداث لـ orbitals أخرىpersist- حفظ في قاعدة البياناتnavigate- تغيير المسارات
الفوائد
- التنبؤية: تعرف دائماً في أي حالة تطبيقك
- قابلية الاختبار: اختبر كل transition بشكل مستقل
- الأمان: الـ guards تمنع تغييرات الحالة غير المصرح بها
- تصحيح الأخطاء: سجل الحالة يجعل الأخطاء قابلة للتكرار
الخطوات التالية
هل أنت مستعد للبناء باستخدام state machines؟ اطلع على دليل البداية.
