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

परिचय

FlowEngine क्या है?
FlowEngine और Plugin के बीच संबंध
क्विक स्टार्ट
लर्निंग रोडमैप

गाइड

FlowModel रजिस्टर करें
FlowModel बनाएँ
FlowModel रेंडर करें
FlowModel इवेंट फ्लो और कॉन्फ़िगरेशन
FlowModel परसिस्टेंस
FlowModel लाइफसाइकिल
FlowModel कॉन्टेक्स्ट सिस्टम
रिएक्टिव मैकेनिज्म: Observable
FlowModel बनाम React.Component
RunJS Plugin एक्सटेंशन पॉइंट्स

डेफिनेशंस

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageFlowModel लाइफसाइकिल
Next Pageरिएक्टिव मैकेनिज्म: Observable
AI अनुवाद सूचना

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

#संदर्भ प्रणाली का अवलोकन

NocoBase वर्कफ़्लो इंजन की संदर्भ प्रणाली तीन परतों में विभाजित है, जिनमें से प्रत्येक एक अलग कार्यक्षेत्र (scope) के अनुरूप है। इनका उचित उपयोग सेवाओं, कॉन्फ़िगरेशन और डेटा के लचीले साझाकरण और अलगाव को प्राप्त कर सकता है, जिससे व्यवसाय की रखरखाव क्षमता और स्केलेबिलिटी में सुधार होता है।

  • FlowEngineContext (ग्लोबल संदर्भ): वैश्विक रूप से अद्वितीय, सभी मॉडल और वर्कफ़्लो द्वारा सुलभ, वैश्विक सेवाओं, कॉन्फ़िगरेशन आदि को पंजीकृत करने के लिए उपयुक्त।
  • FlowModelContext (मॉडल संदर्भ): मॉडल ट्री के भीतर संदर्भ साझा करने के लिए उपयोग किया जाता है, उप-मॉडल स्वचालित रूप से पैरेंट मॉडल संदर्भ को डेलीगेट (delegate) करते हैं, समान नाम ओवरराइड का समर्थन करते हैं, मॉडल-स्तरीय लॉजिक और डेटा अलगाव के लिए उपयुक्त।
  • FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ): प्रत्येक वर्कफ़्लो निष्पादन पर बनाया जाता है, जो पूरे वर्कफ़्लो रनिंग चक्र में चलता है, वर्कफ़्लो में डेटा ट्रांसफर, वेरिएबल स्टोरेज, रनिंग स्थिति रिकॉर्डिंग आदि के लिए उपयुक्त। यह mode: 'runtime' | 'settings' दो मोड का समर्थन करता है, जो क्रमशः रनटाइम मोड और कॉन्फ़िगरेशन मोड के अनुरूप हैं।

सभी FlowEngineContext (ग्लोबल संदर्भ), FlowModelContext (मॉडल संदर्भ), FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ) आदि, FlowContext के उप-वर्ग या इंस्टेंस हैं।


#🗂️ पदानुक्रम आरेख

FlowEngineContext (ग्लोबल संदर्भ)
│
├── FlowModelContext (मॉडल संदर्भ)
│     ├── उप FlowModelContext (उप-मॉडल)
│     │     ├── FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ)
│     │     └── FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ)
│     └── FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ)
│
├── FlowModelContext (मॉडल संदर्भ)
│     └── FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ)
│
└── FlowModelContext (मॉडल संदर्भ)
      ├── उप FlowModelContext (उप-मॉडल)
      │     └── FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ)
      └── FlowRuntimeContext (वर्कफ़्लो रनटाइम संदर्भ)
  • FlowModelContext डेलीगेट (delegate) तंत्र के माध्यम से FlowEngineContext के गुणों और विधियों तक पहुँच सकता है, जिससे वैश्विक क्षमताओं को साझा किया जा सकता है।
  • उप-मॉडल का FlowModelContext डेलीगेट (delegate) तंत्र के माध्यम से पैरेंट मॉडल के संदर्भ (सिंक्रोनस संबंध) तक पहुँच सकता है, और समान नाम ओवरराइड का समर्थन करता है।
  • एसिंक्रोनस पैरेंट-चाइल्ड मॉडल डेलीगेट (delegate) संबंध स्थापित नहीं करते हैं, ताकि स्थिति प्रदूषण (state pollution) से बचा जा सके।
  • FlowRuntimeContext हमेशा डेलीगेट (delegate) तंत्र के माध्यम से अपने संबंधित FlowModelContext तक पहुँचता है, लेकिन यह ऊपर की ओर वापस नहीं भेजता है।

