साइकिल। एक्सेल फ़ाइलें आयात करें
व्यापार प्रक्रिया में चक्रों का उपयोग करना। एक्सेल फाइलों से डेटा पढ़ें।
आगे की प्रक्रिया को समझने के लिए थ्योरी में थोड़ा और चक्रों के सिद्धांत को समझना जरूरी है। पहले हमारी सारी प्रक्रियाएँ ही आगे बढ़ती थीं। वे एक विशिष्ट कांटा ( If-Else और Switch ब्लॉक पर) चुन सकते थे, लेकिन हम निश्चित रूप से जानते थे कि प्रत्येक ब्लॉक केवल एक बार निष्पादित किया जाएगा; वापस नहीं जाना होगा।
साइकिल
चक्र एक विशेष खंड को कई बार दोहराने की क्षमता प्रदान करते हैं। प्रक्रिया इसलिए बनाई गई है ताकि ब्लॉकों के चयनित अनुक्रम को बार-बार निष्पादित किया जा सके। जब तक लूप को समाप्त करने की शर्त पूरी नहीं हो जाती।
AppMaster आपको तीन अलग-अलग प्रकार के चक्रों का उपयोग करने की क्षमता देता है। उनके काम का सिद्धांत बिल्कुल समान है। लूप को समाप्त करने की शर्त ही उन्हें एक दूसरे से अलग करती है।
- Loop । सभी चक्रों में सबसे सरल। इसका Times (Integer) पैरामीटर एक निश्चित मान निर्धारित करता है कि दिए गए लूप को कितनी बार निष्पादित किया जाना चाहिए।
- While loop । एक लूप जो एक निश्चित शर्त पूरी होने तक चलेगा। यह शर्त Condition (Boolean) पैरामीटर में निर्दिष्ट है। प्रत्येक लूप की शुरुआत में, Condition वैल्यू चेक की जाती है; यदि यह True है, तो लूप निष्पादित किया जाता है; यदि यह False है, तो लूप बंद हो जाता है। Limit (Integer) पैरामीटर लूप के दोहराव की संख्या पर सीमा निर्धारित करता है ताकि यह सुनिश्चित हो सके कि लूप हमेशा के लिए नहीं चलता है। जब यह पहुंच जाता है, तो Condition के मूल्य की परवाह किए बिना लूप समाप्त हो जाएगा।
- For each loop । सरणियों के साथ काम करने के लिए डिज़ाइन किया गया लूप। यह इनपुट के रूप में एक सरणी लेता है और आपको प्रत्येक सरणी तत्व पर एक निश्चित ऑपरेशन करने की अनुमति देता है। जितनी बार सरणी में तत्व होते हैं उतनी बार चलता है।
प्रत्येक चक्र में दो आउटपुट धाराएँ होती हैं।
- Loop Body । लूप बॉडी ही। वह प्रक्रिया, जिसे आवश्यक संख्या में बार-बार दोहराया जाएगा।
- Completed । लूप समाप्त होने पर धागा चलेगा। निर्दिष्ट करता है कि लूप समाप्त होने के बाद आगे क्या करना है। वैसे, किसी भी चक्र को प्रारंभिक शर्तों के पूरा होने की प्रतीक्षा किए बिना कमांड पर पूरा किया जा सकता है। ऐसा करने के लिए, आपको बस Break Loop ब्लॉक को सही जगह पर उपयोग करने की आवश्यकता है। यह तुरंत स्ट्रीम को Completed में स्थानांतरित कर देगा।
Read XLSX File
xlsx फ़ाइल के विश्लेषण के लिए, हम Read XLSX File ब्लॉक का उपयोग करेंगे। इसके संचालन का सिद्धांत लगभग For each loop ब्लॉक के समान है। यह तालिका फ़ाइल को स्ट्रिंग्स की एक सरणी के रूप में दर्शाता है। और प्रत्येक पंक्ति, बदले में, एक सरणी भी है, लेकिन पहले से ही दी गई पंक्ति के स्तंभों की एक सरणी है।
xlsx फ़ाइल स्वयं एक समान रूप में प्रस्तुत की जाती है। पहले कॉलम में सेक्शन का नाम होता है, और दूसरे कॉलम में वह जानकारी होती है जो इस सेक्शन में होती है। उसी समय, हम पहले से नहीं जानते हैं कि जानकारी कहाँ लिखी गई है; यह किसी भी मनमानी जगह पर प्रकट हो सकता है। इस उदाहरण में, जीवनी दूसरी पंक्ति पर इंगित की गई है, और लॉगिन आठवीं पर है, लेकिन जिस पंक्ति और क्रम में वे लिखे गए हैं वह कोई भी हो सकता है।
व्यवसाय प्रक्रिया एक इनपुट पैरामीटर के रूप में एक फ़ाइल प्राप्त करके शुरू होती है। कृपया ध्यान दें कि यह फ़ाइल डेटा प्रकार है, यानी फ़ाइल आईडी, जो प्रसारित होती है, न कि संपूर्ण फ़ाइल। हम उसी फाइल को Read XLSX File ब्लॉक में पास करते हैं।
Each row , इस मामले में, Loop Body का एक एनालॉग है। इसका मतलब है कि लूप को उतनी बार निष्पादित किया जाएगा जितनी बार xlsx फ़ाइल में पंक्तियाँ हैं। उसी समय, प्रत्येक चक्र, हमें इस बारे में जानकारी प्राप्त होती है कि अब कौन सी पंक्ति संसाधित की जा रही है ( Row number ), साथ ही इस पंक्ति में कौन से कॉलम हैं ( Row columns )।
हमारा काम प्रत्येक पंक्ति के पहले सेल की जांच करना है। हम एक सेल खोजने की उम्मीद करते हैं जो "लॉगिन" या "बायो" कहता है। इस तरह, हम समझेंगे कि हमें आवश्यक जानकारी वाला एक कॉलम मिला है।
ऐसा करने के लिए, हमें 0 के सूचकांक के साथ एक Array Element ब्लॉक की आवश्यकता है। इस प्रकार हम स्ट्रिंग के पहले सेल की सामग्री प्राप्त करते हैं। उसके बाद, हम वांछित मिलान (लॉगिन, बायो) को खोजने के लिए Switch ब्लॉक का उपयोग करते हैं।
यदि ऐसा कोई मिलान नहीं मिलता है, तो लूप अगली पंक्ति की जाँच करते हुए अगले पुनरावृत्ति पर जाता है। यदि पाया जाता है, तो हम समझते हैं कि इस पंक्ति के दूसरे सेल में वह जानकारी होनी चाहिए जिसकी हमें आवश्यकता है और इस जानकारी को प्राप्त करने के लिए फिर से Array Element ब्लॉक (लेकिन इंडेक्स 1 के साथ) का उपयोग करें।
यह केवल इस जानकारी को सहेजने के लिए बनी हुई है। आखिरकार, यदि आप इसे तुरंत नहीं करते हैं, तो चक्र बस चलता रहेगा, और प्राप्त डेटा खो जाएगा।
चर
इस स्थिति में सबसे अच्छा समाधान चरों का उपयोग करना होगा। उनका अर्थ इस तथ्य में निहित है कि कुछ मान एक ब्लॉक से दूसरे ब्लॉक में तुरंत स्थानांतरित नहीं होते हैं बल्कि स्मृति में संग्रहीत होते हैं और यदि आवश्यक हो तो उपयोग किए जाते हैं।
इसके लिए दो ब्लॉक हैं:
- Variable ब्लॉक। यह कोई भी संख्या, स्ट्रिंग या वस्तुओं की एक सरणी भी हो सकती है। यह समझना महत्वपूर्ण है कि यह ब्लॉक स्वयं कुछ नहीं करता है; इसका कोई इनपुट पैरामीटर नहीं है। यह केवल इस तथ्य की घोषणा करने के लिए कार्य करता है कि कुछ मूल्य लिखने के लिए स्मृति में एक स्थान आवंटित किया जाता है, बाद में इसे फिर से संदर्भित करने और इस मूल्य का पता लगाने की संभावना के साथ।
- Set Variable ब्लॉक को एक वेरिएबल के लिए एक नया मान लिखने के लिए डिज़ाइन किया गया है।
हमारे मामले में, हम String प्रकार के दो चर परिभाषित करेंगे और उनमें पाए गए मान लिखेंगे, एक जगह लॉगिन और दूसरी बायो में। लूप के अंत में, हमें केवल इन वेरिएबल से अंतिम ब्लॉक तक मान पास करने की आवश्यकता है।
अब समय आ गया है कि तैयार व्यवसाय प्रक्रिया के लिए एक समापन बिंदु बनाया जाए और इस तरह इसे वेब एप्लिकेशन फ्रंट-एंड पर उपयोग के लिए उपलब्ध कराया जाए।
अंतिम परिणाम
परिणामस्वरूप व्यावसायिक प्रक्रिया यह होनी चाहिए:
एप्लिकेशन के निर्माण को पूरा करने के लिए अंतिम चरण हैं। आइए फ़्रंटएंड व्यवसाय प्रक्रिया पर वापस जाएं और इसे समाप्त करें। ज़रुरत है:
- सर्वर पर सहेजने के लिए xlsx फ़ाइल मॉडल पास करें।
- परिणाम का विस्तार करें और फ़ाइल आईडी प्राप्त करें।
- इस आईडी को पहले बनाए गए एंडपॉइंट POST /xlsx-data/ पर पास करें
- उपयुक्त क्षेत्रों में प्रदर्शित करने के लिए प्राप्त डेटा का उपयोग करें (और Disable पैरामीटर को रीसेट करने के लिए, संपादन की संभावना को खोलते हुए)।
यदि सब कुछ सही ढंग से किया गया था, तो फाइलों से जानकारी लोड करने के बाद अंतिम संस्करण इस तरह दिखना चाहिए।