
محرك لخطوط معالجة البيانات يشغّل سير العمل ويوقفه مؤقتًا ويستأنفه
نواة التنسيق في منصة منخفضة الشيفرة (low-code)، تشغّل الخطوات المترابطة بصريًا وفق ترتيب اعتمادها بعضها على بعض، مع نقاط توقف وتشغيل قابل للاستئناف.
- الشريك
- شركة استشارية متعددة الجنسيات
- المدة
- من أكتوبر 2024 إلى يناير 2026
- نوعًا من الخطوات
- 18
- خطوات قراءة، وخطوة تحويل، وخطوات تجميع، وتحليل LLM، وخطوات كتابة، وخطوة توجيه
- طرق للتشغيل
- 3
- عند الطلب، أو وفق جدول زمني، أو كنقطة نهاية منشورة
- من المخرجات المحفوظة
- استئناف
- إعادة تشغيل جزئية دون تكرار الخطوات السابقة
التحدي
أتاحت المنصة للمستخدمين ربط خطوات البيانات بصريًا. وكان لا بد من محرك يشغّل شبكات الخطوات هذه تشغيلًا صحيحًا، بما فيها من تفرعات ونقاط دمج، ويرفض الشبكات التي لا يمكن أن تكتمل أبدًا، ويتيح للمستخدمين فحص أجزاء من التشغيل وتكرارها أثناء البناء.
ما بنيناه
محرك تنسيق يرتب الخطوات بخوارزمية Kahn، ويرفض الشبكات التي تحتوي على حلقات عند حفظها، ويخزّن مدخلات كل خطوة ومخرجاتها مع مخططها، ويدعم نقاط التوقف، ويعيد بناء البيانات محددة النوع من تشغيل سابق لاستئناف العمل دون تكرار الخطوات السابقة.
ما تم تسليمه
- التفرع إلى عدة خطوات والتجميع منها (fan-out وfan-in)، مع التشغيل وفق ترتيب الاعتماد
- رفض الحلقات عند حفظ خط المعالجة، مع عرض الحلقة
- نقاط توقف، وتشغيل قابل للاستئناف، وتحكم لكل خطوة في التسجيل
نبذة عن الشريك
شريكنا شركة استشارية متعددة الجنسيات تتعامل فرقها مع كميات كبيرة من المستندات وجداول البيانات وقواعد البيانات والبريد الإلكتروني. وأراد الشريك منصة داخلية واحدة تبني فيها هذه الفرق خطوط معالجة البيانات والوكلاء الأذكياء بنفسها، بدلًا من التعاقد على تطبيق جديد لكل حاجة. وكان على المنصة أن تعمل داخل بيئة Microsoft 365 وAzure لدى الشريك، وأن تفصل عمل كل فريق عن غيره، وأن تنقل العمل من مرحلة التجربة إلى بيئة الإنتاج عبر بيئات خاضعة للرقابة. وتتناول دراسة الحالة هذه جزءًا واحدًا من تلك المنصة، وتصف تسع دراسات حالة المنصة كاملة.
التحدي
شبكات لا قوائم
يربط المستخدمون الخطوات بحرية. فخطوة الربط (join) تنتظر مدخلين، ومخرج واحد قد يغذي عدة خطوات كتابة. وتشغيل الخطوات بالترتيب الذي رُسمت به سيؤدي إلى نتائج خاطئة، والاتصال المرسوم عائدًا إلى خطوة سابقة ينشئ حلقة لا يمكن أن تكتمل أبدًا.
البناء عملية تكرارية
أثناء تصميم خط المعالجة، يحتاج المستخدمون إلى التوقف عند خطوة ما، وفحص البيانات وتغيير شيء فيها، دون أن يتحملوا كلفة تشغيل كل خطوة سابقة من جديد.
بيانات التشغيل تتضخم
تخزين مدخلات كل خطوة ومخرجاتها لأغراض الاستئناف والفحص سيضخّم قاعدة البيانات بلا حد.
بيانات حساسة في السجلات
تتعامل بعض الخطوات مع بيانات لا ينبغي تخزينها في سجلات التشغيل.
الأهداف
- تشغيل أي شبكة خطوات صالحة وفق ترتيب الاعتماد الصحيح
- رفض الشبكات التي لا يمكن تشغيلها، قبل تشغيلها
- دعم نقاط التوقف للفحص أثناء التصميم
- استئناف التشغيل من المخرجات المحفوظة، مع إبقاء بيانات التشغيل المخزّنة ضمن حدود
- التحكم في تسجيل المدخلات والمخرجات لكل خطوة
- تشغيل خطوط المعالجة عند الطلب، أو وفق جدول زمني، أو كنقطة نهاية
دورنا
تولّت كارسنترك القيادة التقنية والبنية المعمارية ضمن فريق هندسي متعدد التخصصات، وأسهمت مباشرة في التنفيذ. بُنيت المنصة على مدى 16 شهرًا، من أكتوبر 2024 إلى يناير 2026، بواجهة خلفية مبنية على Python وFastAPI وتعمل على Azure.
النطاق والجدول الزمني
بُني محرك التنسيق بين أكتوبر 2024 ومايو 2025. وبُنيت أدوات التحكم في التشغيل والمشغّلات والنشر بين يناير ونوفمبر 2025.

