Skip to main content

استخدم هذه الصفحة قبل كتابة تعبير نموذج

يقيّم كل تعبير نموذج في KayanOS ضمن سياق: النموذج وقيمه المحفوظة أو الجارية والعنصر الحالي في شجرة النموذج ومعرفات الجلسة/العضو المختارة. قد يكون التعبير نفسه صالحاً في حقل وفارغاً أو مضللاً في آخر لأن السياق مختلف. استخدم هذا المرجع للقيم الافتراضية والرؤية وقابلية التحرير والتحقق والقيم المحسوبة ونص الإجراء وتعبيرات منشئ النموذج الأخرى. يصف القيم التي يكشفها منشئ النموذج؛ ولا يمنح وصولاً ولا يحول شرط رؤية إلى تفويض ولا يجعل البحث آمناً لمشارك عام. للصياغة وكتالوج الدوال الكامل، راجع بنية لغة التعبيرات وتعبيرات النماذج وعمليات البحث. سياق منشئ النماذج في KayanOS لنموذج طلب خدمة مواطن.

حدد أولاً موضع تقييم التعبير

قبل نسخ تعبير، حدد الأجزاء الأربعة لسياقه: يعرض المنشئ أشكال سياق ممثلة لمساعدة كتابة التعبير. ليست هذه الأشكال معاينة لبيانات الإنتاج ولا يجوز استخدامها للاستنتاج أن حقلاً أو نتيجة محدد أو سجلاً متاح لكل مشارك وقت التشغيل.

جذور ومعرفات مستوى النموذج

يكشف السياق المشترك الجذور والمعرفات الثابتة التالية: استخدم $form.submissionNumber عندما ينبغي أن يسمي التعبير رقم التقديم المخصص للعرض صراحةً. وهو ليس sessionId الداخلي، ولا يوجد اسم submissionNumber في جذر السياق. ليست $ جذراً سحرياً لقاعدة البيانات. تبدأ بمتغيرات النموذج وتضم أبناء النموذج العلويين المكشوفين في السياق المشترك. المتغير قيمة مباشرة، أما مفتاح الحقل فيحل إلى كائن الحقل المكشوف؛ استخدم .value لقراءة الإجابة المحفوظة. يجب الوصول إلى قيمة مكرر متداخل عبر سياق العنصر/الأب المحلي بدلاً من افتراض أنها قيمة عليا.
يمكن أن يظهر ذلك تذكيراً داخلياً قصيراً للعضو، لكنه لا يجوز أن يفوض قراراً منظماً أو يكشف بيانات لمشارك عام.

العنصر الحالي واختصارات الشجرة

لكل عنصر موضع في شجرة النموذج. يمنح KayanOS العنصر اختصارات محلية حتى لا يحتاج التعبير إلى مسار هش عبر النموذج كله. استخدم قيمة أخ لتطبيق شرط محلي؛ فهذا أوضح وأكثر أماناً من الاعتماد على مسار طويل هش.
إذا كان يمكن أن يغيب requires_inspection، عالج النتيجة صراحةً بدلاً من معاملة الخطأ/الفراغ كاعتماد.
يحافظ المنشئ أيضاً على مسارات العناصر مثل مسارات الأبناء ومثيلات المكرر لبناء السياق والإكمال التلقائي. عاملها كوسائل تنقل للمنشئ لا كعقد تكامل عام أو بديل لمفتاح الحقل.

القيم حسب نوع الحقل

يوفر محرر التعبير أشكالاً ممثلة حتى يرى المنشئ السلوك المتوقع للعنصر. تظل القيمة المحفوظة الفعلية مرتبطة بإعداد الحقل وإدخال المستخدم. بالنسبة لحقل اختيار متعدد، اختبر سلوك القائمة الفعلي بدلاً من نسخ مقارنة اختيار مفرد:
استخدم الدالة فقط عندما تكون مدرجة لسياق النموذج. قد يعرض محرر التعبير دالة عامة يحظرها مدقق عدم الاتصال أو وقت التشغيل.

كائنات العناصر المكشوفة والقوائم المتداخلة

