إعادة المعالجة والأدوات
في هذا المجلد أدوات الإنقاذ: السكربتات والأدوات التي تعيد بناء الكميات والتكاليف وأرصدة الأستاذ وأعمار الديون لقاعدة بيانات صارت أرقامها خاطئة بالفعل. وهي ليست صيانة، ولا روتيناً، ولا واحدة منها أول رد على مشكلة.
اقرأ هذا قبل أن تشغّل شيئاً هنا
المستند الواحد الذي يبدو غريباً ليس سبباً لإعادة بناء قاعدة بيانات أبداً. فالمستند الواحد الذي لا أثر محاسبي أو مخزني له يُصلَح من شاشة طلبات الأعمال — تجد طلبه، وتقرأ سبب فشله، وتعالج السبب، ثم تعيد معالجة ذلك الطلب وحده.
أما أدوات هذه الصفحات فتفرّغ جداول كاملة وتعيد بناءها. وعلى قاعدة كبيرة تستغرق إعادة البناء الكاملة أياماً، والنظام معطّل طوال ذلك، ولا رجعة فيها. فقبل أن تبدأ أياً منها: خذ نسخة احتياطية، واتفق على وقت التوقف مع العميل، وأوقف خادم التطبيق حيث تقول الصفحة ذلك.
من أين تبدأ، حسب العَرَض
| ما تراه | اذهب إلى |
|---|---|
| مستند واحد بلا قيد في الأستاذ أو بلا أثر مخزني | طلبات الأعمال — لا هذا المجلد |
| أرصدة الأصناف أو تكاليفها خاطئة في مستندات كثيرة | إعادة معالجة الكميات والتكاليف وأعمار المخزون |
| أرصدة الحسابات أو أعمار ديون العملاء/الموردين خاطئة | إعادة معالجة الأستاذ وأعمار الديون |
| تشك أن ثمة خطأ ولا تستطيع تسميته بعد | استعلامات الكشف عن مشاكل التكلفة والكميات |
| المشكلة داخل وحدة بعينها | أدوات تلك الوحدة — المخزون أو التصنيع أو الأصول الثابتة أو العقارات، أدناه |
| قائمة معروفة من السجلات يجب إعادة اعتمادها أو حذفها أو إعادة إرسالها أو تصديرها | أدوات تعمل على دفعة سجلات من ملف |
| الملكية أو حالة الإيجار أو حالة الموظف أو أرصدة الأجازات أو حالة السيارة أو قيم الأصول تختلف عن المستندات | إعادة بناء قيود النظام في الوحدات |
| الموافقات المعلقة تعرض سجلات منتهية أو محذوفة، أو ملخصاً قديماً | أدوات إصلاح الموافقات |
| موقع خرج عن التوافق مع المركز الرئيسي | أدوات النسخ المتطابق |
| كل شيء صحيح لكن البطء شديد | اقتراح Indexes لجداول التفاصيل الكبيرة |
| قاعدة البيانات أكبر مما ينبغي، أو ظهر لفريق الدعم خطأ حرج عن أعمدة مراجع بطول 255 بايت أو فهارس أصل | أدوات حجم قاعدة البيانات والفهارس |
| تعرف ما الذي تريد فعله لكن لا تعرف أي أداة تفعله | دليل الأدوات المساعدة |
ترتيب العمل
- اقرأ قبل أن تكتب. ابدأ بالاستعلامات التشخيصية، فهي تُخبر ولا تغيّر شيئاً، وتكشف لك اتساع المشكلة حقاً.
- أصلح أضيق ما يفسّرها. طلب أعمال فاشل، أو مستند واحد، أو محدد واحد.
- أعِد بناء منطقة واحدة — الكميات والتكلفة، أو الأستاذ، أو جداول وحدة بعينها — ولا تفعل إلا بعد أن تعرف أن الخلل فيها.
- وإعادة البناء الكاملة آخر شيء، ومعها نسخة احتياطية ووقت متفق عليه وخادم موقَف.
فإذا لم تفسّر الخطوة الأولى العَرَض، فتلك لحظة التصعيد لا لحظة توسيع دائرة الضرر.
دليل الأدوات المساعدة
أكثر الأدوات استخداماً مجمّعة أيضاً في صفحة واحدة على السيرفر، لكل أداة وصف وزر يفتحها، مقسّمة إلى أقسام مرقمة. افتحها من آخر قسم في utils.html؛ راجع دليل الأدوات المساعدة.
روابط التشغيل في هذه الصفحات
كثير من الأدوات في هذه الصفحات تُشغَّل من رابط لا من قائمة. ويظهر كل منها كنموذج صغير: خانة لكل مُدخل من مُدخلات الأداة، والرابط الجاهز تحتها، وزرّان بجانبه — نسخ، الذي ينسخ الرابط كما هو، وإظهار عنوان الخادم (أيقونة العين)، الذي يفتح خانة تكتب فيها عنوان خادم العميل. ويُعاد بناء الرابط أثناء الكتابة، ويحفظ المتصفح العنوان الذي أدخلته لكل روابط التشغيل في الموقع، فتضبطه مرة لكل خادم لا مرة لكل صفحة.
بناء رابط التشغيل يدوياً
في مصدر الصفحة (ملف markdown) يظهر كل رابط تشغيل كوسم <UtilityLinkBuilder> فيه className، وأحياناً قائمة :params، وفي بعضها :gui="true". والرابط الذي يعرضه يُبنى دائماً بالطريقة نفسها، فتستطيع كتابته بنفسك من المصدر:
<server address>/utils?util=<className>-<value 1>,<value 2>,<id>=<value>&gui=true- عنوان الخادم — عنوان نظام العميل حتى
/erpضمناً، مثلhttp://localhost:8080/erpعلى الخادم نفسه. className— يُنسخ كما هو في الوسم تماماً.- القيم — علامة
-، ثم قيم قائمة:paramsمفصولة بفواصل,: أولاً كل مُدخل ليس لهidبقيمته وحدها وبترتيب القائمة، ثم كل مُدخل لهidبالشكلid=value. استعمل القيمةdefaultما لم تحتج حالة العميل غيرها. والقيمة الفارغة تُحذف، وإن لم تبقَ قيم حُذفت علامة-أيضاً. وكل ما بعد أول-يصل إلى الأداة كما هو، فيجوز أن تحتوي القيمة على-(أكواد موظفين مثلE001-E002-E003) ولا يجوز أن تحتوي على فاصلة. &gui=true— تُضاف فقط إذا كان الوسم يحمل:gui="true".
افتح الرابط في متصفح سجّلت فيه الدخول إلى ذلك الخادم بمستخدم مدير، ويظهر رد الأداة صفحةً.
مثال: رابط إعادة الاعتماد من ملف (Recommit From File) في صفحة أدوات تعمل على دفعة سجلات من ملف مكتوب هكذا:
className="com.namasoft.erp.gui.server.RecommitFromFile"
:params="[
{ title: 'Main File', default: 'e:/rc/recommit.txt' },
{ title: 'Done File', default: 'e:/rc/done.txt' },
{ title: 'Errors File', default: 'e:/rc/errors.txt' }
]" :gui = "true"ورابطه بالقيم الافتراضية:
http://localhost:8080/erp/utils?util=com.namasoft.erp.gui.server.RecommitFromFile-e:/rc/recommit.txt,e:/rc/done.txt,e:/rc/errors.txt&gui=trueوالمُدخل الذي له id مثل { title: 'Types To Process File', default: 'e:/rc/toProcessTypes.txt', id:'file' } يصير -file=e:/rc/toProcessTypes.txt، ورابط التشغيل الذي ليس له :params هو <server address>/utils?util=<className> فقط.