यह दस्तावेज़ AI द्वारा अनुवादित है। सटीक जानकारी के लिए कृपया अंग्रेज़ी संस्करण देखें।
JavaScript स्क्रिप्ट नोड उपयोगकर्ताओं को वर्कफ़्लो में कस्टम सर्वर-साइड JavaScript स्क्रिप्ट का एक टुकड़ा निष्पादित करने की अनुमति देता है। स्क्रिप्ट में वर्कफ़्लो के अपस्ट्रीम वेरिएबल्स को पैरामीटर के रूप में उपयोग किया जा सकता है, और स्क्रिप्ट के रिटर्न मान को डाउनस्ट्रीम नोड्स के उपयोग के लिए प्रदान किया जा सकता है।
स्क्रिप्ट NocoBase एप्लिकेशन के सर्वर पर एक वर्कर थ्रेड में चलेगी, और Node.js की अधिकांश विशेषताओं का समर्थन करती है, लेकिन मूल निष्पादन वातावरण के साथ अभी भी कुछ अंतर हैं, विवरण के लिए विशेषता सूची देखें।
वर्कफ़्लो कॉन्फ़िगरेशन इंटरफ़ेस में, फ़्लो में प्लस ("+") बटन पर क्लिक करें और "JavaScript" नोड जोड़ें:


स्क्रिप्ट में वर्कफ़्लो संदर्भ के वेरिएबल्स या स्टैटिक मान पास करने के लिए उपयोग किया जाता है, ताकि स्क्रिप्ट में कोड लॉजिक उनका उपयोग कर सके। जहाँ name पैरामीटर का नाम है, जो स्क्रिप्ट में पास होने के बाद वेरिएबल नाम के रूप में कार्य करता है। value पैरामीटर का मान है, आप वेरिएबल चुन सकते हैं या स्थिरांक (constant) इनपुट कर सकते हैं।
स्क्रिप्ट सामग्री को एक फ़ंक्शन के रूप में माना जा सकता है, आप Node.js वातावरण में समर्थित कोई भी JavaScript कोड लिख सकते हैं, और नोड के रनिंग परिणाम के रूप में एक मान वापस करने के लिए return स्टेटमेंट का उपयोग कर सकते हैं, ताकि बाद के नोड्स इसे वेरिएबल के रूप में उपयोग कर सकें।
कोड लिखने के बाद, आप एडिटिंग बॉक्स के नीचे टेस्ट बटन के माध्यम से टेस्ट निष्पादन डायलॉग खोल सकते हैं, और सिमुलेशन निष्पादन के लिए पैरामीटर्स में स्टैटिक मान भर सकते हैं। निष्पादन के बाद, आप डायलॉग में रिटर्न मान और आउटपुट (लॉग) सामग्री देख सकते हैं।

इकाई मिलीसेकंड में है, जब इसे 0 पर सेट किया जाता है तो इसका मतलब है कि कोई टाइमआउट सेट नहीं है।
चेक करने के बाद, स्क्रिप्ट में त्रुटि होने या टाइमआउट त्रुटि होने पर भी बाद के नोड्स निष्पादित होंगे।
स्क्रिप्ट त्रुटि के बाद कोई रिटर्न मान नहीं होगा, और नोड का परिणाम त्रुटि जानकारी से भर जाएगा। यदि बाद के नोड्स में स्क्रिप्ट नोड के परिणाम वेरिएबल का उपयोग किया जाता है, तो सावधानी बरतने की आवश्यकता है।
मुख्य एप्लिकेशन चलाने वाले Node.js वर्ज़न के समान।
स्क्रिप्ट में मॉड्यूल का सीमित उपयोग किया जा सकता है, CommonJS के समान, कोड में मॉड्यूल पेश करने के लिए require() निर्देश का उपयोग करें।
Node.js नेटिव मॉड्यूल और node_modules में पहले से इंस्टॉल मॉड्यूल (NocoBase द्वारा उपयोग किए गए डिपेंडेंसी पैकेज सहित) समर्थित हैं। कोड में उपयोग किए जाने वाले मॉड्यूल को एप्लिकेशन एनवायरनमेंट वेरिएबल WORKFLOW_SCRIPT_MODULES में घोषित किया जाना चाहिए, कई पैकेज नामों को अल्पविराम (comma) द्वारा अलग किया जाना चाहिए, उदाहरण के लिए:
एनवायरनमेंट वेरिएबल WORKFLOW_SCRIPT_MODULES में घोषित नहीं किए गए मॉड्यूल, भले ही वे Node.js नेटिव हों या node_modules में इंस्टॉल हों, स्क्रिप्ट में उपयोग नहीं किए जा सकते। यह रणनीति运维 (operations) स्तर पर उपयोगकर्ताओं द्वारा उपयोग किए जा सकने वाले मॉड्यूल की सूची को नियंत्रित करने के लिए उपयोग की जा सकती है, जिससे कुछ परिदृश्यों में स्क्रिप्ट अनुमतियों को बहुत अधिक होने से रोका जा सके।
गैर-सोर्स कोड परिनियोजन (deployment) वातावरण में, यदि कोई मॉड्यूल 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 जैसे तरीकों का उपयोग करने की आवश्यकता है, तो उन्हें Node.js के timers पैकेज के माध्यम से पेश किया जाना चाहिए।