#🧭 रनटाइम और कॉन्फ़िगरेशन मोड (mode)

FlowRuntimeContext दो मोड का समर्थन करता है, जिन्हें mode पैरामीटर द्वारा अलग किया जाता है:

  • mode: 'runtime' (रनटाइम मोड): वर्कफ़्लो के वास्तविक निष्पादन चरण के लिए उपयोग किया जाता है, जहाँ गुण और विधियाँ वास्तविक डेटा लौटाते हैं। उदाहरण के लिए:

    console.log(runtimeCtx.steps.step1.result); // 42
  • mode: 'settings' (कॉन्फ़िगरेशन मोड): वर्कफ़्लो डिज़ाइन और कॉन्फ़िगरेशन चरण के लिए उपयोग किया जाता है, जहाँ गुण एक्सेस वेरिएबल टेम्पलेट स्ट्रिंग लौटाता है, जिससे एक्सप्रेशन और वेरिएबल चयन में आसानी होती है। उदाहरण के लिए:

    console.log(settingsCtx.steps.step1.result); // '{{ ctx.steps.step1.result }}'

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


#🤖 टूल/LLM के लिए संदर्भ जानकारी

कुछ परिदृश्यों में (जैसे JS*Model का RunJS कोड संपादन, AI कोडिंग), "कॉल करने वाले" को कोड निष्पादित किए बिना यह समझने की आवश्यकता होती है कि:

  • वर्तमान ctx के तहत कौन सी स्थिर क्षमताएं (API दस्तावेज़, पैरामीटर, उदाहरण, दस्तावेज़ लिंक आदि) उपलब्ध हैं।
  • वर्तमान इंटरफ़ेस/रनटाइम में कौन से वैकल्पिक वेरिएबल (जैसे "वर्तमान रिकॉर्ड", "वर्तमान पॉपअप रिकॉर्ड" आदि गतिशील संरचनाएं) मौजूद हैं।
  • वर्तमान रनिंग वातावरण का छोटा स्नैपशॉट (प्रॉम्प्ट के लिए उपयोग किया जाता है)।

#1) await ctx.getApiInfos(options?) (स्थिर API जानकारी)

#2) await ctx.getVarInfos(options?) (वेरिएबल संरचना जानकारी)

  • defineProperty(...).meta (मेटा फैक्ट्री सहित) पर आधारित वेरिएबल संरचना का निर्माण।
  • path क्लिपिंग और maxDepth गहराई नियंत्रण का समर्थन करता है।
  • केवल आवश्यकता होने पर ही नीचे की ओर विस्तारित होता है।

सामान्य पैरामीटर:

  • maxDepth: अधिकतम विस्तार स्तर (डिफ़ॉल्ट 3)
  • path: string | string[]: क्लिपिंग, केवल निर्दिष्ट पाथ सब-ट्री को आउटपुट करता है।

#3) await ctx.getEnvInfos() (रनटाइम वातावरण स्नैपशॉट)

नोड संरचना (सरलीकृत):

type EnvNode = {
  description?: string;
  getVar?: string; // इसे सीधे await ctx.getVar(getVar) के लिए उपयोग किया जा सकता है, जो "ctx." से शुरू होता है
  value?: any; // पार्स किया गया/सीरियलाइज़ करने योग्य स्थिर मान
  properties?: Record<string, EnvNode>;
};