كل المشاريع/DOCUMENT MANAGEMENT SYSTEM

نظرة عامة

كان عميلٌ مستقلٌّ في الولايات المتحدة يُعيد العملَ الكتابيّ نفسَه مرّةً بعد مرّة: بياناتُ الأفراد نفسُها، محفوظةً في جدول بيانات، تُطبَع باليد في نماذج PDF الحكوميّة نفسِها. فكلُّ نموذجٍ يطلب الحقائقَ القليلةَ ذاتها، وكلُّ نموذجٍ يطلبها بصياغته هو وبترتيبه هو.

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

وما يرفعها فوق دمج المراسلات هو شكلُ الهدف. فنموذج PDF الحكوميّ القابل للتعبئة ليس قالبًا بمواضعَ نائبةٍ مرتّبة — بل نموذجٌ سمّى حقولَه من بناه، لإنسانٍ يقرأ شاشة. والقرارُ الجديرُ بالنظر في هذا المشروع هو كيف تعبر الأداةُ تلك المسافة دون أن تطلب من أحدٍ نسخَ خريطة حقول، وأين تقف بصدقٍ عند حدّها.

التحدي

ثلاثةُ أمورٍ كانت تقف بين صفٍّ في جدول بيانات ونموذجٍ مُعبَّأ.

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

جدولُ البيانات ليس مِلكًا للأداة. فالسجلّات كانت تعيش أصلًا في مصنَّفٍ يفتحه الناسُ ويحرّرونه بأنفسهم. وأداةٌ تستوردها إلى قاعدة بياناتٍ خاصّةٍ بها كانت ستُنشئ نسخةً ثانيةً تبدأ من فورها في الانحراف عن الأولى، فوجب أن يبقى المصنَّفُ مصدرَ الحقيقة: يُقرأ منه ويُكتب فيه، لا يُستورَد.

وليست ملفّاتُ PDF كلُّها قابلةً للتعبئة. فمن الوثائق الخمس الداخلة في النطاق واحدةٌ لا تحمل حقولَ نموذجٍ أصلًا — وثيقةٌ مسطَّحة لا نموذجٌ قابلٌ للتعبئة. ولا تبلغها مطابقةُ الحقول بحال. وهذا حدٌّ قاطعٌ من حدود النهج، وهو من الأمور التي لا تُكتشف إلّا بفتح الملفّات بدل افتراض أنّها كلَّها سواء.

تصميم النظام

كيف يعمل

01/04
01

سجلٌّ يُدخَل

كيف يصل شخصٌ جديدٌ إلى الورقة دون أن تستولي الأداةُ عليها.

  1. 1تُملأ ستّةٌ وعشرون حقلًا، موزَّعةً على شبكةٍ من ثلاثة أعمدة
  2. 2ويُرسَل النموذجُ كلُّه دفعةً واحدة لا حقلًا حقلًا
  3. 3ويُضاف الصفُّ الجديد إلى السجلّات الموجودة في المصنَّف
  4. 4وتُعاد كتابةُ الورقة، فيكسب جدولُ البيانات السجلَّ
02

سجلٌّ يُعثَر عليه

لماذا يكون المُعرِّفُ اختيارًا لا شيئًا مثبَّتًا في الشيفرة.

  1. 1يُختار عمودٌ يُعرَّف به الأشخاص
  2. 2وتُختار قيمةٌ من مُدخلات ذلك العمود المتمايزة
  3. 3وتُضيَّق الورقةُ إلى الصفوف المُطابِقة لتلك القيمة
  4. 4وتلك الصفوفُ هي ما يقرؤه التصديرُ أسفلَ منها، آخذًا أوّلَها
03

نموذجٌ يُعبَّأ

قلبُ الأداة — قراءةُ صياغة النموذج نفسِه بدل خريطةٍ منسوخةٍ باليد.

  1. 1يُمشى على كلّ حقلٍ في الوثيقة المختارة بدوره ويُقرأ اسمُه
  2. 2ويُختزل الاسمُ: يُسقَط ما جاء بين قوسين، وتُحذف المسافات، وتُوحَّد حالةُ الأحرف
  3. 3ويُختزل كلُّ مفتاح بياناتٍ الاختزالَ نفسَه ويُختبر الاحتواء
  4. 4فأوّلُ مفتاحٍ يُطابق يكتب قيمتَه في الحقل، ويمضي المشيُ إلى ما بعده