يطابق الإكمال التلقائي كائنات النموذج العامة التي تستخدمها التعبيرات. يكشف كل عنصر key وpath ومميّز فئته في type (مثل field أوsection)؛ ويكشف الحقل نوع الإدخال المحدد في fieldType، إضافة إلى title وtooltip وvalue وdefaultValue وeditable وrequired وvalidation وisValid وindex. تضيف حقول الاختيار selectionType وoptions وأحد record أوrecords. يضيف حقل المال currency، ويضيف حقل الملف multiple وaccept وmaxSizeBytes. تكشف الأقسام title وdescription وeditable وchildren وindex وisValid. وتكشف المكررات repeaterTitle وminRepeat وmaxRepeat وrequestedRepeat وactualRepeat وinstances وrepeatType وisValid؛ كما تكشف مكررات الأقسام layoutMode وtableResponsiveMode وtableColumns. تكشف الإجراءات title وdescription وclickable وloading وactionType وisValid وcalls. ولا تظهر خصائص نوع الإجراء مثل linkTarget وdocxFieldKey إلا عندما يدعمها الإجراء. تستخدم اقتراحات القوائم عنصراً ممثلاً واحداً حتى تكشف الكتابة بعد محدد قائمة مثل .signatures[. أو.instances[. خصائص العنصر. هذا العنصر عينة لبيانات الإكمال التلقائي، وليس دليلاً على أن القائمة الحية غير فارغة.

كائن التوقيع

يكشف عنصر التوقيع حالة التوقيع الحالية والمتجاوزة: يكشف كل ملخص توقيع id وrequestId وruleKey وmemberId وresolution وstatus وnotes وreason وsigningCapacity وsignedAt وsymbolicSignature وsymbolicSignatureHash وstale. عامل signingCapacity وsymbolicSignature كحمولتي دليل يمكن أن يتطور تركيبهما الداخلي؛ ولا تكتب قواعد سياسة تعتمد على حقول متداخلة غير موثقة.
تعني النتيجة الفارغة عدم وجود توقيع حالي مطابق. ولا تعني أن توقيعاً قديماً ما زال حالياً، أو أن المتطلبات السابقة تحققت، أو أن المشارك مخول بالاعتماد.

المكررات: يتغير السياق لكل مثيل

استخدم مكرراً عندما يحتاج طلب خدمة المواطن عدداً متغيراً من الملاحظات أو المستندات أو صفوف المعاينة. يملك كل مثيل قيمه المحلية. ينبغي أن تستخدم قاعدة داخل صف ملاحظة قيمة/إخوة ذلك الصف لا قيمة على مستوى الطلب تشترك في تسمية عرضاً.

المكررات التي يتحكم بها المستخدم

في المكرر الذي يتحكم به المستخدم يضيف العضو أو المشارك مثيلات ويحذفها ضمن الحدود المضبوطة. تعرف $index موضع المثيل الحالي لعبارة مثل «الملاحظة 2»؛ وليست معرف سجل ثابتاً وقد تتغير إذا أعيد ترتيب الصفوف أو حذفت.
تحقق من القيم الفعلية في كل مثيل. لا يجوز لعدد التكرار وحده أن يقرر أهلية الطلب للاعتماد.

مكررات وضع الحلقة

في مكرر وضع الحلقة تتوفر $item لعنصر المصدر و$index لموضعه. استخدم بديلاً مراجعاً لخاصية اختيارية.
اختبر العنصر الأول وعنصراً لاحقاً وعنصر مصدر فارغاً وغياب عناصر المصدر. لا تفترض وجود $item في مكرر يتحكم فيه المستخدم.

قاعدة محلية بسيطة

في ملاحظة متكررة، اجعل الملاحظة مطلوبة فقط عندما يعلّم الصف الحالي غير آمن:
اختبر حالات آمن وغير آمن وغائب وصف أول وصف لاحق وصف مضاف حديثاً. يغير تعبير الرؤية أو الإلزام تجربة النموذج؛ وتبقى سياسة الخادم مسؤولة عن قرار الانتقال/الاعتماد النهائي.

النماذج العادية وغير المتصلة

النماذج غير المتصلة نوع نموذج مقيد، وليست نماذج عادية مؤجلة حتى الاتصال. يعطل المنشئ فيها الإجراءات والمتغيرات وحقول اختيار الكيان وحقول اختيار جلسة النموذج ومصادر الخيارات المعتمدة على الكيان والروابط العامة وروابط التعبئة المسبقة، كما يحظر دوال التعبير المعتمدة على البيانات/الصلاحيات. لصيغة معاينة غير متصلة اجعل التعبيرات محلية وحتمية:
لا تستخدم بحث النموذج أو دوال الصلاحية أو كياناً/جلسة مختارة شرطاً يجعل الإرسال غير المتصل صالحاً. راجع النماذج دون اتصال لسلوك الحزم والملفات المحلية والمزامنة، وتعبيرات النماذج وعمليات البحث لدوال البحث/الصلاحيات المحظورة.

توجيه الجلسة إلى دور عند كيان

نطاق الدور الديناميكي عنصر توجيه على مستوى النموذج. يحل دوراً وكياناً عند حفظ جلسة نموذج عادي. اضبط الدور ورمز التوجيه في حقلين منفصلين. على سبيل المثال:
  • مفتاح الدور: printing_manager
  • نوع النطاق: locations
  • رمز التوجيه: $.location.value
يجب أن ينتمي الكيان الذي يعيده رمز التوجيه إلى نوع النطاق. يمكن للرمز استخدام حقول النموذج الأخرى وإرجاع مرجع كيان مؤهل واحد أو مصفوفة مراجع أو null. تستمر النماذج الحالية التي تستخدم roleScope(roleKey, entityId) في العمل، لكن عناصر التوجيه الجديدة لا تحتاج إلى هذه الدالة.
  • تعني null «لا يوجد توجيه» وهي نتيجة صالحة.
  • يمنع المسار غير الفارغ الحفظ إذا كان الدور أو الكيان غير موجود، أو تابعاً لمؤسسة أخرى، أو لا يطابق نوع النطاق.
  • يربط التوجيه الجلسة بدور عند كيان؛ ولا يمنح أفعال العرض في القائمة أو الفتح أو التحديث أو الحذف أو الإجراءات.
  • يحتفظ الدور الفارغ بقائمة الجلسات الموجهة إليه. لا يعاد كتابة سجل جلسة أو عضو عند إسناد عضو إلى الدور لاحقاً.
  • معاينة المنشئ تشخيصية فقط. يعيد الخادم حل المسار والتحقق منه قبل حفظه.
  • لا تدعم النماذج غير المتصلة نطاقات الأدوار الديناميكية.
يستخدم كل فعل نموذج مفعّل في صلاحيات الدور وضع ربط واحداً. يمنح نطاق الكيان الفعل لجلسات ذلك النموذج ضمن نطاق الكيان المختار. ويمنحه الدور عند الكيان فقط لجلسات ذلك النموذج الموجهة إلى هذا الدور عند ذلك الكيان. عندما يدعم النموذج الوضعين، اختر الوضع المقصود لكل فعل؛ ولا يدمج الوضعان.

ابنِ واختبر قاعدة تعتمد على السياق

استخدم بروتوكول الاختبار الصغير القابل للتكرار التالي:
  1. صغ القرار بلغة عادية: «اعرض تفاصيل المعاينة عندما تكون requires_inspection صحيحة في هذا الطلب».
  2. ضع القاعدة على الحقل/القسم الذي يملك القرار، لا على عنصر بعيد.
  3. استخدم أصغر جذر محلي أو مرجع أخ يعبر عنها.
  4. اختبر جلسات عضو وعام إذا كان النموذج يدعم كليهما، وأكد أنهما يريان الفرق غير الحساس المقصود فقط.
  5. اختبر الغياب/null وfalse وtrue ومثيل المكرر الأول/اللاحق وجلسة محفوظة/معاد فتحها.
  6. اختبر إجراء الخادم أو الإرسال المقابل، وتحقق من بقاء الفاعل غير المخول مرفوضاً حتى إن فرض قيمة على العميل.
  7. للنماذج غير المتصلة، شغّل المدقق غير المتصل واختبر إرسالة متزامنة حقيقية قبل النشر.

أخطاء شائعة

أدلة ذات صلة