الدروس · الدرس 4 من 5
«معتمد» تعني مجمَّداً
ماذا يكتب الإصدار فعلاً، وماذا يحمي التجميد وماذا لا يحمي، والطريق المشروع لتغيير مواصفة معتمدة.
الدرس 4 من 5 · 28 د
عمّا يدور هذا الدرس
في مكان ما بين صياغة المواصفة وقصّ القماش، على المواصفة أن تتوقّف عن الحركة. ويرسم هذا التطبيق ذلك الخطّ بحالة اسمها Released أي معتمد. وليست تسمية. فالضغط على الزرّ ينسخ الملف الفني كلّه إلى نسخة مخزَّنة ويقفل الحيّة. وهذا الدرس عمّا يغطّيه ذلك القفل فعلاً. ومعظم المفاجآت تأتي ممّن يتوقّعون منه تغطية أكثر ممّا يغطّي.
يضغط Harjit Sekhon على Release style في STY-204 في الأسبوع الثاني من مارس. وتُوضع طلبية Kilbraken بعد أسبوعين. وفي أبريل يطلب المشتري ريب ياقة أثقل، وكل ما في النصف الثاني من هذا الدرس يتبع ذلك.
الأساس. كل رسالة ومسمّى زرّ وسطر سجلّ وقاعدة يُقتبس هنا مقروء من مصدر التطبيق نفسه.
ماذا يكتب الإصدار
قبل أن يكتب شيئاً، يفحص إجراء الإصدار البوّابات. وتلك موضوع الدرس الخامس. افترض الآن أنها تنجح. وما يحدث بعدها أربع خطوات.
- يجمع التطبيق لقطة للملف الفني العامل كلّه. أي حقول رأس الموديل، وكل بند في القائمة، وإسقاط الإكسسوارات، والعمليات، والقياسات، والبناء، والأعمال الفنّية، والمواصفات الإضافية، وقائمة الاختبارات، والبطاقات، والألوان بحالات عيّنات صبغتها.
- يُدخل تلك اللقطة صفَّ النسخة التالية، ومعها الوقت والشخص الذي أصدر.
- يرفع رقم النسخة المعتمدة للموديل. فالموديل الذي لم يُصدَر قطّ يحمل صفراً، فيكون أول إصدار v1.
- يضبط الحالة على معتمد، وذلك ما يجمّد المواصفة الحيّة.
ثم يكتب سطراً واحداً في سجلّ النشاط. وعلى إصدار نظيف يقرأ: Status: Development → Released — spec frozen as v1.
ولوحة التأكيد قبل هذا كلّه تخبرك ثلاثة أشياء بكلمات صريحة. إنها تجمّد المواصفة بوصفها النسخة المعتمدة. وإنها تجعل الموديل متاحاً لوضعه على الطلبيات. وإنها مسجَّلة في سجلّ النشاط. تمسّك بالادّعاء الأوسط، لأن القسم الأخير من هذا الدرس يفحصه.
ماذا يقفل التجميد
للتجميد طبقتان. ويستحقّ الأمر معرفتهما، لأنهما تفشلان على نحوين مختلفين.
طبقة الخادم حارس يُشغّله كل إجراء يغيّر المواصفة قبل أي شيء. فإن كان الموديل معتمداً يرفض برسالة تسمّي النسخة وتسمّي الطريق للخارج: This style is Released (v1) and its spec is frozen. Start a new version to change it. وتلك هي الحدود الحقيقية. فالطلب الذي يتجاوز الشاشة يصطدم بها هي.
طبقة الشاشة تكتفي بألّا تعرض التعديل. فالملف الفني يُعرض في واحد من ثلاثة أوضاع: المحرّر، أو اللقطة للقراءة فقط، أو ملاحظة تجميد حين لا لقطة تُعرَض. والقاعدة أن كون السجلّ للقراءة فقط وحده يقرّر ألّا محرّر. ويسجّل المصدر السبب. فقد كان الحارس يشترط القراءة فقط مع وجود لقطة، فكان الموديل المجمَّد بلا لقطة ينزلق إلى المحرّر ويعرض زرّ إضافة يرفضه الخادم بعدها.
والأرشفة قفل مختلف برسالة مختلفة. فالموديل المؤرشَف يقول This style is archived — Restore it to make changes. والموديل في حالة نهائية يقول إنه مغلق ولا تغييرات أخرى. وكلاهما يخفت الإجراءات، ولا يبقى حيّاً إلا طريق إعادة التنشيط.
الطريق للخارج
على موديل معتمد يحمل الرأس زرّاً واحداً: Start a new version أي ابدأ نسخة جديدة. ولوحة تأكيده تفصّل أربع نتائج.
- تعيد فتح الموديل للتحرير بوصفه v2.
- كل ما في v1 مُرحَّل، ولا شيء يُفرَّغ.
- تبقى v1 مجمّدة، والطلبيات وأوراق التكلفة المبنية عليها من قبل لا تتغيّر.
- وحين تنتهي، أصدِر مرّة أخرى لتجميد v2.
وهذا ما تفعله آلياً، والفجوة بين القائمتين هي مقصد هذا الدرس.
فهي تعيد الحالة إلى Development. وذلك كل ما تفعله.
والترحيل تلقائي لأنه لا شيء يُرحَّل. فالجداول الحيّة ما زالت تحمل بالضبط ما أُخذت منه لقطة v1، وفكّ تجميدها يجعلها قابلة للتحرير مرّة أخرى. ولا وجود لصفّ نسخة ثانٍ بعد. فالموديل على v1، يحرّر مسوّدة ستصير v2 في المرّة التالية التي يصدر فيها أحدهم. والرأس يقول ذلك — Editing v2 — draft (carried forward from v1) — وسجلّ النشاط يسجّل Started new version — editing v2 (carried forward from the last release).
اللقطة سجلّ لا درع
والآن النصف المخالف للحدس.
اقرأ النقطة الثانية من لوحة التأكيد تلك مرّة أخرى: تبقى v1 مجمّدة، والطلبيات وأوراق التكلفة المبنية عليها من قبل لا تتغيّر. الشقّ الأول صحيح تماماً. فاللقطة المخزَّنة غير قابلة للتغيير، وهي مدرجة تحت التاريخ، ويمكن إعادة طبعها وحدها.
أما الشقّ الثاني فيحتاج انتباهاً، لأن كل ما عداه في التطبيق يقرأ الجداول الحيّة. فالقائمة والمقاسات وأقسام الملف الفني وورقة التكلفة المعيارية للموديل كلّها مشتقّة من الصفوف الحالية في كل مرّة تُجمَع. ولا نسخة.
فخلال الأسابيع التي يجلس فيها STY-204 مفتوحاً مسوّدةَ v2 وفيه ريب أثقل، تعرض ورقة التكلفة المعيارية على الموديل سعر الريب الأثقل. وهي لا تريك ما وُضعت الطلبية عليه. بل تريك كم يكلّف الموديل اليوم. وذلك سؤال آخر ومفيد أيضاً، لكن فقط إن كنت تعرف أيّهما تقرأ.
والذي لا يتحرّك فعلاً هو ورقة تكلفة مخزَّنة. فورقة تكلفة عرض سعر محفوظة تحتفظ بمدخلاتها هي، فيبقى العرض الذي أرسلته هو العرض الذي أرسلته. وتلك حماية آتية من عرض السعر لا من تجميد الموديل.
وحدٌّ أمين واحد على إعادة الطبع تلك. فـمواصفة الورقة المطبوعة تأتي من اللقطة المجمّدة. أما الاعتمادات والصور وكتلة التكلفة على الورقة نفسها فتُقرأ حالية، لأن تلك عملية لا مواصفة. فإعادة طبع v1 مواصفةُ v1 على صفحة تعرض أيضاً اعتمادات اليوم. اقرأ عنوان النسخة في الأعلى واعرف أي نصف هو أيّهما.
ساعتان، ولا واحدة منهما تُدير الأخرى
ثمّة نظام نسخ ثانٍ في الوحدة نفسها، والخلط بينهما شائع.
نسخة الموديل هي v1 وv2 وv3. تتجمّد عند الإصدار، وتلتقط الملف الفني كلّه، وهي ما يعدّده قسم التاريخ.
ومراجعة القائمة هي Rev A وB وC. وBOM هي قائمة المواد، وهذه المراجعة تخصّ القائمة وحدها. واحدة منها حالية، والقائمة تقرأها افتراضاً. وإنشاء مراجعة جديدة يستنسخ كل بند إلى الأمام إلى الحرف الجديد، فلا شيء يبقى فارغاً، ويضع الخارجة في حالة معتمدة فتتوقّف عن قبول التحرير. وتستطيع أيضاً إعادة مراجعة أقدم إلى الحالة الحالية، وتلك هي طريقة الاستعادة.
| نسخة الموديل | مراجعة القائمة | |
|---|---|---|
| المسمّى | v1 وv2 وv3 | Rev A وB وC |
| تغطّي | الملف الفني كلّه | قائمة المواد وحدها |
| يُنشئها | إصدار الموديل | إنشاء مراجعة جديدة باليد |
| عند الإنشاء | تلتقط المواصفة الحالية | تستنسخ كل بند إلى الحرف الجديد |
| تجمّد | المواصفة الحيّة كلّها، عبر الحالة | المراجعة السابقة |
وهما لا يتكلّمان معاً. فإصدار موديل لا يُنشئ مراجعة قائمة. وإنشاء مراجعة قائمة لا يُنشئ نسخة موديل، ولا يغيّر حالة الموديل. وتُنشأ المراجعة الأولى، Rev A، بهدوء أول مرّة يحتاجها شيء، وتُتبنّى فيها أي سطور سائبة.
الادّعاء الجدير بأن تفحصه بنفسك
تحمل قائمة الموديلات سطراً واحداً يشرح ما هذه الوحدة له، وأحد شقوقه ادّعاء عن قاعدة. يقول إن الموديل يجب أن يكون معتمداً قبل أن يمكن وضعه على طلبية. ولوحة تأكيد الإصدار تقول شيئاً قريباً: أن الإصدار يجعل الموديل متاحاً لوضعه على الطلبيات.
اذهب وانظر إلى شاشة الطلبية الجديدة.
يعرض منتقي الموديل كل موديل غير مؤرشَف، ويطبع حالة كلٍّ منها داخل الخيار، على صورة الاسم ثم الرمز ثم الحالة. ولا مرشِّح على المعتمد، والإجراء خلف النموذج يحلّ الموديل بمعرّفه دون فحص حالته. وتستطيع أيضاً كتابة اسم موديل غير موجود، فيُنشَأ.
فالموديل في «قيد التطوير» يمكن وضعه على طلبية اليوم. والذي يوقفك لاحقاً في موضع آخر، وهو حقيقي. فمقياس جاهزية الطلبية يعامل الموديل المطوَّر شرطاً صارماً لمرحلة Ready to cut أي الجاهزية للقصّ. وحتى ذلك الحين تُخطَّط الطلبية وتُسعَّر وتجلس بلا شكوى.
قابل ذلك بموضع يرشّح فيه التطبيق فعلاً. فمنتقي «إعادة طلب لـ…» في قمع إنشاء الموديل لا يعرض إلا الموديلات المعتمدة، والمصدر يقول لماذا. فمسوّدة «قيد التطوير» فارغة كانت ستُستنسخ إلى شبح، بلا شيء مُرحَّل. شاشة ترشّح لأن نسخ موديل فارغ لا ينتج شيئاً. وأخرى لا ترشّح، لأن وضع موديل غير مكتمل على طلبية عمل مشروع في وقت مبكّر.
وكلا السلوكين له وجه. أما جملة صفحة القائمة فهي الجزء غير المتّسق، وهي بالضبط نوع السطر الذي يطلب منك هذا المساق فحصه بدل تصديقه.
اختبر فهمكالموديل STY-204 معتمد عند v1 ومفتوح من جديد لمسوّدة v2. تسأل Meher أي مواصفة ينبغي أن يقصّ المصنع عليها الطلبية ORD-1310. أين تنظر وبماذا تجيبها؟أظهر الإجابة
اطبع v1 من قسم التاريخ، واقصص عليها. فالشاشات الحيّة تعرض مسوّدة v2. إذ يقرأ كل قسم في الملف الفني الجداول الحيّة، ولا نسخة للمواصفة على مستوى الطلبية. فالقائمة والقياسات على الشاشة هما مسوّدة الريب الأثقل لا ما وُضعت الطلبية عليه. وتحذيران مع المطبوعة. عنوان النسخة في الأعلى هو ما يقول لك أي مواصفة تمسك، فأبقِه على الصفحة. والاعتمادات والصور وكتلة التكلفة على تلك الورقة حالية لا مجمّدة، فعامل المواصفة وحدها على أنها v1. وإن كان المشتري قد قبل التغيير فعلاً، فالجواب الأنظف أن تُنهي v2 وتُصدرها قبل أن يبدأ الخطّ، فتتّفق المواصفة الحيّة وتعليمة القصّ من جديد.
اختبر فهمكيحاجّ زميل بأن بدء نسخة جديدة خطر وأن على الفريق بدلاً من ذلك أرشفة الموديل القديم وإنشاء موديل جديد لكل تغيير. اعرض أقوى صيغة لحجّته ثم أجب عنها.أظهر الإجابة
حجّته حقيقية. فالموديل الجديد يأخذ رمزاً جديداً، فلا يمكن الخلط بشيء، ولا يستطيع أحد تحرير سجلّ الموسم الماضي ولو سهواً. ويستطيع الجميع رؤية أي سجلّ هو أيّهما بنظرة. والجواب أن ذلك يرمي الشيئين اللذين وُجد النسخ لهما. أولاً السجلّ. فسلسلة النسخ تقول إن هذا الثوب تغيّر بهذه الطرق، بينما رمزان لموديلين لا يقولان شيئاً عن علاقتهما، ومنتقي إعادة الطلب وعرض تباين التكلفة وسجلّ النشاط كلّها تجلس على سجلّ واحد. وثانياً الترحيل. فبدء نسخة يبقي كل صفّ، بينما الموديل الجديد يبدأ من لا شيء ويعيد أحدهم كتابة قائمة وشبكة مقاسات، ومن هناك تأتي الأخطاء. وثمّة مانع عملي أيضاً: فالموديل الذي عليه طلبيات نشطة لا يمكن أرشفته البتّة، والرفض يسمّي الطلبيات. استعمل موديلاً جديداً حين يكون ثوباً مختلفاً فعلاً. واستعمل نسخة حين يكون الثوب نفسه وقد تغيّر.
موجّه · تمرين على الإصدار، بما في ذلك ما لن يحميه
قبل الضغط على الإصدار مباشرةً، ومرّة أخرى قبل إعادة فتح موهذهل معتمد.
اليسِ بي على ما يوشك إصدار هذا الموهذهل في MerchandiserOS أن يفعله، وما لن يفعله. سأخبرك: حالة الموهذهل الحالية ورقم نسخته المعتمدة، وهل تسمّيه طلبية بالفعل، وهل حُفظت ورقة تكلفة عرض سعر علماذا، وماذا تعرض قائمة فحص الإصدار. أولاً الآلية. قل لي بكلمات صريحة ماذا يكتب الضغط على الزرّ: لقطة للملف الفني كلّه بوصفها النسخة التالية، ورقم نسخة مرفوعاً، وتغيير حالة يجمّد المواصفة الحيّة، وسطراً واحداً في سجلّ النشاط. وقل لي ماذا سيقول سطر النشاط إن كانت هناك تنبيهات على البيانات معلَّقة. ثانياً التجميد. عدّد ما لن أستطيع تحريره بعد ذلك، وسمِّ الطريق الليسروع الوحيد للرجوع — بدء نسخة جهذهدة. وقل لي ماذا يفعل بدء نسخة جهذهدة. ثم قل لي، والأهمّ، ماذا لا يفعل. فهو يعيد الحالة إلى «قيد التطوير». ولا يظهر صفّ نسخة ثانٍ حتى أصدر مرّة أخرى. ولا يتحرّك حرف مراجعة القائمة. ثالثاً، وهذا ما سأنساه. قل لي أي الشاشات تظلّ تقرأ الجداول الحيّة ما دام موهذهل معتمد مفتوحاً من جهذهد، لأعرف أن ورقة التكلفة المعيارية للموهذهل ستعرض مسوّدتي لا ما وُضعت الطلبية علماذا. وقل لي ما الذي يثبت فعلاً ولماذا. رابعاً، اسألني سؤالاً واحداً قبل أن ننتهي: هل هذا الثوب نفسه وقد تغيّر، أم ثوب مختلف؟ فإن كان مختلفاً فالموهذهل الجهذهد هو الجواب الصحيح والنسخة ليست كذلك. وقاعدتان. لا تقل لي إن الإصدار آمن. بل قل لي ماذا يجمّد وماذا يترك متحرّكاً ومَن في الأسفل يعتمد على أيّهما.
قد يخطئ الذكاء الاصطناعي — تحقّق من أي شيء ستتصرّف بناءً عليه.