ExpressionScript इंजन - त्वरित प्रारंभ गाइड
From LimeSurvey Manual
त्वरित प्रारंभ गाइड
LimeSurvey में आप ExpressionScript (संक्षेप में: ES) का उपयोग करके अपने सर्वेक्षणों को और अधिक अनुकूलित कर सकते हैं। साइडनोट: "ExpressionScript को पहले के संस्करणों में Expression Manager (EM) कहा जाता था। यदि आपको कहीं Expression Manager लिखा दिखे, तो वह ES का पुराना नाम है।"
ES का उपयोग निम्नलिखित को निर्दिष्ट करने के लिए किया जा सकता है:
- नेविगेशन/ब्रांचिंग - प्रतिभागी के उत्तरों के आधार पर प्रश्नों के प्रदर्शित होने का क्रम बदलने की सुविधा देता है;
- टेलरिंग/पाइपिंग - प्रश्न को लिखने में मदद करता है (जैसे पिछले उत्तरों का संदर्भ देना, या आपके विषयों की आयु या लिंग के आधार पर वाक्यों को ढालना) या कस्टम रिपोर्ट बनाने में मदद करता है (जैसे मूल्यांकन स्कोर या अनुकूलित सलाह);
- सत्यापन - यह सुनिश्चित करता है कि उत्तर कुछ मानदंडों को पूरा करें, जैसे न्यूनतम और अधिकतम मान या कोई निश्चित इनपुट पैटर्न।
ES इनमें से प्रत्येक सुविधा के लिए तर्क निर्दिष्ट करने का एक सहज तरीका प्रदान करता है। जिसे भी आप सामान्य गणितीय समीकरण के रूप में लिख सकते हैं, लगभग वह हर चीज़ एक मान्य एक्सप्रेशन है।
ES वर्तमान में 70 फ़ंक्शन तक पहुँच प्रदान करता है और अधिक फ़ंक्शन जोड़ने के लिए इसे आसानी से विस्तारित किया जा सकता है। यह आपको अपने वेरिएबल्स को मानव-पठनीय वेरिएबल नामों के माध्यम से एक्सेस करने की सुविधा भी देता है (SGQA नामों के बजाय)।
आगामी अनुभाग उन मुख्य स्थानों को दिखाते हैं जहाँ ES का उपयोग किया जाता है।
प्रासंगिकता (नेविगेशन/ब्रांचिंग को नियंत्रित करना)
कुछ सर्वेक्षण "Goto Logic" का उपयोग करते हैं, जिसमें यदि आप Question1 का उत्तर विकल्प C से देते हैं, तो आपको Question5 पर भेज दिया जाता है। यह तरीका बहुत सीमित है क्योंकि इसे सत्यापित करना कठिन होता है। इसके अलावा, प्रश्नों का क्रम बदलने पर यह आसानी से टूट जाता है। दूसरी ओर, ES उन सभी शर्तों को निर्दिष्ट करने के लिए बूलियन प्रासंगिकता समीकरण का उपयोग करता है जिनके अंतर्गत कोई प्रश्न मान्य हो सकता है। यदि प्रश्न प्रासंगिक है, तो प्रश्न दिखाया जाता है; अन्यथा वह लागू नहीं होता और डेटाबेस में मान "NULL" संग्रहीत किया जाता है।
प्रासंगिकता की अवधारणा को बेहतर ढंग से समझने के लिए, आइए निम्नलिखित सर्वेक्षण पर ध्यान दें जो सर्वेक्षण प्रतिभागियों का बॉडी मास इंडेक्स (BMI) गणना करता है। इसे डाउनलोड करने के लिए निम्नलिखित लिंक पर क्लिक करें: बॉडी मास इंडेक्स सर्वेक्षण उदाहरण।
प्रासंगिकता समीकरण नीचे प्रासंगिकता कॉलम में वेरिएबल नाम के बाद दिखाया गया है। weight, weight_units, height और height_units के प्रासंगिकता मान सभी 1 (डिफ़ॉल्ट मान) हैं, जिसका अर्थ है कि ये प्रश्न हमेशा प्रदर्शित होते हैं। हालाँकि, BMI की प्रासंगिकता {!is_empty(height) and !is_empty(weight)} है, जिसका अर्थ है कि BMI की गणना तभी होगी जब विषय height और weight दोनों के लिए मान दर्ज करे (इस प्रकार शून्य त्रुटि का जोखिम टल जाता है)। साथ ही, प्रश्न "Report" तभी दिखाया जाता है जब प्रतिभागी चारों मुख्य प्रश्नों (height, heightunits, weight, weightunits) के उत्तर दे दे।

