البرامج النصية / استيراد البيانات القديمة

Scripts هو الحل الشامل من SKOOR لإنشاء البرامج النصية وتحريرها وتشغيلها مع الكثير من الخيارات لتخصيصها.

صفحة البرامج النصية

تنقسم الصفحة إلى ثلاثة أقسام رئيسية:

الإعدادات

يتضمن هذا القسم الإعدادات العامة للنص البرمجي، مثل:

  • الاسم والوصف.

  • المهلة الافتراضية (بالثواني)

  • نسخ رمز Webhook أو إعادة تعيينه (متاح فقط للمسؤولين)

  • تكوينات الجدول الزمني: يسمح بجدول زمني متعدد مع تكوينات تشغيل مخصصة.

  • تكوينات التشغيل: يسمح بتخصيص المهلة الزمنية ومتغيرات البيئة.

image-20250423-062736.png

الملفات

يقدم هذا القسم حلاً كاملاً لإدارة الملفات للبرنامج النصي، بما في ذلك محرر متطور للبيانات النصية.

سيتم عرض رابط تنزيل إذا كانت البيانات ثنائية (غير قابلة للتحرير في شكل نصي).

image-20250214-093009.png

التشغيل

هذا القسم مسؤول عن تشغيل البرنامج النصي ومراقبة عمليات تشغيله. يوفر منطقة إسقاط صغيرة لتحميل الملفات المصدرية إذا لزم الأمر.

image-20250214-093849.png

إنشاء برنامج نصي

يمكن إنشاء البرامج النصية يدويًا أو تحميلها عبر ملفات Zip كما هو موضح أدناه:

image-20250423-061036.png
image-20250423-061102.png

استيراد البرنامج النصي باستخدام ملف Zip

عند استيراد ملف zip الخاص بالنص البرمجي، يتم إجراء تحليل، يتم بعده عرض علامات مختلفة قبل إجراء الاستيراد الفعلي.
هذه العلامات هي:

image-20250715-111604.png

تأكيد الكتابة فوق

يشير إلى وجود نص برمجي يحمل نفس الاسم.
سيؤدي تحديد هذه العلامة إلى الكتابة فوق النص البرمجي.

تضمين بيانات تعريف البرنامج النصي

يشير إلى أن ملف Zip يحتوي على بيانات تعريفية (script_metadata.json):

يتضمن هذا الملف المهلة الافتراضية للنص البرمجي ووصفه وتكوين التشغيل/الجدولة.

أركان البرنامج النصي

تشغيل البرنامج النصي

يتضمن الملف الرئيسي منطق البرنامج النصي. وهذا يحدد نوع المشغل للبرنامج النصي:

  • يتوقع Python Runner وجود ملف main.py.

  • يتوقع مشغل Talend ملف <scriptName>_run.sh.

  • يتوقع مشغل Shell ملف run.sh.

ضع البرنامج النصي الرئيسي في مستوى واحد أسفل الجذر (أو أعلى)، لأن المسح العرضي يستخدم دائمًا البرنامج النصي الأقل عمقًا الذي يعثر عليه.

تظهر الرسالة التالية عند محاولة تشغيل نص برمجي بدون نص برمجي تشغيل رئيسي.

image-20250423-061703.png

.env

إنه ملف نصي بسيط يتضمن متغيرات البيئة. بهذه الطريقة، يمكن تعديل المتغيرات المستخدمة في البرنامج النصي بناءً على حالة الاستخدام.

يجب أن يكون ملف .env في نفس المجلد الذي يوجد فيه البرنامج النصي runner (main.py ، run.sh ... إلخ)

سيؤدي ملف .env التالي إلى الحصول على متغيرات البيئة الموضحة، مما يسمح بتعديلها في تكوينات التشغيل المخصصة.

image-20250214-094006.pngimage-20250214-094332.png

متغيرات البيئة المسبقة

يتم تمرير بعض التفاصيل حول تشغيل البرنامج النصي إلى بيئة البرنامج النصي كمتغيرات بيئة، وهي:

  • UserId كـ SKOOR_USER_ID

  • اسم المستخدم كـ SKOOR_USER_USERNAME

  • الاسم الكامل للمستخدم كـ SKOOR_USER_FULLNAME

توضح لقطات الشاشة أدناه كيفية استرداد هذه المتغيرات في مثال Python مع الناتج في البرنامج النصي:

import os

source_file = os.environ.get('SKOOR_SOURCE_FILE')
user_id = os.environ.get('SKOOR_USER_ID')
username = os.environ.get('SKOOR_USER_USERNAME')
userFullname = os.environ.get('SKOOR_USER_FULLNAME')
userGroup_id = os.environ.get('SKOOR_USER_USERGROUP_IDS')
userGroup_names = os.environ.get('SKOOR_USER_USERGROUP_NAMES')


print("sourceFile: ", source_file)
print("User ID: ", user_id)
print("Username: ", username)
print("Fullname: ", userFullname)
print("UserGroup ID: ", userGroup_id)
print("UserGroup name: ", userGroup_names)
image-20251201-084654.png

مثال باستخدام .env

يقرأ البرنامج النصي التالي المتغير foo في .env ويطبعه على وحدة التحكم، وفيما يلي لقطات شاشة لـ .env وتكوينات التشغيل ذات الصلة.

image-20250214-094929.pngimage-20250214-094943.png

image-20250214-094911.png

image-20250214-095049.pngimage-20250214-095128.png

ملفات المصدر

يمكن تصميم البرامج النصية لقبول الملفات الخارجية (ملفات المصدر) ومعالجتها كجزء من منطق البرنامج النصي.

