מסמך זה תורגם על ידי AI. למידע מדויק, אנא עיינו בגרסה באנגלית.
צומת סקריפט JavaScript מאפשר למשתמשים להריץ סקריפט JavaScript מותאם אישית בצד השרת בתוך תהליך עבודה. הסקריפט יכול להשתמש במשתנים מהשלבים הקודמים בתהליך העבודה כפרמטרים, ואת ערך ההחזרה שלו ניתן לספק לצמתים הבאים לשימוש.
הסקריפט ירוץ ב-worker thread (תהליכון עבודה) בצד השרת של יישום NocoBase ותומך ברוב התכונות של Node.js, אך קיימים עדיין הבדלים מסוימים מסביבת ההרצה המקורית. לפרטים נוספים, עיינו ברשימת תכונות.
בממשק הגדרות תהליך העבודה, לחצו על כפתור הפלוס ("+") בתוך התהליך כדי להוסיף צומת "JavaScript":


משמש להעברת משתנים או ערכים סטטיים מהקשר תהליך העבודה לסקריפט, לשימוש בלוגיקת הקוד שבסקריפט. כאשר name הוא שם הפרמטר, ולאחר העברתו לסקריפט הוא משמש כשם המשתנה. value הוא ערך הפרמטר, וניתן לבחור משתנה או להזין קבוע.
תוכן הסקריפט יכול להיחשב כפונקציה, ניתן לכתוב כל קוד JavaScript הנתמך בסביבת Node.js, וניתן להשתמש בפקודת return כדי להחזיר ערך כתוצאת הרצת הצומת, לשימוש על ידי צמתים עוקבים כמשתנה.
לאחר כתיבת הקוד, ניתן ללחוץ על כפתור הבדיקה שמתחת לתיבת העריכה כדי לפתוח תיבת דו-שיח להרצת בדיקה, שבה ניתן למלא פרמטרים בערכים סטטיים להרצה מדומה. לאחר ההרצה, ניתן לראות בתיבת הדו-שיח את ערך ההחזרה ואת תוכן הפלט (לוגים).

היחידה היא מילישניות. כאשר הערך מוגדר ל-0, המשמעות היא שלא מוגדר פסק זמן.
לאחר סימון, תהליך העבודה ימשיך לצמתים הבאים גם אם הסקריפט נתקל בשגיאה או בשגיאת פסק זמן.
לאחר שגיאה בסקריפט לא יהיה ערך החזרה, ותוצאת הצומת תאוכלס בהודעת השגיאה. אם צמתים עוקבים משתמשים במשתנה התוצאה מצומת הסקריפט, יש לטפל בכך בזהירות.
זהה לגרסת Node.js שבה רץ היישום הראשי.
ניתן להשתמש במודולים בסקריפט עם מגבלות, באופן התואם ל-CommonJS, באמצעות פקודת require() לייבוא מודולים בקוד.
תומך במודולים מקוריים של Node.js ובמודולים המותקנים ב-node_modules (כולל חבילות תלות שכבר נמצאות בשימוש על ידי NocoBase). מודולים שברצונכם להפוך לזמינים לקוד חייבים להיות מוצהרים במשתנה הסביבה של היישום WORKFLOW_SCRIPT_MODULES, כאשר שמות חבילות מרובים מופרדים בפסיקים, לדוגמה:
מודולים שלא הוצהרו במשתנה הסביבה WORKFLOW_SCRIPT_MODULES, גם אם הם מקוריים ל-Node.js או מותקנים ב-node_modules, לא ניתנים לשימוש בסקריפט. מדיניות זו יכולה לשמש ברמת התפעול כדי לשלוט ברשימת המודולים הזמינים למשתמשים, ובכך למנוע מהסקריפטים הרשאות יתר בתרחישים מסוימים.
בסביבת פריסה שאינה מבוססת קוד מקור, אם מודול מסוים אינו מותקן ב-node_modules, אתם יכולים להתקין ידנית את החבילה הנדרשת לתוך ספריית storage. לדוגמה, כדי להשתמש בחבילת exceljs, בצעו את הפעולות הבאות:
לאחר מכן, הוסיפו את הנתיב היחסי (או המוחלט) של החבילה, בהתבסס על ספריית העבודה הנוכחית (CWD) של היישום, למשתנה הסביבה WORKFLOW_SCRIPT_MODULES:
כעת תוכלו להשתמש בחבילת exceljs בסקריפט שלכם (שם ה-require חייב להיות זהה בדיוק לזה שהוגדר במשתנה הסביבה):
אינו תומך במשתנים גלובליים כגון global, process, __dirname ו-__filename.
פרמטרים שהוגדרו בצומת ישמשו כמשתנים גלובליים בתוך הסקריפט וניתן להשתמש בהם ישירות. פרמטרים המועברים לסקריפט תומכים רק בסוגים בסיסיים, כגון boolean, number, string, object ומערכים. אובייקט Date יומר למחרוזת בפורמט ISO לאחר העברתו. סוגים מורכבים אחרים אינם ניתנים להעברה ישירה, כגון מופעים של מחלקות מותאמות אישית.
באמצעות פקודת return ניתן להחזיר נתונים מסוגים בסיסיים (בהתאם לכללי הפרמטרים) בחזרה לצומת כתוצאה. אם לא נקראה פקודת return בקוד, להרצת הצומת לא יהיה ערך החזרה.
תומך בשימוש ב-console להוצאת לוגים.
כאשר תהליך העבודה מורץ, הפלט של צומת הסקריפט יירשם גם הוא לקובץ הלוג של תהליך העבודה המתאים.
תומך בשימוש ב-async להגדרת פונקציות אסינכרוניות, וב-await לקריאה לפונקציות אסינכרוניות. תומך בשימוש באובייקט הגלובלי Promise.
כדי להשתמש בשיטות כמו setTimeout, setInterval או setImmediate, עליכם לייבא אותן מחבילת timers של Node.js.