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

ट्रिगर

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

नोड

अवलोकन

AI

LLM

फ्लो कंट्रोल

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

गणना

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

डेटा ऑपरेशन

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

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

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

एक्सटेंशन प्रकार

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

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

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

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

#जावास्क्रिप्ट स्क्रिप्ट

#परिचय

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

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

#नोड बनाएँ

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

20241202203457

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

20241202203655

#पैरामीटर

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

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

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

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

20241202203833

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

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

#त्रुटि होने पर भी वर्कफ़्लो जारी रखें

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

टिप

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

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

#Node.js वर्ज़न

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

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

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

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

WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
टिप

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

गैर-स्रोत-तैनात (non-source-deployed) वातावरण में, यदि कोई मॉड्यूल 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 पैकेज का उपयोग कर सकते हैं:

const ExcelJS = require('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;