> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/alblwkat-alwzyfyh/blocks-reference/data-logic/flow-control/subsystem-loop.md).

# Subsystem Loop

تكرر هذه الدالة (function block) تدفق عمل داخليًا لكل عنصر من عناصر قائمة (أو أي مجموعة ذات حجم). استخدمها عندما تريد معالجة سلسلة من العناصر واحدًا تلو الآخر داخل نظام فرعي محاط وجمع النتائج على شكل قوائم.

## 📥 المدخلات

هذه الدالة لا تملك مقابس إدخال على المستوى العلوي.\
لتمرير البيانات إلى تدفق العمل المتكرر، ضع كتلًا داخلية داخل النظام الفرعي (مثل `Subsystem In`).

## 📤 المخرجات

هذه الدالة لا تعرّض مقابس إخراج مباشرة على المستوى العلوي.\
النتائج التي يتم إنتاجها داخل التدفق المتكرر تُعاد عبر الكتل الداخلية (مثل `Subsystem Out`) ويتم جمعها كقوائم بواسطة هذه الدالة.

## 🕹️ Controls

لا توجد عناصر تحكم مرئية على الكتلة نفسها. التفاعل والتكوين يتمان داخل مساحة عمل النظام الفرعي حيث تضع كتل المساعدة للإدخال/الإخراج:

* `Subsystem In` استخدمها داخل النظام الفرعي لاستقبال العنصر الحالي (أو المدخلات المشتركة) لكل خطوة حلقة.
* `Subsystem Out` استخدمها داخل النظام الفرعي لإرسال نتيجة كل خطوة ليقوم العنصر الحلقوي بجمعها.

## 🎨 Features

* معالجة تكرارية: ينفذ تدفق العمل الداخلي مرة لكل عنصر من أول مجموعة بحجم توفره.
* دعم قوائم متعددة: إذا تم تزويد عدة مجموعات لها نفس الطول، فسيتم تكرارها بالتوازي. استخدم مساعدات الاقتران إذا كنت بحاجة إلى إقران صريح.
* التجميع: المخرجات التي يتم إنتاجها داخل التدفق تُجمع كقوائم (قائمة لكل إخراج) وتُعاد بعد انتهاء الحلقة.
* إيقاف آمن وانتشار الحالة: الأخطاء الداخلية أو الحالات غير الصحيحة تنتشر بحيث يستطيع السيناريو الأبّ الاستجابة.

## ⚙️ Running mechanism (plain language)

* تبحث الكتلة عن أول مدخل من نوع مجموعة تزوده به (مثال: قائمة صور أو أرقام).
* لكل عنصر في تلك المجموعة تفتح مساحة عمل النظام الفرعي وتشغّل تدفق العمل المحتوى مرة باستخدام العنصر الحالي.
* أي قيم ترسلها خارج النظام الفرعي باستخدام `Subsystem Out` تُلحق إلى قوائم. بعد انتهاء الحلقة، تحصل على قائمة مجمعة لكل إخراج.
* إذا احتجت لتكرار عدة قوائم معًا، فتأكد أنها لها نفس الطول أو قم بإقرانها قبل إدخالها إلى النظام الفرعي.

## 📝 How to use

1. ضع كتلة `Subsystem Loop` في السيناريو الخاص بك.
2. انقر مزدوجًا (أو افتح) مساحة عمل النظام الفرعي وأضف ما يلي داخلها:
   * كتل `Subsystem In` لاستقبال المدخلات لكل خطوة تريد العمل عليها.
   * كتل المعالجة الخاصة بك (مرشحات، كاشفات، حسابات) لمعالجة كل عنصر.
   * كتل `Subsystem Out` لإرسال النتائج مرة أخرى إلى جامع الحلقة.
3. إذا أردت تكرار قوائم متعددة معًا، حضّرها باستخدام أداة قائمة مثل `List Operations` (استخدم خيار الإقران إن وُجد) قبل تمريرها إلى النظام الفرعي.
4. شغّل السيناريو. ستقوم الحلقة بتشغيل تدفق العمل الداخلي لكل عنصر وتعيد قوائم مُجمّعة من المخرجات.

## 💡 نصائح وحيل

* لمزامنة قوائم متعددة ذات صلة، حضّرها عبر كتلة `List Operations` (استخدم خيار pairing إذا توفر) قبل إدخالها إلى النظام الفرعي.
* استخدم `Get Element` داخل النظام الفرعي فقط إذا كنت بحاجة للوصول المباشر بعنصر حسب الفهرس إلى قوائم مرسلة كمدخلات مشتركة.
* لمعالجات دفعات كبيرة من الصور، اجمع بين `Batch Processing` و `Debatch` لتقليل استهلاك الذاكرة والحفاظ على فعالية المعالجة لكل خطوة.
* استخدم `Data Read Local` / `Data Write Local` (أو النسخ العامة Global) لمشاركة بيانات ثابتة بين السيناريو الرئيسي والنظام الفرعي عندما لا يكون توصيل الإدخال/الإخراج البسيط مناسبًا.
* إذا أردت تشغيل نفس المعالجة على صور فردية ثم عرض النتائج، صِل كتلة `Show Image` بعد مخرجات الحلقة لمعاينة الصور المجمعة.
* عند العمل مع قوائم قد تحتوي على مدخلات فارغة أو مفقودة، أضف فحص `Is None` داخل النظام الفرعي لتجنب أخطاء غير متوقعة.

## 🛠️ استكشاف الأخطاء وإصلاحها

* لم تتم أي تكرارات: تحقق من أنك وفّرت على الأقل مدخلًا من نوع مجموعة داخل النظام الفرعي (عن طريق `Subsystem In`).
* المخرجات تُرجع مغلفة في قوائم ذات عنصر واحد: راجع عدد كتل `Subsystem Out` وتأكد أنها تُعيد القيم المقصودة لكل خطوة.
* اختلاف أطوال القوائم: إذا توقعت تكرار قوائم متعددة معًا، تأكد من أنها طولهما متساوٍ أو قم بإقرانها مسبقًا باستخدام `List Operations`.
* ارتفاع استهلاك الذاكرة: فضّل استخدام `Batch Processing` و `Debatch` أو قسّم المعالجة إلى قطع أصغر داخل النظام الفرعي لتقليل الذروة في استهلاك الذاكرة.