प्रासंगिकता तब दिखाई जाती है और संपादन योग्य होती है जब:
- आप प्रश्न-स्तर की प्रासंगिकता देखना/एडिट करना चाहते हैं
- आप समूह-स्तर की प्रासंगिकता देखना/एडिट करना चाहते हैं
प्रश्न-स्तर की प्रासंगिकता देखना / एडिट करना
यह समीकरण बॉडी मास इंडेक्स (BMI) की गणना करता है। यह तभी पूछा जाता है जब व्यक्ति अपनी height और weight दर्ज करता है।

यह "BMI" प्रश्न की एडिट स्क्रीन है।

ध्यान दें कि प्रासंगिकता समीकरण दर्ज करते समय आप कर्ली ब्रेसेस का उपयोग नहीं करते हैं।
समूह-स्तर की प्रासंगिकता देखना / एडिट करना
आइए अब एक अन्य उदाहरण पर ध्यान दें - एक सरल जनगणना सर्वेक्षण। इसे डाउनलोड करने के लिए निम्नलिखित लिंक पर क्लिक करें: जनगणना सर्वेक्षण उदाहरण।
पहला पृष्ठ पूछता है कि आपके साथ कितने लोग रहते हैं और उसे "cohabs" वेरिएबल में संग्रहीत करता है। यह पृष्ठ तभी दिखाया जाता है जब आपके साथ एक से अधिक लोग रहते हों (यह आपके साथ रहने वाले दूसरे व्यक्ति के लिए दिखाया जाता है)। साथ ही, p2name, p2age, p2sum तभी प्रदर्शित होते हैं जब उनमें से प्रत्येक से पहले वाले प्रश्न में कोई प्रतिक्रिया हो।

तो, समूह में प्रश्न-स्तर के प्रासंगिकता मानदंड भी हैं, जिससे कुछ प्रश्न तभी दिखाई देते हैं जब आपने उनसे पहले के कुछ प्रश्नों के उत्तर दिए हों (जैसे, p2age तब प्रदर्शित होता है जब p2name का उत्तर दिया गया हो)। ES आपके लिए समूह और प्रश्न-स्तर की प्रासंगिकता को जोड़ देता है। किसी समूह के प्रश्न तभी पूछे जाते हैं जब पूरा समूह प्रासंगिक हो। उसके बाद, समूह के भीतर केवल वही प्रश्न पूछे जाते हैं जो प्रासंगिक हों।
Cohabitant 2 की समूह-स्तर की प्रासंगिकता एडिट करने का स्क्रीनशॉट यहाँ है:

ध्यान दें कि प्रासंगिकता समीकरण दर्ज करते समय आप कर्ली ब्रेसेस का उपयोग नहीं करते हैं।
टेलरिंग/पाइपिंग
ES की मदद से आप आसानी से सरल और जटिल सशर्त टेलरिंग कर सकते हैं। कभी-कभी आपको केवल एक सरल प्रतिस्थापन की आवश्यकता होती है, जैसे: "आपने कहा कि आपने [उत्पाद] खरीदा है। आपको इसके बारे में सबसे अच्छा क्या लगा?"। कभी-कभी आपको सशर्त प्रतिस्थापन की आवश्यकता होती है, जैसे "[श्री/श्रीमती] [उपनाम], क्या आप हमारा सर्वेक्षण पूरा करना चाहेंगे?"। इस स्थिति में, आप व्यक्ति के लिंग के आधार पर "श्री या श्रीमती" का उपयोग करना चाहते हैं। अन्य अवसरों पर आपको और भी जटिल प्रतिस्थापन की आवश्यकता होती है (जैसे किसी गणितीय गणना पर आधारित)। ES इन सभी प्रकार की टेलरिंग/पाइपिंग को सपोर्ट करता है।
सशर्त समीकरण
बॉडी मास इंडेक्स का उदाहरण किसी व्यक्ति के BMI की गणना करने की क्षमता दिखाता है, यहाँ तक कि उन्हें अपनी ऊँचाई और वज़न दो अलग-अलग इकाइयों में दर्ज करने की सुविधा देते हुए (सेमी बनाम इंच और किग्रा बनाम पाउंड):