04

الملفُّ يصل إلى صاحبه

ما يخرج من الأداة، وما تتركه وراءها عن قصد.

  1. 1تُجمَّع الوثيقةُ المُعبَّأة في مِخزنٍ مؤقّتٍ داخل الذاكرة
  2. 2ويُؤكَّد التصدير، فيُعرَض الملفُّ الجاهز للتنزيل
  3. 3والذي يخرج من الجهاز هو الوثيقةُ المُعبَّأة جزئيًّا
  4. 4ولا تكتب الأداةُ منها على القرص أيَّ نسخةٍ مُعبَّأة

أبرز الميزات

  • سيرُ عملٍ في تبويبين يفصل إدخالَ السجلّات عن تصدير الوثائق
  • نموذجُ سجلٍّ من ستّةٍ وعشرين حقلًا، موزَّعٌ على شبكةٍ من ثلاثة أعمدة ويُرسَل دفعةً واحدة
  • السجلّاتُ الجديدة تُكتب في جدول البيانات، وهو الذي يبقى مصدرَ الحقيقة
  • قائمةٌ مرجعيّةٌ بالأعمدة مثبَّتةٌ في الشيفرة، فيُعلَن شكلُ السجلّ في موضعٍ واحد بدل أن يُستنبَط من الورقة
  • تصفيةٌ بأيّ عمود — يُختار العمودُ المُعرِّف، ثمّ قيمةٌ من مُدخلات ذلك العمود نفسِه
  • مطابقةُ الحقول بالاحتواء بعد الاختزال: يُسقَط ما جاء بين قوسين، وتُحذف المسافات، وتُوحَّد حالةُ الأحرف
  • خمسُ وثائقَ في مُنتقي التصدير، والأربعُ التي لم تُنفَّذ بعد معطَّلةٌ ظاهرةً لا مخفيّة
  • الوثيقةُ تُجمَّع في الذاكرة وتُسلَّم إلى المتصفّح تنزيلًا مباشرًا

Outcomes

  • أزلتُ خطوةَ النسخ اليدويّ من ربط الحقول — فالأداةُ تقرأ أسماءَ حقول النموذج نفسِه وتُطابقها بالاختزال، فلا تُكتب خريطةُ حقولٍ مضبوطةٌ ولا تُصان لكلّ نموذج
  • وأبقيتُ جدول بيانات العميل النسخةَ الوحيدة للسجلّات، بالكتابة فيه بدل استيراده إلى مخزنٍ يبدأ من فوره في الانحراف
  • وسلّمتُ مسارَ التعبئة كاملًا للوثيقة الموصولة — يُختار الشخص، فتعود تلك الوثيقةُ وقد أُدخلت فيها حقولُها المُطابَقة وبقي سائرُها فارغًا — دون أن تُكتب على القرص نسخةٌ مُعبَّأةٌ في الطريق
  • ومسحتُ الوثائقَ الخمسَ قبل الالتزام بالتقنية — فواحدةٌ منها لا تحمل حقولَ نموذجٍ أصلًا، فلا تبلغها مطابقةُ الحقول أبدًا؛ وهي في الأداة معطَّلةٌ إلى جانب الثلاث الأخرى التي لم يمنعها إلّا أنّها لم تُبنَ بعد
  • وتركتُ ما بقي من النطاق مقروءًا — الوثائقُ غيرُ المُنفَّذة معطَّلةٌ على مرأى العين، وأربعةَ عشرَ مفتاحًا آخرَ مرسومةٌ في مواضعها ومُعلَّقةٌ لا محذوفة
  • وقدّمتُها أداةً محلّيّةً قائمةً بذاتها: أمرٌ واحد لتشغيلها، ولا شيءَ يُستضاف، ولا قاعدةَ بياناتٍ تُقام، ولا خطوةَ نشر

أعمال أخرى

DataInsight Dashboard preview
لوحة استكشاف بيانات

DataInsight Dashboard

أيُّ جدول بياناتٍ يدخل، فيخرج شكلُه — والمخطّطات تختارها البيانات نفسها

عرض المشروع