logologo
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
होम
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
होम
logologo
वर्कफ़्लो
अवलोकन
शुरू करना

ट्रिगर

अवलोकन
संग्रह इवेंट
निर्धारित कार्य
ऑपरेशन से पहले का इवेंट
ऑपरेशन के बाद का इवेंट
कस्टम ऑपरेशन इवेंट
अनुमोदन
Webhook

नोड

अवलोकन

AI

लार्ज लैंग्वेज मॉडल

फ्लो कंट्रोल

शर्त
बहु-शर्त शाखा
लूप
वैरिएबल
समानांतर शाखा
वर्कफ़्लो कॉल करें
आउटपुट
JSON वैरिएबल मैपिंग
विलंब
समाप्त

गणना

गणना
तिथि गणना
JSON गणना

डेटा ऑपरेशन

डेटा बनाएँ
डेटा अपडेट करें
डेटा क्वेरी करें
डेटा हटाएँ
SQL ऑपरेशन

मैनुअल प्रोसेसिंग

मैनुअल प्रोसेसिंग
अनुमोदन
CC

विस्तारित प्रकार

HTTP रिक्वेस्ट
JavaScript
सूचना
ईमेल भेजें
प्रतिक्रिया
प्रतिक्रिया संदेश
वैरिएबल
निष्पादन इतिहास
संस्करण प्रबंधन
उन्नत विकल्प

एक्सटेंशन विकास

अवलोकन
ट्रिगर प्रकारों का विस्तार करना
नोड प्रकारों का विस्तार करना
API संदर्भ
Previous PageHTTP रिक्वेस्ट
Next Pageसूचना
AI अनुवाद सूचना

यह दस्तावेज़ AI द्वारा अनुवादित है। सटीक जानकारी के लिए कृपया अंग्रेज़ी संस्करण देखें।

#JavaScript स्क्रिप्ट

Workflow: JavaScript NodeCommunity Edition+

#परिचय

JavaScript स्क्रिप्ट नोड उपयोगकर्ताओं को वर्कफ़्लो में कस्टम सर्वर-साइड JavaScript स्क्रिप्ट का एक टुकड़ा निष्पादित करने की अनुमति देता है। स्क्रिप्ट में वर्कफ़्लो के अपस्ट्रीम वेरिएबल्स को पैरामीटर के रूप में उपयोग किया जा सकता है, और स्क्रिप्ट के रिटर्न मान को डाउनस्ट्रीम नोड्स के उपयोग के लिए प्रदान किया जा सकता है।

स्क्रिप्ट NocoBase एप्लिकेशन के सर्वर पर एक वर्कर थ्रेड में चलेगी, और Node.js की अधिकांश विशेषताओं का समर्थन करती है, लेकिन मूल निष्पादन वातावरण के साथ अभी भी कुछ अंतर हैं, विवरण के लिए विशेषता सूची देखें।

#नोड बनाएँ

वर्कफ़्लो कॉन्फ़िगरेशन इंटरफ़ेस में, फ़्लो में प्लस ("+") बटन पर क्लिक करें और "JavaScript" नोड जोड़ें:

20241202203457

#नोड कॉन्फ़िगरेशन

20241202203655

#पैरामीटर

स्क्रिप्ट में वर्कफ़्लो संदर्भ के वेरिएबल्स या स्टैटिक मान पास करने के लिए उपयोग किया जाता है, ताकि स्क्रिप्ट में कोड लॉजिक उनका उपयोग कर सके। जहाँ name पैरामीटर का नाम है, जो स्क्रिप्ट में पास होने के बाद वेरिएबल नाम के रूप में कार्य करता है। value पैरामीटर का मान है, आप वेरिएबल चुन सकते हैं या स्थिरांक (constant) इनपुट कर सकते हैं।

#स्क्रिप्ट सामग्री

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

कोड लिखने के बाद, आप एडिटिंग बॉक्स के नीचे टेस्ट बटन के माध्यम से टेस्ट निष्पादन डायलॉग खोल सकते हैं, और सिमुलेशन निष्पादन के लिए पैरामीटर्स में स्टैटिक मान भर सकते हैं। निष्पादन के बाद, आप डायलॉग में रिटर्न मान और आउटपुट (लॉग) सामग्री देख सकते हैं।

20241202203833

#टाइमआउट सेटिंग

इकाई मिलीसेकंड में है, जब इसे 0 पर सेट किया जाता है तो इसका मतलब है कि कोई टाइमआउट सेट नहीं है।

#त्रुटि के बाद वर्कफ़्लो जारी रखें

चेक करने के बाद, स्क्रिप्ट में त्रुटि होने या टाइमआउट त्रुटि होने पर भी बाद के नोड्स निष्पादित होंगे।

提示

स्क्रिप्ट त्रुटि के बाद कोई रिटर्न मान नहीं होगा, और नोड का परिणाम त्रुटि जानकारी से भर जाएगा। यदि बाद के नोड्स में स्क्रिप्ट नोड के परिणाम वेरिएबल का उपयोग किया जाता है, तो सावधानी बरतने की आवश्यकता है।

#विशेषता सूची

#Node.js वर्ज़न

मुख्य एप्लिकेशन चलाने वाले Node.js वर्ज़न के समान।