يمكن الإشارة إلى الملفات المصدرية في البرنامج النصي باستخدام المتغير البيئي SKOOR_SOURCE_FILE كما هو موضح في مقتطف الشفرة التالي:

# IN PYTHON
import os

source_file = os.environ.get('SKOOR_SOURCE_FILE')
print(source_file)
#IN SHELL

echo $SKOOR_SOURCE_FILE

تشغيل البرامج النصية الفرعية

إذا كانت البرامج النصية الفرعية مطلوبة، فيجب وضعها داخل مجلد bin. حيث إنها ستكون قابلة للتشغيل.

تأكد من وضع البرامج النصية الفرعية دائمًا في مجلد bin.

فيما يلي مثال في Shell:

image-20250423-063721.png

ناتج هذا النص البرمجي الفرعي هو:

image-20250423-063801.png

image-20250423-063907.png

ناتج هذا الملف run.sh هو:

image-20250423-063955.png

QuickRun

يوفر هذا الخيار زر "QuickRun" (تشغيل البرنامج النصي) الذي يقوم بتشغيل البرنامج النصي بدون ملف مصدر وبالقيم الافتراضية لمتغيرات البيئة.
يتيح هذا الخيار تشغيل البرنامج النصي بسرعة أثناء تطويره أو استكشاف الأخطاء وإصلاحها، ويظهر زر "Latest Job Overview" (إيقاف تشغيل البرنامج النصي) ناتج وحدة التحكم.

image-20250214-095256.png

تشغيل

بدء التشغيل

في قسم التشغيل، حدد التكوين المطلوب (وقم بتحميل ملف المصدر إذا لزم الأمر) ثم انقر فوق "تشغيل البرنامج النصي"

image-20250214-095342.png

إلغاء التشغيل

يمكن إلغاء عمليات التشغيل الجارية والمعلقة بالنقر فوق رمز إلغاء المهمة في قسم "History" (السجل).

image-20250214-095439.png

إلغاء الاشتراك في Poetry

Poetry هي أداة قوية تستخدم لإدارة التبعيات وإدارة البيئة الافتراضية في Python. يتم ذلك عن طريق تعريف ملف pyproject.toml في نفس المجلد الذي يوجد فيه البرنامج النصي للعدّاء (main.py ، run.sh ... إلخ).

سيؤدي إزالة/إعادة تسمية pyproject.toml إلى إلغاء استخدام Poetry تلقائيًا، واستخدام skoor-python بدلاً من ذلك.

نظرة عامة على المهمة

لعرض التفاصيل الكاملة للمهمة، انقر فوق أحد العناصر في قائمة السجل كما هو موضح أدناه:

image-20250214-095601.png

image-20250214-095612.png

سجل التشغيل

يعرض قسم "السجل" قائمة بجميع عمليات تشغيل البرنامج النصي. يمكن العثور على تفاصيل كل عملية تشغيل بالنقر عليها.

image-20250214-095715.png

يعرض قسم مخصص السجل التفصيلي لآخر تشغيل للبرنامج النصي (يتخطى عمليات التشغيل المعلقة/المُلغاة)

image-20250214-095752.png

استخدام رموز Webhook لتشغيل محول

يتيح هذا الخيار تشغيل البرنامج النصي دون الحاجة إلى تسجيل الدخول، وهو الخيار المفضل للمستخدمين التقنيين.
لكل برنامج نصي رمز Webhook فريد، وسيتم نسخ عنوان URL إلى الحافظة بالنقر فوق Copy Webhook Token.

مثال على استخدام رموز Webhook

انسخ رمز Webhook من صفحة البرنامج النصي بالنقر فوق Copy Webhook Token ، في هذا المثال، يبدو عنوان URL لـ Webhook كما يلي:

http://localhost:8090/scripts/8925cfd4-2063-4b07-9d56-956f2b754b47/run?token=6ae51c9f-d292-4d55-b512-4537121b37f5

استخدم عنوان URL لإرسال طلب POST:

استخدام برنامج API مثل POSTMAN

image-20250213-145831.png

تشير استجابة 200 مع كيان المهمة الأولي إلى أن التشغيل قد تم تشغيله كما هو موضح في لقطة الشاشة أدناه:

image-20250213-145952.png

استخدام cURL في المحطة الطرفية

curl -X POST http://localhost:8090/scripts/8925cfd4-2063-4b07-9d56-956f2b754b47/run?token=6ae51c9f-d292-4d55-b512-4537121b37f5

سيبدو الرد كما يلي


image-20250213-151347.png

يمكن ملاحظة هذا التشغيل في SKOOR-Dashboard ويظهر التشغيل الذي أنشأه Token-User في السجل.

image-20250214-095924.png

image-20250214-095945.png

الحذف

انقر على أيقونة سلة المهملات لحذف البرنامج النصي. ستظهر الأيقونة عند تمرير مؤشر الماوس فوق اسم البرنامج النصي.

image-20250226-085215.png

تصدير البرنامج النصي كملف Zip

انقر على أيقونة الأرشيف لتصدير البرنامج النصي. ستظهر الأيقونة عند تمرير مؤشر الماوس فوق اسم البرنامج النصي.

يتم تصدير ملف script_metadata.json داخل ملف ZIP المصدّر، ويحتوي على الوصف والوقت المحدد الافتراضي وتكوين التشغيل وتكوين الجدول الزمني للنص البرمجي.

في Safari: قم بتعطيل الإعدادات → عام → "فتح الملفات 'الآمنة' بعد التنزيل" لمنع الملفات ZIP من الاستخراج التلقائي.

image-20250226-085236.png