इस उदाहरण में, weightkg है {if(weightunits == "kg", weight, weight * 0.453592)}। इस "if()" फ़ंक्शन का अर्थ है कि यदि विषय किलोग्राम में वज़न दर्ज करता है, तो वही मान उपयोग करें; अन्यथा दर्ज किए गए मान (विकल्प के रूप में पाउंड) को किलोग्राम में बदलने के लिए 0.453592 से गुणा करें। heightm वैरिएबल भी इसी तरह व्यक्ति की ऊँचाई मीटर में (सेमी में ऊँचाई/100) निकालता है, भले ही उसने अपनी ऊँचाई इंच में दर्ज की हो (1 मीटर = 3.28084 इंच)।
BMI की गणना इस प्रकार की जाती है: {weightkg / (heightm * heightm)}।
अंत में, रिपोर्ट विषय के लिए संदेश को सशर्त रूप से अनुकूलित करती है और बताती है कि उसने क्या दर्ज किया था। (उदाहरण: "आपने कहा कि आपकी ऊँचाई 2 मीटर और वज़न 70 किग्रा है।")
नीचे दी गई इमेज में, weightstatus नेस्टेड "if()" स्टेटमेंट का उपयोग करके व्यक्ति को कम वज़न से लेकर अत्यधिक मोटापे तक की श्रेणियों में बाँटता है। इसका समीकरण आप इसका लॉजिक देखकर समझ सकते हैं:

इस प्रश्न की एडिट विंडो से आप दो बातें देख सकते हैं:
- टेलरिंग में एक्सप्रेशन को कर्ली ब्रेसेस से घेरना ज़रूरी है
- एक्सप्रेशन कई पंक्तियों में हो सकते हैं, जैसा कि इस मामले में है, ताकि नेस्टेड सशर्त लॉजिक पढ़ना आसान हो।

अनुकूलित प्रश्न, उत्तर और रिपोर्ट
BMI रिपोर्ट कुछ इस तरह दिखती है:

यह उसी प्रश्न की एडिट विंडो है।

कर्ली ब्रेसेस के अंदर की हर चीज़ को एक्सप्रेशन माना जाता है, जिसे पिछली इमेज में सिंटैक्स-हाइलाइट (रंग-कोडित) किया गया है। यदि आपसे कोई टाइपिंग की गलती होती है (जैसे वैरिएबल या फ़ंक्शन के नाम की गलत वर्तनी या अपरिभाषित नाम), तो ES एक त्रुटि दिखाएगा। हमारे नीचे दिए गए उदाहरण में:
- heightunit.shown एक अपरिभाषित वैरिएबल नाम है (वास्तव में यह heightunits.shown है) और
- "rnd()" एक अपरिभाषित फ़ंक्शन है (सही फ़ंक्शन नाम "round()" है)।
दोनों मामलों में, त्रुटियाँ लाल बॉक्स के भीतर दिखाई जाती हैं ताकि उन्हें पहचानना और ठीक करना आसान हो।

आप यह भी देख सकते हैं कि आप दर्ज किए गए मानों की तालिका या अनुकूलित सलाह जैसी जटिल रिपोर्ट जल्दी से बना सकते हैं।
कृपया याद रखें कि सभी टेलरिंग में एक्सप्रेशन को कर्ली ब्रेसेस से घेरना ज़रूरी है, ताकि LimeSurvey को पता चले कि प्रश्न का कौन सा भाग सामान्य टेक्स्ट है और कौन सा भाग ExpressionScript इंजन द्वारा पार्स किया जाना चाहिए।
सत्यापन
ES यह नियंत्रित करता है कि अधिकांश उन्नत प्रश्न विकल्प कैसे काम करते हैं। ये उत्तरों की न्यूनतम/अधिकतम संख्या, अलग-अलग मानों के न्यूनतम/अधिकतम मान, मानों के योग के न्यूनतम/अधिकतम मान, और दर्ज किए गए मानों के निर्दिष्ट स्ट्रिंग पैटर्न से मेल खाने की जाँच जैसे पहलुओं को नियंत्रित करते हैं। इन फ़ील्ड में दिया गया कोई भी मान एक्सप्रेशन माना जाता है, इसलिए आप अन्य प्रश्नों के साथ जटिल सशर्त संबंधों वाले न्यूनतम/अधिकतम मानदंड बना सकते हैं।
इन सभी मामलों में, चूँकि उन्नत प्रश्न विशेषता को हमेशा एक्सप्रेशन माना जाता है, इसलिए इसे निर्दिष्ट करते समय आप कर्ली ब्रेसेस का उपयोग नहीं करते हैं।
नमूना सर्वेक्षण पृष्ठ पर विभिन्न सत्यापन एक्सप्रेशन वाले कई कार्यशील उदाहरण दिए गए हैं।
ExpressionScript - प्रस्तुति
ExpressionScript के बारे में अधिक जानने और यह समझने के लिए कि आप अपने सर्वेक्षण को बेहतर बनाने के लिए विभिन्न एक्सप्रेशन का उपयोग कैसे कर सकते हैं, कृपया निम्नलिखित लिंक पर क्लिक करें।