القرار التصميمي الأساسي في تطبيقات الميدان
يجب أن يكتب التطبيق البيانات على الجهاز أولًا ثمّ يرسلها إلى الخادم لاحقًا. فالمستخدم لا يفكّر في وجود الاتصال من عدمه؛ يكتمل السجلّ محلّيًا لحظة إدخاله، وتجري المزامنة في الخلفية. وبالنسبة إلى الفرق العاملة في المستودعات أو الطوابق السفلية أو المناطق الريفية، هذا ليس ميزة بل قرار أساسي. وتفصيل المعمارية في دليل التصميم القائم على العمل دون اتصال.
ماذا نفعل؟
- تطوير تطبيقات iOS وAndroid (أصلية أو متعدّدة المنصّات)
- قاعدة بيانات محلّية وطابور عمليات صادرة دائم وعامل مزامنة
- قواعد لحلّ التعارض على مستوى كلّ حقل
- تكامل قراءة الباركود ورمز QR والكاميرا والتوقيع والموقع
- عمليات النشر في المتاجر وفرض تحديث الإصدار وتتبّع الأخطاء
- التحقّق من الهوية المؤسسية وإنهاء الجلسة عن بُعد عند فقدان الجهاز
قاعدة التعارض تُكتب في بداية المشروع
يُحدَّد لكلّ حقل ما الذي يحدث حين يعدّل جهازان السجلّ نفسه دون اتصال: الدمج في الحقول المستقلّة، وفوز آخر من كتب في الحقول غير الحرجة، وسلطة الخادم مع سؤال المستخدم في الحقول ذات الأثر المالي (السعر، الخصم، مبلغ التحصيل). أمّا اختيار استراتيجية واحدة للجدول كلّه فيُنتج إمّا فقدان بيانات وإمّا تنبيهات لا لزوم لها.
نمنع تكوّن السجلّات المكرّرة
عند ضعف الاتصال يصل الطلب لكنّ الردّ يضيع؛ فيعيد التطبيق المحاولة وينشأ طلبان على الخادم. لذلك نرسل كلّ عملية بمفتاح فريد يُولَّد على الجهاز، وحين يرى الخادم المفتاح نفسه مرّة ثانية يعيد النتيجة الأولى.
بيانات الموقع والخصوصية
موقع الموظّف بيانات شخصية. لذلك نجمع الموقع على أساس الأحداث مثل بداية الزيارة ونهايتها، لا كأثر متواصل؛ وندرج في التصميم غرضَ الجمع ومدّةَ الحفظ وما يراه الموظّف نفسه.
الأسئلة الشائعة
أنختار التطوير الأصلي أم متعدّد المنصّات؟
يتفوّق التطوير الأصلي في السيناريوهات كثيفة الاعتماد على العتاد، مثل قراءة الباركود المتواصلة وتتبّع الموقع في الخلفية والكاميرا منخفضة زمن الاستجابة. أمّا في تطبيقات الميدان التي تغلب عليها النماذج والقوائم، فيتيح التطوير متعدّد المنصّات النشر في المتجرين بقاعدة شيفرة واحدة.
هل يلزم تشفير البيانات المحلّية؟
يلزم إذا كان الجهاز يحتفظ ببيانات العملاء أو الأسعار أو التحصيل. كما ينبغي التخطيط لقدرة إنهاء الجلسة عن بُعد ومسح البيانات المحلّية عند فقدان الجهاز.
كيف تُعرَض حالة المزامنة للمستخدم؟
على مستوى كلّ سجلّ: قيد الانتظار، أُرسل، اعتُمد. أمّا مؤشّر «تمّت المزامنة» العام الواحد فيُخفي حالات الفشل الجزئي.