المنهجية
الترتيب وفق الاعتماد
يرتب المحرك الخطوات بخوارزمية Kahn: يعدّ الاتصالات الواردة إلى كل خطوة، ويبدأ بالخطوات التي لا اتصالات واردة إليها، ويُطلق كل خطوة منتظرة حين يصل عدّادها إلى صفر. ويجري الفحص نفسه عند حفظ خط المعالجة، فتُرفض الشبكة التي تحتوي على حلقة، ويجد بحث بالعمق أولًا (depth-first search) في الخطوات التي بقيت دون ترتيب الحلقةَ لعرضها على المستخدم. وتُتخطى الخطوات الواقعة على فرع لا تسلكه خطوة التوجيه، وتُطلق الخطوات المعتمدة عليها.
تخزين البيانات مع بنيتها
يُخزَّن كل مخرج من مخرجات الخطوات مع JSON Schema يصف بياناته. وعند استئناف التشغيل، يعيد المحرك بناء نماذج البيانات محددة النوع من المخطط المخزّن، فتتلقى الخطوات المستأنفة أنواع البيانات نفسها التي تلقتها في التشغيل الأصلي. وتُحفظ المخرجات التي يتجاوز حجمها حدًا معينًا في Azure Blob Storage مع مؤشر إليها في PostgreSQL، وتُحذف بيانات التشغيل بعد مدة احتفاظ محددة.
البناء بدلًا من الشراء
عملت النسخة الأولى من المنصة، قبل هذا العمل، على Prefect. وكانت نقاط التوقف أثناء التصميم، واستئناف التشغيل من مخرجات مخزّنة محددة النوع، تتطلب تحكمًا من داخل المحرك، فحلّ محله محرك بُني داخليًا.
واجهة واحدة لكل الخطوات
تشترك جميع الخطوات في واجهة واحدة، ويُنشئها مصنع برمجي (factory). ويولّد أمر لإنشاء الهيكل الأولي الصنفَ ونموذجَ المدخلات والحالةَ وقيدَ التسجيل لأي خطوة جديدة.
التنفيذ

مكتبة الخطوات
ثمانية عشر نوعًا من الخطوات: خطوات قراءة لملفات CSV وواجهات API وقواعد بيانات SQL والمستندات والإدخال النصي وخلاصات RSS وOutlook وSharePoint وصفحات الويب؛ وخطوة تحويل بشيفرة Python؛ وخطوتا تجميع للربط (join) والإلحاق (append)؛ وخطوة تحليل LLM؛ وخطوات كتابة لقواعد بيانات SQL وOutlook وWhatsApp وSharePoint؛ وخطوة توجيه شرطي.
التحكم في التشغيل
يتوقف التنفيذ عند نقاط التوقف المحددة على خطوات بعينها. ويمكن تعطيل تسجيل المدخلات والمخرجات لكل خطوة. ويمكن إلغاء التشغيل أثناء تنفيذه.
المشغّلات
تعمل خطوط المعالجة عند الطلب، أو وفق جداول cron، بأكثر من جدول لكل خط معالجة عند الحاجة، أو عبر نقاط نهاية منشورة مرتبطة ببيئة محددة.

الأدوات والتقنيات
| الأداة | الغرض |
|---|---|
| Python وasyncio | محرك التنسيق |
| Pydantic | بيانات محددة النوع بين الخطوات |
| PostgreSQL | سجلات التشغيل ومخرجات الخطوات |
| Azure Blob Storage | مخرجات الخطوات الكبيرة |
| Redis | تخزين المشغّلات |
| FastAPI | نقاط النهاية للاستدعاء والإدارة |
ما تم تسليمه
- نوعًا من الخطوات
- 18
- فئات للخطوات
- 6
- طرق لبدء التشغيل
- 3
- فحص الحلقات
- عند الحفظ
- محرك تنسيق لأي شبكة خطوات خالية من الحلقات
- كشف الحلقات عند حفظ خط المعالجة
- نقاط توقف، وتحكم في التسجيل لكل خطوة، وإمكانية الإلغاء
- تشغيل قابل للاستئناف مع إعادة بناء البيانات محددة النوع من المخططات المخزّنة
لماذا يهم ذلك
لا تتجاوز موثوقية أداة البناء المرئية موثوقية المحرك الذي يعمل خلفها. وإتقان الترتيب والأنواع والاستئناف هو ما يتيح لغير المتخصصين بناء خطوط المعالجة بثقة.
إذا كانت مؤسستكم تخطط لمنصة من هذا النوع، أو تحتاج إلى تصميم جزء محدد منها وتسليمه، يسعدنا أن نناقش ذلك معكم.