מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית
צומת סקריפט 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 בסקריפט שלכם:
אינו תומך במשתנים גלובליים כגון global, process, __dirname ו-__filename.
פרמטרים שהוגדרו בצומת יהפכו למשתנים גלובליים בתוך הסקריפט, וניתן להשתמש בהם ישירות. פרמטרים המועברים לסקריפט תומכים רק בסוגים בסיסיים, כגון boolean, number, string, object ומערכים. אובייקט Date יומר למחרוזת בפורמט ISO כאשר הוא מועבר. סוגים מורכבים אחרים אינם ניתנים להעברה ישירה, כגון מופעים של מחלקות מותאמות אישית.
באמצעות פקודת return ניתן להחזיר נתונים מסוגים בסיסיים (בהתאם לכללי הפרמטרים) בחזרה לצומת כתוצאה. אם פקודת return אינה נקראת בקוד, להרצת הצומת לא יהיה ערך החזרה.
תומך בשימוש ב-console לפלט לוגים.
כאשר התהליך עבודה מורץ, הפלט של צומת הסקריפט נרשם גם הוא לקובץ הלוג של התהליך עבודה המתאים.
תומך בשימוש ב-async להגדרת פונקציות אסינכרוניות, וב-await לקריאה לפונקציות אסינכרוניות. תומך בשימוש באובייקט הגלובלי Promise.
כדי להשתמש בשיטות כמו setTimeout, setInterval או setImmediate, עליכם לייבא אותן מחבילת timers של Node.js.