الدروس · الدرس 4 من 5
الرمز ربط لا تسمية
كيف يرقّم MerchandiserOS كل نوع سجلّ، وماذا يضمن الرمز وماذا لا يضمن، وأيّ الأعمدة تحمل رمزاً وأيّها تحمل تسمية، ولماذا التصفير قرار يُتّخذ مرة واحدة.
الدرس 4 من 5 · 20 د
ثلاثة أنواع من المفاتيح على سجلّ واحد
رمز السجلّ يبدو تسمية على بطاقة. وليس كذلك. فجداول أخرى تمسك به، والتقارير تجمع بحسبه. وتغييره تغيير بيانات لا تغيير مظهر. وهذا الدرس عن اختيار نظام ترقيم قبل وجود أول سجلّ.
افتح مشترياً في Riche Terre ترَ اثنين من معرّفاته الثلاثة. BUY-104 مطبوع في الأعلى. ورمزه في النظام المحاسبي، إن كان أحد قد ربط هذا المشتري ببرنامج محاسبة، يجلس على السجلّ مفتاحاً ثانياً يخصّ برمجية غيرنا. والثالث هو معرّف صفّ قاعدة البيانات، ولن تراه أبداً، وذلك مقصود.
والرمز المرئي كان يُشتقّ من معرّف الصفّ الخفي ذاك، وملاحظات التطبيق نفسه تشرح لماذا وجب أن يتغيّر ذلك. فالعدّاد الداخلي ينجو من مسح البيانات، فكانت مساحة عمل نُظّفت للتوّ تواصل العدّ من البيانات التجريبية التي لم تعد لديها. فخرج أول موديل لعميل جديد STY-138. والرموز الآن شيء قائم بذاته، له عدّاده، يُضبط لكل مساحة عمل على حدة.
كل شاشة وحقل وقاعدة تُذكر على هذه الصفحة قُرئت من التطبيق نفسه. وحيث تخالف الشاشة التي أمامك الصفحة، فالشاشة على حقّ والصفحة قديمة.
ثلاثة عشر عدّاداً
الإعدادات ← الترقيم على /settings/numbering يعرض كل نوع سجلّ مرقَّم، صفّاً لكلٍّ، ببادئته وتصفيره والرقم الذي سيأخذه السجلّ التالي. وعددها ثلاثة عشر.
| نوع السجلّ | الرمز الافتراضي |
|---|---|
| الموديلات | STY-101 |
| الطلبيات | ORD-1001 |
| أوامر الشراء | PO-1001 |
| طلبات الشراء | PR-1001 |
| إشعارات استلام البضاعة | GRN-1001 |
| المواد | MAT-201 |
| المورّدون | SUP-101 |
| المشترون | BUY-101 |
| عروض الأسعار | QUO-1001 |
| طلبات عروض الأسعار | RFQ-1001 |
| أوامر الإنتاج | PRD-1001 |
| الفحوص | INS-1001 |
| صرف المواد | ISS-1001 |
ثلاثة أشياء قابلة للتحرير في كل صفّ، ولكلٍّ حدّ تفرضه الشاشة.
- البادئة — من حرف إلى ثمانية أحرف أو أرقام، تُخزَّن بأحرف كبيرة. وما عدا ذلك يُرفض بالكلمات.
- التصفير — من صفر إلى ثمانية أرقام. والصفر يعني بلا تصفير إطلاقاً.
- الرقم التالي — واحد على الأقل، ويُرفض فوق مئة مليون لأنه أكبر من أن يكون حقيقياً.
وتذكر الشاشة عاقبة التحرير في جملة واحدة، وهي الجملة التي تُحفظ: تغيير النظام لا يعيد ترقيم السجلات الموجودة أبداً.
العدّاد ليس عدداً
طلب الرقم التالي جملة قاعدة بيانات واحدة. فالزيادة وقراءتها تحدثان معاً، فلا يمكن أن يُسلَّم شخصان ينشئان سجلّاً في اللحظة نفسها الرقم نفسه. تلك هي الضمانة.
والضمانة تسري في اتجاه واحد فقط. وملاحظة التطبيق نفسه على الآلية دقيقة: الإنشاء الفاشل يترك فجوة لا ضرر منها، لا تكراراً أبداً.
في Riche Terre أعلى رمز في مكتبة الموديلات هو STY-1043، وقائمة الموديلات تعرض 921 موديلاً. والموديلات تبدأ من STY-101، فـ 1,043 ناقص 101 زائد 1 يساوي 943 رمزاً مطلوباً مقابل 921 موديلاً حقيقياً. فـ اثنان وعشرون رقماً مفقودة في مكان ما في الوسط. وقضى Yashvin بعد ظهيرة يبحث عن اثنين وعشرين موديلاً ضائعاً لم يُنشأ قط.
ولا شيء خطأ. فالرمز بطاقة مطالبة لا إحصاء. وإن أردت معرفة كم موديلاً لديك، فعُدّ الموديلات.
التصفير قرار تتّخذه مرة واحدة
لم يغيّر Riche Terre ترقيم موديلاته قط. أخذ الافتراضي — بادئة STY وتصفير 0 وأول رمز STY-101 — وتركه ثلاث سنوات، وهو الشيء الذي يبدو معقولاً.
وبعد ثلاثمئة موديل في السنة تجاوزت المكتبة STY-999 ومضت إلى أربعة أرقام. ولم ينكسر شيء. ثم صدّر أحدهم قائمة الموديلات إلى جدول ورتّبها، فإذا بأحدث أربعة وأربعين موديلاً في الأعلى.
| موضع الترتيب | الرمز | ما هو |
|---|---|---|
| 1 | STY-1000 | الرمز التسعمئة المطلوب |
| 11 | STY-101 | أول رمز طُلب على الإطلاق |
| 22 | STY-102 | الثاني |
| 48 | STY-1043 | أحدث موديل في المكتبة |
| 943 | STY-999 | الرمز التاسع والتسعون بعد الثمانمئة |
اقرأ ذلك الجدول مرتين. فالرموز ذات الأربعة أرقام لا تجلس بعد ذوات الثلاثة، وهذا كان سيكون خطأً فحسب. بل هي تتداخل: عشرة رموز رباعية، ثم STY-101، ثم عشرة أخرى، ثم STY-102. فأحدث أربعة وأربعين موديلاً منثورة في أول ثمانية وأربعين صفّاً، وأقدم موديل في المبنى في المرتبة الحادية عشرة. والترتيب بالرمز لم يعد يرتّب بأي شيء.
والسبب حرف واحد. فبمقارنة STY-1000 بـ STY-101 كنصّ، تتطابق الأحرف الأربعة الأولى، ثم يلقى صفرٌ واحداً. والصفر هو الحرف الأدنى، ففاز STY-1000، ولا يُقرأ الرقم بعد الأرقام قط.
وضبط التصفير على أربعة الآن لا يساعد. فهو يغيّر شكل الرمز التالي، والرمز التالي رباعي أصلاً. ويترك STY-101 حتى STY-999 كما هي تماماً، لأن تغيير النظام لا يعيد ترقيم السجلات الموجودة أبداً، ولا يوجد إجراء إعادة ترقيم في أي مكان من التطبيق. فالرموز الثلاثية التسعة والتسعون بعد الثمانمئة دائمة.
ولو ضبط Yashvin التصفير على أربعة في اليوم الأول لكان أول رمز STY-0101. ولكان كل رمز منذئذ بعرض أربعة أحرف، ولبقي الترتيب النصّي ترتيباً زمنياً لتسعة آلاف موديل قادم. إنه لا يكلّف شيئاً في اليوم الأول، وفي اليوم الألف لا تستطيع استرجاعه.
ما الذي يرتبط بماذا فعلاً
القيمة المرجعية مخزَّنة على سجلّات، وهنا تكفّ إعادة التسمية عن كونها تجميلية. فقد اضطرّ التطبيق مرة إلى إصلاح مجموعة قيم مرجعية مكرّرة، وكان على الإصلاح أن يعرف بالضبط أيّ عمود يحمل ماذا. وتهيئته أوضح خريطة متاحة لكيفية عمل هذه الروابط حقاً.
| أين تُخزَّن القيمة | ماذا تحمل |
|---|---|
| وحدة المادة | الرمز، مثل kg |
| وحدة سطر قائمة المواد | الرمز |
| وحدة سطر الإكسسوارات | الرمز |
| وحدة أمر الشراء | الرمز |
| شروط الدفع لدى المورّد | الرمز، مثل NET_30 |
| نوع صنف الموديل | الرمز أو التسمية |
| نوع قماش الموديل | الرمز أو التسمية |
| نوع عيب الصالة | التسمية |
| نوع عيب الجودة | التسمية |
اقرأ الصفوف الثلاثة الأخيرة بعناية، فهي التي تُوقع الناس.
العيوب تُسجَّل بالتسمية. أعد تسمية غرزة متخطّاة إلى غرزات متخطّاة في الإعدادات، وكل عيب سُجّل قبل تلك اللحظة يظلّ يقول غرزة متخطّاة. فصارا الآن نصّين مختلفين، والتقرير الذي يجمع بحسب نوع العيب سيعرض صفّين حيث كان صفّ. ولا خطأ يقع. والرقم يُشطر ببساطة.
والموديلات أسوأ على نحو مثير. فالعمود يحمل أيّ الاثنين حدث أن أُنشئ به السجلّ. ولهذا يطابق إصلاح المكرّرات الاثنين، ولهذا يُبقي نوع القماش المضاف من داخل النموذج تسميته رمزاً له. وجعل الاثنين متطابقين هو السبيل الوحيد الموثوق للأمان أمام عمود قد يحمل أياً منهما.
إعادة التسمية التي عليها أن تصل إلى جدولين
المشترون هم الاستثناء الذي يُظهر القاعدة كما ينبغي، ويستحقّ المعرفة لأنك ستفعله.
الطلبية تخزّن أمرين عن مشتريها: معرّف سجلّ المشتري، وهو ربط حقيقي، واسم المشتري وقتها، وهو لقطة. واللقطة موجودة لأن التقارير تجمع بحسبها، ولأن قائمة الطلبيات عليها أن تعرض اسماً بلا فتح سجلّ ثانٍ.
فإعادة تسمية مشترٍ لا يمكن أن تكون تحديثاً واحداً. فحين يصير Cazaubon Mode هو Cazaubon Group، يكتب التطبيق جملتين دفعةً واحدة: اسم المشتري نفسه، واللقطة على كل طلبية تخصّ ذلك المشتري. وكان لدى Riche Terre إحدى وأربعون طلبية كهذه، وتتحرّك اللقطات الإحدى والأربعون معاً. ولا يمكن لانهيار بين الاثنتين أن يتركهما مختلفتين.
وتفصيل واحد في تلك الدفعة إغفال مقصود. فطوابع آخر تعديل على الطلبيات لا تُمسّ، لأن إعادة تسمية مشترٍ ليست تحرير طلبية. ولو حرّكتها لظهرت إحدى وأربعون طلبية على قائمة المتغيّر حديثاً عند أحدهم، ولكانت القائمة تكذب في وصف ما حدث.
هذا هو الدرس كله في تغيير واحد. الرمز ربط. واللقطة نسخة يجب إبقاؤها متوافقة. والطابع الزمني ادّعاء عمّا فعله أحدهم، ولهذا يرفض التطبيق إطلاق ادّعاء كاذب.
اختبر فهمكتجاوزت مكتبة موديلاتك للتوّ رمزها التاسع والتسعين بعد التسعمئة وكفّت القائمة المصدَّرة عن الترتيب المعقول. فتضبط التصفير على أربعة أرقام. ماذا أصلحت؟أظهر الإجابة
الرموز التي لم تُنشئها بعد وحدها، وتلك كانت رباعية العرض أصلاً، فأنت عملياً لم تصلح شيئاً. فتغيير النظام لا يعيد ترقيم السجلات الموجودة أبداً، ولا يوجد إجراء إعادة ترقيم في التطبيق. وكل رمز ثلاثي لديك يبقى ثلاثياً، وسيظلّ يقع في المكان الخطأ في كل ترتيب نصّي ما دام السجلّ موجوداً. وإعادة الترقيم لن تكون ترتيباً كذلك: فتلك الرموز مطبوعة على مستندات، ومقتبسة في رسائل، وتمسك بها سجلّات أخرى وأنظمة أخرى. الإصلاح كان متاحاً في اليوم الأول وليس متاحاً الآن.
موجّه · اختر ترقيم سجلّاتك قبل وجود أول سجلّ
في اليوم الأول لمساحة عمل جهذهدة، ولا مرة بعهذاا، لأنه لا يُلغى.
ساعدني في اختيار نظام ترقيم لكل نوع سجلّ في مساحة عملي، على أساس أن تغييره لاحقاً لا يعيد ترقيم أي شيء أُنشئ من قبل. لكل نوع سجلّ — الموهذهلات والطلبيات وأوامر الشراءء وطلبات الشراءء وإشعارات استلام البضاعة والمواد والمورّهذهن والليسترين وعروض الأسعار وطلبات عروض الأسعار وأوامر الأنتاج والفحوص وصرف المواد — اسألني ثلاثة أمور ثم أوصِ: ما البادئة التي يقولها موظفوني بأصواتهم أصلاً، وكم سجلّاً من هذا النوع أتوقّع إنشاءه في خمس سنوات، وهل سيكتب الرمز يوماً أحدٌ من خارج مصنعي. من إجاباتي، أوصِ ببادئة وبعرض حشو. وبرّر الحشو بحجم الخمس سنوات لا بالذوق، وأرني كيف تبدو الرموز مرتّبةً كنصّ في أول ذلك المدى ووسطه وآخره. وإن اخترت بلا حشو، فأرني صراحةً ماذا يحدث حين يتجاوز العدّ تسعة، ثم تسعة وتسعين، ثم تسعمئة وتسعة وتسعين، وأين تقع تلك الرموز في تصهذهر مرتّب. ثم قل لي ثلاثة أمور عمّا ليس الرمزُ إياه. ليس عدّاً، لأن إنشاءً فاشلاً قد يترك فجوة والنظام يضمن ألّا تكرار لا ألّا فجوات. وليس تسمية، لأن سجلّات أخرى وأنظمة أناس آخرين تمسك به. وليس خاصاً، لأنه سينتهي على مستند يقرؤه ليسترٍ. وأخيراً، اسألني إن كانت أيّ من سجلّاتي تحمل أيضاً رمزاً من نظام آخر كبرنامج محاسبة. فإن كان كذلك، فقل لي أن أُبقي ذلك الرمز في حقله الخاص بدل تشكيل رمزي ليطابقه، واشرح ما الذي ينكسر إن اضطررنا يوماً للتمييز بينهما. وقاعدة واحدة. لا توصِ بإعادة ترقيم شيء قائم. قل لي كم يكلّف ثم قل لي ألّا أفعل.
قد يخطئ الذكاء الاصطناعي — تحقّق من أي شيء ستتصرّف بناءً عليه.