#मॉड्यूल समर्थन

स्क्रिप्ट में मॉड्यूल का सीमित उपयोग किया जा सकता है, CommonJS के समान, कोड में मॉड्यूल पेश करने के लिए require() निर्देश का उपयोग करें।

Node.js नेटिव मॉड्यूल और node_modules में पहले से इंस्टॉल मॉड्यूल (NocoBase द्वारा उपयोग किए गए डिपेंडेंसी पैकेज सहित) समर्थित हैं। कोड में उपयोग किए जाने वाले मॉड्यूल को एप्लिकेशन एनवायरनमेंट वेरिएबल WORKFLOW_SCRIPT_MODULES में घोषित किया जाना चाहिए, कई पैकेज नामों को अल्पविराम (comma) द्वारा अलग किया जाना चाहिए, उदाहरण के लिए:

WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
提示

एनवायरनमेंट वेरिएबल WORKFLOW_SCRIPT_MODULES में घोषित नहीं किए गए मॉड्यूल, भले ही वे Node.js नेटिव हों या node_modules में इंस्टॉल हों, स्क्रिप्ट में उपयोग नहीं किए जा सकते। यह रणनीति运维 (operations) स्तर पर उपयोगकर्ताओं द्वारा उपयोग किए जा सकने वाले मॉड्यूल की सूची को नियंत्रित करने के लिए उपयोग की जा सकती है, जिससे कुछ परिदृश्यों में स्क्रिप्ट अनुमतियों को बहुत अधिक होने से रोका जा सके।

गैर-सोर्स कोड परिनियोजन (deployment) वातावरण में, यदि कोई मॉड्यूल node_modules में इंस्टॉल नहीं है, तो आप आवश्यक पैकेज को मैन्युअल रूप से storage डायरेक्टरी में इंस्टॉल कर सकते हैं। उदाहरण के लिए, जब exceljs पैकेज की आवश्यकता हो, तो आप निम्न कार्य कर सकते हैं:

cd storage
npm i --no-save --no-package-lock --prefix . exceljs

फिर एप्लिकेशन CWD (वर्तमान कार्य डायरेक्टरी) के आधार पर पैकेज का सापेक्ष (या पूर्ण पथ) एनवायरनमेंट वेरिएबल WORKFLOW_SCRIPT_MODULES में जोड़ें:

WORKFLOW_SCRIPT_MODULES=./storage/node_modules/exceljs

इसके बाद आप स्क्रिप्ट में exceljs पैकेज का उपयोग कर सकते हैं (require का नाम एनवायरनमेंट वेरिएबल में परिभाषित नाम के बिल्कुल समान होना चाहिए):

const ExcelJS = require('./storage/node_modules/exceljs');
// ...

#ग्लोबल वेरिएबल्स

global, process, __dirname और __filename जैसे ग्लोबल वेरिएबल्स समर्थित नहीं हैं।

console.log(global); // will throw error: "global is not defined"

#इनपुट पैरामीटर

नोड में कॉन्फ़िगर किए गए पैरामीटर स्क्रिप्ट में ग्लोबल वेरिएबल्स के रूप में कार्य करेंगे और सीधे उपयोग किए जा सकते हैं। स्क्रिप्ट में पास किए गए पैरामीटर केवल मूल प्रकारों का समर्थन करते हैं, जैसे boolean, number, string, object और एरे। Date ऑब्जेक्ट पास होने के बाद ISO फॉर्मेट पर आधारित स्ट्रिंग में बदल जाएगा। अन्य जटिल प्रकार सीधे पास नहीं किए जा सकते, जैसे कस्टम क्लास के इंस्टेंस आदि।

#रिटर्न मान

return स्टेटमेंट के माध्यम से मूल प्रकार का डेटा (पैरामीटर नियमों के समान) परिणाम के रूप में नोड पर वापस भेजा जा सकता है। यदि कोड में return स्टेटमेंट कॉल नहीं किया जाता है, तो नोड निष्पादन का कोई रिटर्न मान नहीं होगा।

return 123;

#आउटपुट (लॉग)

लॉग आउटपुट करने के लिए console के उपयोग का समर्थन करता है।

console.log('hello world!');

वर्कफ़्लो निष्पादन के दौरान, स्क्रिप्ट नोड का आउटपुट संबंधित वर्कफ़्लो की लॉग फ़ाइल में भी रिकॉर्ड किया जाएगा।

#एसिंक्रोनस

एसिंक्रोनस फ़ंक्शन को परिभाषित करने के लिए async और एसिंक्रोनस फ़ंक्शन को कॉल करने के लिए await के उपयोग का समर्थन करता है। Promise ग्लोबल ऑब्जेक्ट के उपयोग का समर्थन करता है।

async function test() {
  return Promise.resolve(1);
}

const value = await test();
return value;

#टाइमर

यदि setTimeout, setInterval या setImmediate जैसे तरीकों का उपयोग करने की आवश्यकता है, तो उन्हें Node.js के timers पैकेज के माध्यम से पेश किया जाना चाहिए।

const { setTimeout, setInterval, setImmediate, clearTimeout, clearInterval, clearImmediate } = require('timers');

async function sleep(time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

await sleep(1000);

return 123;