تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
JavaScript سكريبتتتيح عقدة JavaScript سكريبت للمستخدمين تنفيذ سكريبت JavaScript مخصص من جانب الخادم ضمن سير العمل. يمكن للسكريبت استخدام المتغيرات من المراحل السابقة في سير العمل كمعاملات، ويمكن توفير قيمة إرجاع السكريبت للعقد اللاحقة.
يتم تشغيل السكريبت في خيط عمل (worker thread) على خادم تطبيق NocoBase ويدعم معظم ميزات Node.js، ولكن لا تزال هناك بعض الاختلافات عن بيئة التنفيذ الأصلية. للاطلاع على التفاصيل، راجع قائمة الميزات.
في واجهة تكوين سير العمل، انقر على زر علامة الجمع ("+") في التدفق لإضافة عقدة "JavaScript".


تُستخدم لتمرير المتغيرات أو القيم الثابتة من سياق التدفق إلى السكريبت لاستخدامها في منطق الكود. هنا، name هو اسم المعامل، والذي يصبح اسم المتغير بمجرد تمريره إلى السكريبت. value هي قيمة المعامل، ويمكن اختيارها كمتغير أو إدخال ثابت.
يمكن اعتبار محتوى السكريبت دالة. يمكنك كتابة أي كود JavaScript مدعوم في بيئة Node.js واستخدام عبارة return لإرجاع قيمة كنتيجة لتنفيذ العقدة، والتي يمكن استخدامها كمتغير بواسطة العقد اللاحقة.
بعد كتابة الكود، يمكنك النقر على زر الاختبار أسفل مربع التحرير لفتح مربع حوار تنفيذ الاختبار، حيث يمكنك ملء المعاملات بقيم ثابتة لإجراء تشغيل محاكاة. بعد التنفيذ، يمكنك رؤية قيمة الإرجاع ومحتوى الإخراج (السجل) في مربع الحوار.

الوحدة هي المللي ثانية. تعني القيمة 0 عدم تعيين مهلة.
عند تحديد هذا الخيار، ستستمر العقد اللاحقة في التنفيذ حتى إذا واجه السكريبت خطأً أو انتهت مهلته.
إذا حدث خطأ في السكريبت، فلن تكون هناك قيمة إرجاع، وسيتم ملء نتيجة العقدة برسالة الخطأ. إذا استخدمت العقد اللاحقة متغير النتيجة من عقدة السكريبت، فيجب التعامل مع ذلك بحذر.
يتوافق مع إصدار Node.js الذي يعمل عليه التطبيق الرئيسي.
يمكن استخدام الوحدات (modules) في السكريبت بقيود، بما يتوافق مع CommonJS، وذلك باستخدام توجيه require() لاستيراد الوحدات.
يدعم وحدات Node.js الأصلية والوحدات المثبتة في node_modules (بما في ذلك حزم التبعيات التي يستخدمها NocoBase بالفعل). يجب الإعلان عن الوحدات المراد توفيرها للكود في متغير البيئة الخاص بالتطبيق WORKFLOW_SCRIPT_MODULES، مع فصل أسماء الحزم المتعددة بفاصلة، على سبيل المثال:
الوحدات غير المعلنة في متغير البيئة WORKFLOW_SCRIPT_MODULES لا يمكن استخدامها في السكريبت، حتى لو كانت وحدات Node.js أصلية أو مثبتة بالفعل في node_modules. يمكن استخدام هذه السياسة على المستوى التشغيلي للتحكم في قائمة الوحدات المتاحة للمستخدمين، مما يمنع السكريبتات من الحصول على صلاحيات مفرطة في بعض السيناريوهات.
في بيئة غير منشورة من المصدر (non-source-deployed)، إذا لم يتم تثبيت وحدة معينة في node_modules، يمكنك تثبيت الحزمة المطلوبة يدويًا في دليل storage. على سبيل المثال، لاستخدام حزمة exceljs، يمكنك تنفيذ الخطوات التالية:
ثم أضف المسار النسبي (أو المطلق) للحزمة، بناءً على دليل العمل الحالي للتطبيق (CWD)، إلى متغير البيئة WORKFLOW_SCRIPT_MODULES:
بعد ذلك، يمكنك استخدام حزمة exceljs في السكريبت الخاص بك:
لا يدعم المتغيرات العامة مثل global وprocess و__dirname و__filename.
تصبح المعاملات المكونة في العقدة متغيرات عامة داخل السكريبت ويمكن استخدامها مباشرة. تدعم المعاملات التي يتم تمريرها إلى السكريبت الأنواع الأساسية فقط، مثل boolean وnumber وstring وobject والمصفوفات. سيتم تحويل كائن Date إلى سلسلة نصية بتنسيق ISO عند تمريره. لا يمكن تمرير الأنواع المعقدة الأخرى مباشرة، مثل مثيلات الفئات المخصصة.
يمكن استخدام عبارة return لإرجاع بيانات من الأنواع الأساسية (وفقًا لقواعد المعاملات نفسها) إلى العقدة كنتيجة. إذا لم يتم استدعاء عبارة return في الكود، فلن يكون لتنفيذ العقدة قيمة إرجاع.
يدعم استخدام console لإخراج السجلات.
عند تنفيذ سير العمل، يتم أيضًا تسجيل إخراج عقدة السكريبت في ملف سجل سير العمل المقابل.
يدعم استخدام async لتعريف الدوال غير المتزامنة وawait لاستدعائها. يدعم استخدام الكائن العام Promise.
لاستخدام دوال مثل setTimeout أو setInterval أو setImmediate، يجب استيرادها من حزمة timers الخاصة بـ Node.js.