नोट
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप साइन इन करने या निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
कियाना और मारिया फ़ील्ड टेक्नीशियन कैलेब को इन्वेंट्री प्रबंधन ऐप दिखाने के लिए उत्साहित हैं. कैलेब को यह पसंद है, लेकिन इसका उपयोग आसान बनाने के लिए इसमें कुछ अतिरिक्त यूजर इंटरफेस कार्यक्षमता जोड़ने का सुझाव देते हैं। विशेष रूप से, कैलेब करने में सक्षम होना चाहते हैं:
बॉयलर या एयर कंडीशनिंग यूनिट पर किए गए काम की एक तस्वीर जोड़ें, और इसे अपॉइंटमेंट संपादित करें स्क्रीन पर अपॉइंटमेंट विवरण में जोड़ें। यह छवि प्रदर्शन के के रूप में उपयोगी दस्तावेज सबूत साबित हो सकती है. अपॉइंटमेंट संपादित करें स्क्रीन वर्तमान में उपयोगकर्ता को अपॉइंटमेंट में एक छवि जोड़ने में सक्षम बनाती है, लेकिन छवि सहेजी नहीं जाती है क्योंकि यह सुविधा अभी तक पूरी तरह से कार्यान्वित नहीं हुई है। इस चूक का कारण यह है कि छवि के डेटा को संग्रहीत करने के लिए कियाना और प्रीति को सबसे अच्छी जगह निर्धारित करने की जरूरत है. कैलेब इस कार्यक्षमता को जल्द से जल्द जोड़ना पसंद करेगा.
एक ग्राहक के लिए एक पूर्ण अपॉइंटमेंट हिस्ट्री देखें, मरम्मत के लिए अनुरोध किया गया था और किसी भी चल रहे मुद्दों की निगरानी करनें के लिए तकनीशियनों को बार-बार बाहर करने की जरुरत हो सकती है.
भाग विवरण स्क्रीन से भागों का ऑर्डर करें।
इसके अतिरिक्त, भाग विवरण स्क्रीन पर छवि नियंत्रण निर्दिष्ट URL पर संग्रहीत छवियों को प्रदर्शित करता है। वर्तमान में डेटा में URLs केवल प्लेसहोल्डर हैं. अपॉइंटमेंट स्क्रीन के लिए तस्वीरों की तरह, कियाना और प्रीति को छवियों को संग्रहीत करने के लिए सबसे अच्छी जगह निर्धारित करने की जरुरत है ताकि वे अनुप्रयोग के लिए उपलब्ध हों सकें.
अपॉइंटमेंट के लिए एक तस्वीर जोड़ना
तस्वीरों को अनुप्रयोग द्वारा सुलभ कहीं संग्रहीत किया जाना चाहिए. प्रदर्शन और सुरक्षा कारणों से, प्रीति नहीं चाहतीं कि तस्वीरें OneDrive या Azure SQL डेटाबेस में सहेजी जाएं. इसके बजाय, वे Azure Blob Storage का उपयोग करने का निर्णय लेते हैं। ब्लॉब स्टोरेज बड़ी बाइनरी ऑब्जेक्ट्स को रखने के लिए अनुकूलित है, और यह अंतर्निहित सुरक्षा के साथ मजबूत है. Power Apps में एक कनेक्टर होता है जो ब्लॉब स्टोरेज तक एक्सेस देता है. मारिया ने एक नई तस्वीर-लेने वाली स्क्रीन को जोड़ने का सुझाव दिया, जिसमें कैलेब के लिए उपयोगकर्ता अनुभव में सुधार हुआ.
अधिक जानकारी: Azure Blob संग्रहण
प्रीति इन चरणों का पालन करके Azure पोर्टल से ब्लॉब स्टोरेज खाता बनाती है:
Azure पोर्टल में, होम पृष्ठ पर, + संसाधन बनाएँ का चयन करें. मार्केटप्लेस खोजें बॉक्स में, स्टोरेज खाता दर्ज करें, और फिर दर्ज करें चुनें.
संग्रहण खाता पृष्ठ पर, बनाएँ चुनें.
स्टोरेज खाता बनाएँ पृष्ठ पर, निम्न विवरण दर्ज करें, और फिर समीक्षा करें + बनाएँ चुनें:
- सदस्यता: अपनी सदस्यता चुनें
- संसाधन समूह: webapi_rg
- भंडारण खाता नाम: एक विश्व स्तर पर अनोखा नाम प्रदान करें और बाद के लिए इसका एक नोट बनाएं
- स्थान: अपने निकटतम स्थान को चुनें
- प्रदर्शन: मानक
- खाता प्रकार: BlobStorage
- प्रतिकृति: RA-GRS
सत्यापन पृष्ठ पर, बनाएँ चुनें और संग्रहण खाते के प्रावधान होने तक प्रतीक्षा करें.
नए संग्रहण खाते के लिए पृष्ठ पर जाएं.
अवलोकन पृष्ठ पर, कंटेनर का चयन करें.
कंटेनर पृष्ठ पर, + कंटेनर चुनें. photos नामक एक नया कंटेनर बनाएँ, और फिर Create का चयन करें. सार्वजनिक पहुँच स्तर को ब्लॉब में बदलें.
स्टोरेज खाते के लिए अवलोकन पृष्ठ पर वापस जाएं, सेटिंग्स के अंतर्गत, पहुंच कुंजियाँ चुनें. पहुँच कुंजियाँ पृष्ठ पर, कुंजियाँ दिखाएँ चुनें कुंजी1 के लिए कुंजी के मान को नोट करें.
प्रीति ने संग्रहण नाम और किआना को कुंजी दी, जो इस जानकारी का उपयोग इन चरणों का पालन करके अनुप्रयोग के लिए एक कस्टम कनेक्टर बनाने के लिए करती है:
Power Appsमें लॉग इन करें.
बाएँ फलक पर, डेटा विस्तृत करें, और कनेक्शन का चयन करें. एप्लिकेशन द्वारा उपयोग किए जाने वाले मौजूदा कनेक्शन को सूचीबद्ध करना चाहिए. + नया कनेक्शन चुनें.
नया कनेक्शन पृष्ठ पर, नीचे स्क्रॉल करें, कनेक्शन का चयन करें, Azure Blob संग्रहण का चयन करें, और फिर बनाएँ का चयन करें.
Azure Blob Storage संवाद में, प्रीति द्वारा प्रदान किया गया स्टोरेज खाता नाम और पहुँच कुंजी दर्ज करें, और फिर बनाएँ का चयन करें.
नया कनेक्शन बनते समय प्रतीक्षा करें. यह कनेक्शन की सूची पर दिखाई देना चाहिए.
मारिया चित्रो के छवियों को सहेजने और पुनः प्राप्त करने के लिए अनुप्रयोग में ब्लॉब स्टोरेज के लिए इस कनेक्शन का उपयोग कर सकती हैं. मारिया का पहला काम इन चरणों का पालन करके ऐप में कनेक्शन जोड़ना है:
संपादन के लिए VanArsdelApp ऐप खोलें। Power Apps Studio
डेटा फलक पर, डेटा जोड़ें का चयन करें, Azure Blob Storage कनेक्टर की खोज करें, और फिर कनेक्टर का चयन करें.
Azure Blob Storage संवाद में, इसे अपने ऐप में जोड़ने के लिए Azure Blob Storage कनेक्टर का चयन करें.
मारिया का अगला कार्य एक स्क्रीन को जोड़ना है जो एक तकनीशियन या इंजीनियर को एक तस्वीर को सहेजने में सक्षम बनाती है. मारिया तस्वीर नियंत्रण के साथ एक नई स्क्रीन जोड़ने का फैसला करती है. जब अनुप्रयोग को मोबाइल डिवाइस पर चलाया जाता है, तो यह नियंत्रण कैमरे के साथ एकीकृत हो सकता है ताकि तकनीशियन को तस्वीर ले सके. अन्य उपकरणों पर, यह नियंत्रण उपयोगकर्ता को इसके बजाय एक छवि फ़ाइल को अपलोड करने के लिए संकेत करता है. मारिया इन चरणों का पालन करके EditAppointment स्क्रीन से इस नई स्क्रीन पर एक लिंक जोड़ती है:
सम्मिलित करें मेनू पर, नई स्क्रीन का चयन करें, और फिर स्क्रॉल करने योग्य टेम्पलेट का चयन करें.
ट्री व्यू पैन पर, नई स्क्रीन का चयन करें और उसका नाम बदलकर TakePhoto रखें.
इस स्क्रीन पर LblAppName X नियंत्रण के Textगुण को फ़ोटोग्राफ़ लें में बदलें.
स्क्रीन से कैनवासX नियंत्रण हटाएँ.
सम्मिलित करें मेनू में, मीडिया ड्रॉपडाउन सूची से, एक नया चित्र नियंत्रण बनाने के लिए चित्र जोड़ें का चयन करें।
नोट
चित्र नियंत्रण वास्तव में एक मिश्रित कस्टम घटक है जो उपयोगकर्ता को स्क्रीन पर चित्र को जोड़ने और परिणाम को प्रदर्शित करने में सक्षम बनाती है.
स्क्रीन के ढांचे पर कब्जा करने के लिए चित्र नियंत्रण का आकार बदलें.
ट्री व्यू पैन पर, अपॉइंटमेंट विवरणस्क्रीन पर आइकनबैकएरो X नियंत्रण का चयन करें, और फिर कॉपी करें का चयन करें.
ट्री व्यू मेनू पर, टेकफोटो स्क्रीन पर राइट-क्लिक करें, और फिर पेस्ट का चयन करें। IconBackArrowX नियंत्रण स्क्रीन पर जोड़ा जाएगा.
IconBackArrowX नियंत्रण को हेडर बार के ऊपरी बाएँ भाग में ले जाएँ।
ट्री व्यू पैन पर, TakePhotoस्क्रीन पर IconBackArrow X नियंत्रण का चयन करें. दाएँ फलक पर, उन्नत टैब पर, OnSelect कार्रवाई गुण को Navigate(EditAppointment, ScreenTransition.None) में संशोधित करें.
हेडर बार के ऊपरी दाएँ भाग में एक नया सहेजें आइकन नियंत्रण जोड़ें. इस नियंत्रण के दृश्यमान गुण को यदि(IsBlank(AddMediaButton1.Media), असत्य, सत्य) पर सेट करें.
यदि उपयोगकर्ता ने कोई छवि नहीं चुनी है तो यह सेटिंग सहेजें आइकन को अदृश्य बना देती है।
सहेजें आइकन नियंत्रण के OnSelect कार्रवाई गुण में सूत्र को निम्न में बदलें.
Set(ImageID, GUID() & ".jpg"); AzureBlobStorage.CreateFile("photos", ImageID, AddMediaButton1.Media); Patch(appointmentsCollection, LookUp(appointmentsCollection,id=BrowseAppointmentsGallery.Selected.id), {imageUrl:"https://myappphotos.blob.core.windows.net/photos/" & ImageID}); Navigate(EditAppointment,ScreenTransition.Cover);
<भंडारण खाता नाम> को प्रीति द्वारा बनाए गए Azure संग्रहण खाते के नाम से प्रतिस्थापित करें.
यह कोड छवि को ब्लॉब स्टोरेज में फोटो कंटेनर में अपलोड करता है। प्रत्येक छवि को एक अनोखा फ़ाइल नाम दिया जाता है. पैच फ़ंक्शन, ब्लॉब स्टोरेज में छवि के URL के साथ अपॉइंटमेंट रिकॉर्ड में imageUrl प्रॉपर्टी को अपडेट करता है।
ट्री व्यू फलक पर, AddMediaWithImageX नियंत्रण का विस्तार करें. UploadedImage X नियंत्रण के Imageगुण को संशोधित करें, और इसे AppointmentImage पर सेट करें.
AppointmentImage चर है जो उपयोगकर्ता द्वारा अपलोड की गई छवि के साथ, या तस्वीर लेने के परिणामस्वरूप होगा. आप इस चर को बाद में EditAppointment स्क्रीन में आरंभ करेंगे.
ट्री व्यू पैन पर, AddMediaButtonX नियंत्रण का चयन करें. इस नियंत्रण के UseMobileCamera गुण को true पर सेट करें. नियंत्रण के OnChange क्रिया गुण को निम्न पर सेट करें.
Set(AppointmentImage, AddMediaButton1.Media)
यह सूत्र नई छवि को संदर्भित करने के लिए AppointmentImage चर को बदलता है. अपलोड की गई छविX नियंत्रण इस छवि को प्रदर्शित करेगा।
ट्री व्यू पैन पर, एडिटअपॉइंटमेंट स्क्रीन का चयन करें.
EditFormX नियंत्रण का विस्तार करें. Image_DataCardX नियंत्रण के अंतर्गत, AddPictureX नियंत्रण हटाएँ.
छविX नियंत्रण का चयन करें. नीचे दिए गए गुण को बदलें:
- छवि: पैरेंट.डिफ़ॉल्ट
- एक्स: 30
- Y: DataCardKeyX.Y + DataCardKeyX.ऊंचाई + 150 (जहां DataCardKeyX वह डेटा कार्ड है जिसमें छविX नियंत्रण है)
- चौड़ाई: पैरेंट.चौड़ाई - 60
- ऊंचाई: 400
नोट
छवि नियंत्रण स्क्रीन के नीचे से नीचे गिर जाएगा, लेकिन छवि को देखने में सक्षम करने के लिए एक स्क्रोल बार स्वचालित रूप से जोड़ा जाएगा.
डेटा कार्ड में एक कैमरा आइकन जोड़ें, फिर उसे छवि लेबल और छविX नियंत्रण के बीच रखें। नियंत्रण का नाम बदलकर कैमरा आइकन करें.
नोट
सुनिश्चित करें कि आपने कैमरा आइकन नियंत्रण चुना है, न कि कैमरा मीडिया नियंत्रण।
CameraIcon नियंत्रण के OnSelect कार्रवाई गुण को निम्न पर सेट करें.
Set(AppointmentImage, SampleImage); Navigate(TakePhoto, ScreenTransition.None);
जब उपयोगकर्ता इस आइकन का चयन करता है, तो वह TakePhoto स्क्रीन पर जाएगा, जहां वह फोटो ले सकता है या छवि अपलोड कर सकता है। प्रदर्शित प्रारंभिक छवि डिफ़ॉल्ट सैम्पल छवि होगी.
अनुप्रयोग का परीक्षण करने के लिए, नीचे दिए गए:
ट्री व्यू पैन पर, होम स्क्रीन का चयन करें.
ऐप का पूर्वावलोकन करने के लिए F5 चुनें.
होम स्क्रीन पर, अपॉइंटमेंट्स का चयन करें.
ब्राउज़ स्क्रीन में, कोई भी नियुक्ति को चुनें.
नियुक्ति के लिए विवरण स्क्रीन पर, स्क्रीन हेडर में संपादित करें आइकन को चुनें.
संपादन स्क्रीन पर, छवि के लिए कैमरा आइकन का चयन करें।
सत्यापित करें कि फ़ोटोग्राफ़ लें स्क्रीन दिखाई दे।
चित्र बदलें का चयन करें और अपनी पसंद का चित्र अपलोड करें (या यदि आप मोबाइल डिवाइस पर ऐप चला रहे हैं, तो एक तस्वीर लें)।
सहेजें चुनें. सत्यापित करें कि छवि विवरण पृष्ठ पर दिखाई देती है, और फिर डेटाबेस में परिवर्तनों को सहेजने के लिए टिक आइकन को चुनें.
पूर्वावलोकन विंडो बंद करें और Power Apps Studio में वापस लौटें.
भागों की छवियों को प्रदर्शित कर देना
यह निर्धारित करने के बाद कि ब्लॉब स्टोरेज नियुक्तियों से जुड़ी तस्वीरों को बचाने के लिए एक आदर्श स्थान है, प्रीति और कियाना ने फैसला किया कि उन्हें भागों की छवियों को संग्रहीत करने के लिए समान दृष्टिकोण का उपयोग करना चाहिए. इस दृष्टिकोण का एक महत्वपूर्ण लाभ यह है कि इसे अनुप्रयोग में किसी भी संशोधन की जरुरत नहीं पड़ती है. अनुप्रयोग एक ही भंडारण खाता और एक ही कनेक्शन का पुन: उपयोग करता है. एक अलग प्रवासन अभ्यास के रूप में, वे नीचे दिए गए को कर सकते हैं:
एक नया ब्लॉब स्टोरेज कंटेनर को बनाएं.
इस कंटेनर में भाग छवियों को अपलोड करें.
InventoryDB डेटाबेस में Parts तालिका में ImageUrl संदर्भों को प्रत्येक छवि के URL में बदलें।
ऐप स्वचालित रूप से प्रत्येक भाग छवि के लिए नया URL चुन लेगा, और भाग विवरण स्क्रीन पर छवि नियंत्रण छवि प्रदर्शित करेगा।
ग्राहक के लिए नियुक्ति हिस्ट्री पर नज़र रखना
मारिया सोचती है कि ग्राहक के पिछले तकनीशियन के दौरे से सभी हिस्ट्री को जल्दी से देखने में सक्षम होने के कारण कस्टम घटक बनाकर अनुप्रयोग में जोड़ा जा सकता है. कैलेब के साथ काम करते हुए वे किस सूचना को देखना चाहते हैं, मारिया ने एक सरल डिज़ाइन तैयार किया जिसमें नोट्स और प्रत्येक यात्रा की तारीख शामिल है.
आंकड़ों को देखते हुए, मारिया का मानना है कि एक स्क्रीन पर टेबल डेटा प्रदर्शित करने के लिए एक गैलरी नियंत्रण सबसे अच्छा तरीका है.
मारिया कस्टम घटक इस प्रकार बनाती है:
Power Apps Studioका उपयोग करते हुए, ट्री व्यू पैन पर, घटक का चयन करें, और फिर + नया घटक का चयन करें.
Component1 नामक एक नया रिक्त घटक बनाया गया है. घटक का नाम बदलकर DateHistoryComponent करें.
सम्मिलित करें मेनू पर, गैलरी का चयन करें, और फिर रिक्त लचीली ऊंचाई गैलरी टेम्पलेट चुनें।
गैलरी नियंत्रण को स्थानांतरित करें और कस्टम घटक को भरने के लिए इसका आकार बदलें.
सम्मिलित करें फलक से एक आइटम जोड़ें का चयन करें, फिर टेक्स्ट लेबल का चयन करें।
ट्री व्यू पैन पर, लेबल नियंत्रण का नाम बदलकर नोट्स लेबल करें. ओवरफ़्लो प्रॉपर्टी को ओवरफ़्लो.स्क्रॉल पर सेट करें. यह सेटिंग नियंत्रण को टेक्स्ट की कई पंक्तियों को प्रदर्शित करने में सक्षम बनाती है और उपयोगकर्ता को इसके माध्यम से स्क्रोल करने की अनुमति देती है. नीचे दिए गए गुणों को सेट करें जिससे आप नियंत्रण को स्थिति और आकार दे सकें:
- रेखाऊंचाई: 2
- एक्स: 28
- य: 18
- चौड़ाई: 574
- ऊंचाई: 140
नियंत्रण के लिए एक दूसरा टेक्स्ट लेबल को जोड़ें. इस नियंत्रण का नाम बदलकर DateLabel करें, और निम्नलिखित गुण सेट करें:
- रेखाऊंचाई: 2
- एक्स: 28
- वाई: 174
- चौड़ाई: 574
- ऊंचाई: 70
यह देखने के लिए कि ऐप में डालने और थीम के साथ प्रदर्शित होने पर नियंत्रण कैसा दिखाई देगा, ट्री व्यू पैन पर, DateHistoryComponent का चयन करें. दाएँ फलक पर, उन्नत टैब पर, भरण फ़ील्ड का चयन करें और रंग को RGBA(0, 0, 0, 1) में बदलें।
सम्मिलित करें फलक पर, आकृतियाँ विस्तृत करें, और कस्टम घटक में आयत नियंत्रण जोड़ें. इस नियंत्रण के लिए निम्नलिखित प्रॉपर्टीज़ सेट करें:
- एक्स: 0
- वाई: 273
- चौड़ाई: पैरेंट.चौड़ाई
- ऊंचाई: 2
यह नियंत्रण गैलरी में प्रदर्शित रिकॉर्ड के बीच एक विभाजक के रूप में कार्य को करता है.
मारिया स्क्रीन पर नियंत्रण जोड़ने और Power Apps के साथ अनुप्रयोग बनाने से परिचित हैं. हालांकि, पुन: प्रयोज्य घटक उसी तरह से काम को नहीं करते हैं. कियाना ने मारिया को बताया कि कस्टम घटक में डेटा का उपयोग करने में सक्षम होने के लिए, कुछ अतिरिक्त कस्टम इनपुट गुण जोड़ना होगा। कियाना ने यह भी बताया कि मारिया को घटक में नियंत्रणों में डेटा फ़ील्ड को संदर्भित करने के लिए इन गुणों के लिए उदाहरण डेटा प्रदान करने की आवश्यकता है, इस प्रकार:
ट्री व्यू पैन पर, DateHistoryComponent का चयन करें. दाएँ फलक पर, गुण टैब पर, नया कस्टम गुण चुनें.
नया कस्टम गुण संवाद में, निम्न मान निर्दिष्ट करें, और फिर बनाएँ चुनें:
- प्रदर्शन नाम: डेटा
- नाम: डेटा
- विवरण: ग्राहक के लिए नियुक्तियों की तालिका, नोट्स और तिथियाँ दिखाती है
- संपत्ति का प्रकार: इनपुट
- डेटा प्रकार: तालिका
- जब मान परिवर्तन हो तो OnReset उठाएं: खाली छोड़ दें
नियंत्रण द्वारा प्रदर्शित नमूना डेटा को बदलने के लिए, नया डेटा कस्टम गुण चुनें. सूत्र फ़ील्ड में, दर्ज करें तालिका({नोट्स: "उदाहरण नोट्स फ़ील्ड पाठ.", 'नियुक्ति तिथि': पाठ(आज())}).
ट्री व्यू पैन पर, DateHistoryComponent में गैलरी Xनियंत्रण का चयन करें, और इसका नाम बदलकर AppointmentHistory रखें.
दाएँ फलक पर, उन्नत टैब पर, अपॉइंटमेंटहिस्ट्री गैलरी नियंत्रण के आइटम गुण को Parents.Data पर सेट करें.
नोट्स लेबल नियंत्रण का चयन करें. दाएँ फलक पर उन्नत टैब पर, टेक्स्ट संपत्ति को ThisItem.Notes, में बदलें और आकार संपत्ति को 20में बदलें.
नोट
आकार गुण नियंत्रण द्वारा प्रदर्शित पाठ के लिए फ़ॉन्ट आकार निर्दिष्ट करता है।
DateLabel नियंत्रण का चयन करके Text संपत्ति को ThisItem.'Appointment Date' में बदलें और Size संपत्ति को 20 में बदलें. कस्टम घटक के क्षेत्रों को सैम्पल डेटा प्रदर्शित करना चाहिए.
कस्टम घटक पूरा कर लिया गया है. मारिया इस घटक का उपयोग करके ग्राहक के लिए नियुक्तियों के हिस्ट्री को प्रदर्शित करने के लिए एक नई स्क्रीन बनाती है, जो इस प्रकार है:
ट्री व्यू पैन पर, स्क्रीन टैब का चयन करें.
BrowseAppointments स्क्रीन का विस्तार करें, BrowseAppointmentsGallery नियंत्रण का विस्तार करें, और Body1_1 नियंत्रण का चयन करें. सम्मिलित करें मेनू पर, चिह्न का चयन करें, और फिर विवरण सूची चिह्न का चयन करें.
आइकन नियंत्रण का नाम बदलकर ViewAppointments करें.
ट्री व्यू मेनू पर, ब्राउज़अपॉइंटमेंटगैलरी नियंत्रण का चयन करें. दाएँ फलक पर, उन्नत टैब पर, टेम्पलेट आकार गुण को 220 में बदलें. इस गुण को बढ़ाने से गैलरी में उपलब्ध जगह का विस्तार होता है.
ViewAppointments आइकन को ग्राहक नाम के नीचे खाली स्थान पर ले जाएँ।
ViewAppointments आइकन नियंत्रण का चयन करें. OnSelect कार्रवाई गुण को निम्न सूत्र पर सेट करें.
ClearCollect(customerAppointmentsCollection, FieldEngineerAPI.getapicustomeridappointments(ThisItem.customerId)); Navigate(AppointmentsHistoryScreen, ScreenTransition.Fade)
यह सूत्र चयनित ग्राहक के लिए अपॉइंटमेंट्स के साथ customerAppointmentsCollection नामक संग्रह को पॉप्युलेट करता है, और फिर उन्हें प्रदर्शित करने के लिए AppointmentHistoryScreen पर चला जाता है. आप इस स्क्रीन को इस प्रकार चरणों में बना सकतें है.
सम्मिलित करें मेनू पर, नई स्क्रीन का चयन करें, और फिर स्क्रॉल करने योग्य टेम्पलेट का चयन करें.
नई स्क्रीन का नाम बदलकर AppointmentHistoryScreen करें.
इस स्क्रीन पर जोड़ा गया कैनवासX नियंत्रण हटाएँ.
इस स्क्रीन पर LblAppNameX नियंत्रण का चयन करें। दाएँ फलक पर, उन्नत टैब पर, टेक्स्ट गुण को निम्नलिखित में बदलें।
"Appointments History for " & BrowseAppointmentsGallery.Selected.customer.name
स्थिति और आकार समायोजित करने के लिए LblAppNameX नियंत्रण के लिए निम्नलिखित गुण सेट करें:
- एक्स: 90
- वाई: 0
- चौड़ाई: 550
- ऊंचाई: 140
RectQuickActionBarX नियंत्रण का चयन करें, और ऊंचाई संपत्ति को 140 पर सेट करें.
शीर्षक के बाईं ओर, स्क्रीन हेडर में एक बायां आइकन नियंत्रण जोड़ें. इस नियंत्रण के लिए OnSelect क्रिया गुण को Navigate(BrowseAppointments, Transition.None) पर सेट करें.
सम्मिलित करें मेनू पर, कस्टम का चयन करें, और फिर DateHistoryComponent का चयन करें.
घटक को स्थानांतरित करें और उसका आकार बदलें ताकि यह शीर्ष के नीचे, स्क्रीन के ढांचा पर कब्जा कर सकें.
इस घटक के लिए नीचे दिए गए गुण को सेट करें:
- डेटा: ग्राहकअपॉइंटमेंटसंग्रह
- नियुक्ति तिथि: प्रारंभदिनांकसमय
- नोट्स: नोट्स
अनुप्रयोग को सहेजें.
अनुप्रयोग का परीक्षण करने के लिए, नीचे दिए गए:
ट्री व्यू पैन पर, होम स्क्रीन का चयन करें.
ऐप का पूर्वावलोकन करने के लिए F5 चुनें.
होम स्क्रीन पर, अपॉइंटमेंट्स का चयन करें.
ब्राउज़ स्क्रीन में, किसी भी अपॉइंटमेंट के लिए विवरण सूची आइकन का चयन करें।
सत्यापित करें कि चयनित ग्राहक के लिए अपॉइंटमेंट इतिहास स्क्रीन दिखाई देती है।
पूर्वावलोकन विंडो बंद करें और Power Apps Studio में वापस लौटें.
आदेश देने वाले हिस्से
सिस्टम की एक प्रमुख जरूरत एक तकनीशियन को ग्राहक के पास जाने के लिए जरुरी किसी भी हिस्से को ऑर्डर करने के लिए सक्षम करना है. यदि भाग स्टॉक में हैं, तो ग्राहक के लिए अगली सुविधाजनक तिथि पर मरम्मत को पूरा करने के लिए एक और यात्रा को शेड्यूल संभव करना चाहिए. यदि भाग वर्तमान में स्टॉक से बाहर हैं और उन्हें ऑर्डर करना है, तो तकनीशियन ग्राहक को बता सकता है. मलिक तब ग्राहक के साथ एक नियुक्ति की व्यवस्था कर सकता है जब मारिया को नोटिस मिलता है कि भाग गोदाम में आ गया हैं.
ऐप का आरक्षण भाग निम्न छवि में दिखाए गए InventoryDB डेटाबेस में तालिकाओं का उपयोग करता है। ऑर्डर तालिका में भागों के लिए दिए गए ऑर्डर के बारे में जानकारी होती है। आरक्षण तालिका में उन आरक्षण अनुरोधों की सूची दी गई है जो तकनीशियनों और इंजीनियरों ने भागों के लिए किए हैं। इंजीनियर्स तालिका में आरक्षण करने वाले इंजीनियर का नाम और संपर्क नंबर दिया गया है, जिससे यदि आवश्यक हो तो इन्वेंटरी मैनेजर मारिया के लिए पूछताछ करना आसान हो जाता है।
इस सुविधा का समर्थन करने के लिए, कियाना को एक निर्दिष्ट भाग के लिए आरक्षित आइटमों की संख्या प्राप्त करने वाली विधि के साथ वेब API को अपडेट करना होगा, जो इस प्रकार है:
FieldEngineerApi वेब API प्रोजेक्ट को Visual Studio कोड में खोलें.
Order.cs नाम वाली फ़ाइल को मॉडल फ़ोल्डर में जोड़ें. इस फ़ाइल में इस प्रकार कोड को जोड़ें. ऑर्डर वर्ग भागों के लिए दिए गए ऑर्डर के विवरण को ट्रैक करता है।
using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace FieldEngineerApi.Models { public class Order { [Key] public long Id { get; set; } public long BoilerPartId { get; set; } public BoilerPart BoilerPart { get; set; } public long Quantity { get; set; } [Column(TypeName = "money")] public decimal TotalPrice { get; set; } [Display(Name = "OrderedDate")] [DataType(DataType.DateTime)] [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] public DateTime OrderedDateTime { get; set; } public bool Delivered { get; set; } [Display(Name = "DeliveredDate")] [DataType(DataType.DateTime)] [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] public DateTime? DeliveredDateTime { get; set; } } }
Reservation.cs नामक एक और नई फ़ाइल को मॉडल्स फ़ोल्डर में जोड़ें और इस फ़ाइल में निम्नलिखित कोड जोड़ें। आरक्षण वर्ग में किसी दिए गए भाग के लिए उन वस्तुओं की संख्या के बारे में जानकारी होती है जो वर्तमान में अन्य ग्राहकों के लिए आरक्षित हैं।
using System; using System.ComponentModel.DataAnnotations; namespace FieldEngineerApi.Models { public class Reservation { [Key] public long Id { get; set; } public long BoilerPartId { get; set; } public BoilerPart BoilerPart { get; set; } public int NumberToReserve { get; set; } public string EngineerId { get; set; } public InventoryEngineer Engineer { get; set; } } }
InventoryEngineer.cs, नामक एक और फ़ाइल को मॉडल्स फ़ोल्डर में निम्नलिखित कोड के साथ जोड़ें। इन्वेंटरी इंजीनियर वर्ग रिकॉर्ड करता है कि किस इंजीनियर ने कौन सा आरक्षण किया है।
using System.ComponentModel.DataAnnotations; using System.Collections.Generic; namespace FieldEngineerApi.Models { public class InventoryEngineer { [Key] public string Id { get; set; } [Required] public string Name { get; set; } public string ContactNumber { get; set; } public List<Reservation> Reservations { get; set; } } }
InventoryContext.cs फ़ाइल को मॉडल फ़ोल्डर में खोलें, और InventoryContext क्लास में निम्नलिखित कथन जोड़ें.
public class InventoryContext : DbContext { public InventoryContext(DbContextOptions\<InventoryContext\> options) : base(options) { } public DbSet<BoilerPart> BoilerParts { get; set; } public DbSet<InventoryEngineer> Engineers { get; set; } public DbSet<Order> Orders { get; set; } public DbSet<Reservation> Reservations { get; set; } }
Visual Studio Code में टर्मिनल विंडो में, ऑर्डर और आरक्षण से निपटने के लिए नियंत्रक बनाने के लिए इस प्रकार कमांड चलाएं.
dotnet aspnet-codegenerator controller ^ -name OrdersController -async -api ^ -m Order ^ -dc InventoryContext -outDir Controllers dotnet aspnet-codegenerator controller ^ -name ReservationsController -async -api ^ -m Reservation ^ -dc InventoryContext -outDir Controllers
BoilerPartController.cs फ़ाइल को Controllers फ़ोल्डर में खोलें, और निम्न GetTotalReservations विधि को BoilerPartsController क्लास में जोड़ें।
public class BoilerPartsController : ControllerBase { private readonly InventoryContext _context; public BoilerPartsController(InventoryContext context) { _context = context; } ... // GET: api/BoilerParts/5/Reserved [HttpGet("{id}/Reserved")] public async Task<ActionResult<object>> GetTotalReservations(long id) { var reservations = await _context .Reservations .Where(r => r.BoilerPartId == id) .ToListAsync(); int totalReservations = 0; foreach(Reservation reservation in reservations) { totalReservations += reservation.NumberToReserve; } return new {id, totalReservations}; } ... }
OrdersController.cs फ़ाइल को संपादित करें, और OrdersController क्लास में PostOrder विधि को संशोधित करें, जैसा कि निम्नलिखित में दिखाया गया है।
[HttpPost] public async Task<ActionResult<Order>> PostOrder(long boilerPartId, int quantity) { var part = await _context.BoilerParts.FindAsync(boilerPartId); Order order = new Order { BoilerPartId = boilerPartId, Quantity = quantity, OrderedDateTime = DateTime.Now, TotalPrice = quantity * part.Price }; _context.Orders.Add(order); await _context.SaveChangesAsync(); return CreatedAtAction("GetOrder", new { id = order.Id }, order); }
ReservationsController.cs फ़ाइल को संपादित करें. PostReservation विधि को ReservationsController वर्ग में निम्नानुसार संशोधित करें।
[HttpPost] public async Task<ActionResult<Reservation>> PostReservation(long boilerPartId, string engineerId, int quantityToReserve) { Reservation reservation = new Reservation { BoilerPartId = boilerPartId, EngineerId = engineerId, NumberToReserve = quantityToReserve }; _context.Reservations.Add(reservation); await _context.SaveChangesAsync(); return CreatedAtAction("GetReservation", new { id = reservation.Id }, reservation); }
टर्मिनल विंडो में, तैनाती के लिए तैयार वेब API को बनाने और प्रकाशित करने के लिए इस प्रकार कमांड चलाएं.
dotnet build dotnet publish -c Release -o ./publish
Visual Studio कोड में, प्रकाशित करें फ़ोल्डर पर राइट-क्लिक करें, और फिर वेब ऐप पर तैनात करें का चयन करें।
प्रीति अब अपडेट किए गए वेब API को प्रतिबिंबित करने के लिए VanArsdel अनुप्रयोग द्वारा उपयोग की जाने वाली API प्रबंधन सेवा को अपडेट कर सकती है. यह एक गैर-तोड़ने वाला परिवर्तन है; मौजूदा संचालन काम करना जारी रखेंगे, अंतर नए नियंत्रकों और आरक्षण और जगह के ऑर्डर बनाने के लिए काम करते हुए . प्रीति नीचे दिए गए कार्य को करती है:
नोट
प्रीति मौजूदा फ़ील्ड इंजीनियर API को हटाने और एक नए संस्करण से बदलने के लिए चुन सकती थी, लेकिन यह दृष्टिकोण किसी भी मौजूदा अनुप्रयोग को रोक सकता है, जो वर्तमान में API का उपयोग कर सकता है. मौजूदा API को जगह में छोड़ने और संशोधन के रूप में संशोधनों को जोड़ना बेहतर अभ्यास है.
Azure पोर्टल में, API प्रबंधन सेवा पर जाएं.
API प्रबंधन सेवा पृष्ठ पर, बाएँ फलक पर APIs के अंतर्गत, APIs का चयन करें.
फ़ील्ड इंजीनियर API का चयन करें, एलिप्सिस मेनू का चयन करें, और फिर संशोधन जोड़ें का चयन करें.
फ़ील्ड इंजीनियर API का नया संशोधन बनाएँ संवाद में, विवरण दर्ज करें भाग आरक्षण और ऑर्डर के लिए GET ऑपरेशन और POST ऑपरेशन जोड़े गए, और फिर बनाएँ का चयन करें.
संशोधन 2 पृष्ठ पर, डिज़ाइन का चयन करें.
डिज़ाइन पृष्ठ पर, ऑपरेशन जोड़ें का चयन करें. फ्रंटएंड फलक पर, निम्नलिखित गुण सेट करें, और फिर सहेजें का चयन करें. इस परिचालन का उपयोग किसी दिए गए बॉयलर भाग के लिए आरक्षित वस्तुओं की संख्या फिर से प्राप्त करने के लिए किया जाता है:
- प्रदर्शन नाम: api/BoilerParts/{id}/आरक्षित
- नाम: api-boilerparts-id-reserved
- URL: GETapi/BoilerParts/{id}/आरक्षित
नए ऑपरेशन के लिए टेस्ट टैब पर, id पैरामीटर को वैध भाग संख्या पर सेट करें (छवि में उदाहरण भाग 1 का उपयोग करता है), और फिर भेजें का चयन करें।
सत्यापित करें कि परीक्षण सफल हुआ है. परिचालन को HTTP 200 प्रतिक्रिया, और एक ढांचे के साथ पूरा होना चाहिए जो उत्पाद के लिए आरक्षण की संख्या दिखाता है.
डिज़ाइन पृष्ठ पर, ऑपरेशन जोड़ें का चयन करें. FrontEnd पैन पर, निम्नलिखित गुण सेट करें (यह ऑपरेशन नए ऑर्डर बनाने के लिए POST अनुरोधों को परिभाषित करता है):
- प्रदर्शन नाम: api/Orders - POST
- नाम: api-orders-post
- यूआरएल: पोस्टapi/ऑर्डर
क्वेरी टैब पर, + पैरामीटर जोड़ें चुनें, निम्नलिखित पैरामीटर जोड़ें, और फिर सहेजें चुनें:
- नाम: बॉयलरपार्टआईडी, विवरण**: बॉयलर पार्ट आईडी**, प्रकार: लंबा
- नाम: मात्रा, विवरण**: मात्रा**, प्रकार: पूर्णांक
फ्रंटएंड पैन पर फिर से ऑपरेशन जोड़ें चुनें, और निम्नलिखित गुण सेट करें (यह ऑपरेशन नए आरक्षण बनाने के लिए POST अनुरोधों को परिभाषित करता है):
- प्रदर्शन नाम: api/आरक्षण - पोस्ट
- नाम: api-reservations-post
- URL: POSTapi/आरक्षण
क्वेरी टैब पर, निम्नलिखित पैरामीटर जोड़ें, और फिर सहेजें चुनें:
- नाम: बॉयलरपार्टआईडी, विवरण: बॉयलर पार्ट आईडी, प्रकार: लंबा
- नाम: इंजीनियरआईडी, विवरण: इंजीनियर आईडी, प्रकार: स्ट्रिंग
- नाम: आरक्षित करने के लिए मात्रा, विवरण: आरक्षित करने के लिए मात्रा, प्रकार: पूर्णांक
संशोधन टैब पर, नया संस्करण चुनें. इस संस्करण के लिए एलिप्सिस मेनू पर, वर्तमान बनाएं का चयन करें.
संशोधन को वर्तमान बनाएं संवाद में, सहेजें का चयन करें.
अपने वेब ब्राउज़र में एक और पेज खोलें और URL https://<APIM नाम>.azure-api.net/api/boilerparts/1/reserved पर जाएं जहां <APIM नाम> आपकी API सेवा का नाम है। सत्यापित करें कि आपको इस प्रकार के समान प्रतिक्रिया मिलती है.
{"id":1,"totalReservations":5}
अपडेट किया गया वेब API अब उपलब्ध है. सिद्धांत के रूप में, कियाना अपडेट किए गए वेब API के लिए एक नया कस्टम कनेक्टर बना सकता है और इसे अनुप्रयोग में जोड़ सकता है. अनुप्रयोग तब यह निर्धारित करने के लिए अपने तर्क को लागू कर सकता है कि निर्दिष्ट उत्पाद के कितने आइटम वर्तमान में स्टॉक में हैं, कितने आरक्षित हैं, आवश्यक आइटम की संख्या के परिणामों की तुलना करें, यदि जरुरी हो, तो अधिक स्टॉक के लिए ऑर्डर दें या आइटम मौजूदा स्टॉक में आरक्षित करें. हालांकि, इस तरह के तर्क को Azure तर्क अनुप्रयोग में बेहतर तरीके से लागू किया जाता है. जब कोई तकनीशियन किसी भाग को आरक्षित करना या ऑर्डर करना चाहता है, तो Power Apps कस्टम कनेक्टर के माध्यम से तर्क अनुप्रयोग को कॉल कर सकते हैं.
तर्क अनुप्रयोग बनाने के लिए, कियाना नीचे दिए गए चरणों का उपयोग करती है:
नोट
चीजों को सरल रखने के लिए, इस उदाहरण में बनाया गया तर्क अनुप्रयोग गैर-हस्तांतरणीय है. यह हो सकता है कि एक भाग की उपलब्धता की जांच करने और आरक्षण करने के बीच, एक समवर्ती उपयोगकर्ता एक परस्पर विरोधी आरक्षण कर सकता है. आप इस लॉजिक ऐप में कुछ लॉजिक को InventoryDB डेटाबेस में संग्रहीत प्रक्रिया के साथ प्रतिस्थापित करके लेनदेन संबंधी शब्दार्थ को लागू कर सकते हैं।
Azure पोर्टल में, होम पृष्ठ पर, + संसाधन बनाएँ का चयन करें.
बाजार खोजें बॉक्स में, लॉजिक ऐप दर्ज करें, और फिर दर्ज करें का चयन करें।
लॉजिक ऐप पृष्ठ पर, बनाएँ का चयन करें.
लॉजिक ऐप बनाएँ पृष्ठ पर, निम्न मान दर्ज करें, और फिर समीक्षा + बनाएँ चुनें:
- सदस्यता: अपने Azure सदस्यता को चुनें
- संसाधन समूह: webapi_rg
- लॉजिक ऐप का नाम: FieldEngineerPartsOrdering
- क्षेत्र: वेब API के लिए उसी स्थान को चुनें जिसका आपने पहले उपयोग किया था
- एकीकरण सेवा परिवेश के साथ संबद्ध: खाली छोड़ दें
- लाग एनालिटिक्स को सक्षम करें: खाली छोड़ दें
सत्यापन पृष्ठ पर, बनाएँ का चयन करें, और तर्क ऐप के परिनियोजित होने तक प्रतीक्षा करें.
जब परिनियोजन पूर्ण हो जाए, तो संसाधन पर जाएँ का चयन करें.
लॉजिक ऐप्स डिज़ाइनर पृष्ठ पर, टेम्प्लेट अनुभाग तक स्क्रॉल करें, और फिर रिक्त लॉजिक ऐप का चयन करें.
सभी टैब पर, खोज कनेक्टर और ट्रिगर्स टेक्स्ट बॉक्स में, अनुरोध का चयन करें.
ट्रिगर्स टैब पर, जब एक HTTP अनुरोध प्राप्त होता है का चयन करें.
अनुरोध बॉडी JSON स्कीमा बॉक्स में, निम्नलिखित स्कीमा दर्ज करें, और फिर + नया चरण चुनें.
{ "type": "object", "properties": { "boilerPartId": { "type": "integer" }, "numberToReserve": { "type": "integer" }, "engineerId": { "type": "string" } } }
यह स्कीमा HTTP अनुरोध की सामग्री को परिभाषित करता है जो तर्क अनुप्रयोग में अपेक्षित है. अनुरोध ढांचे में एक बॉयलर भाग की ID, आरक्षित करने के लिए आइटम की संख्या और अनुरोध करने वाले इंजीनियर की ID शामिल है. जब कोई इंजीनियर किसी भाग को आरक्षित करना चाहता है, तो अनुप्रयोग यह अनुरोध भेजेगा.
एक ऑपरेशन चुनें बॉक्स में, सभी का चयन करें, और फिर HTTP का चयन करें.
लॉजिक ऐप, ऐप से अनुरोध द्वारा प्रदान किए गए बॉयलर भाग के बारे में जानकारी प्राप्त करने के लिए वेब API के BoilerParts{id} ऑपरेशन को कॉल करेगा।
क्रियाएँ फलक पर, HTTP क्रिया का चयन करें.
HTTP एक्शन बॉक्स में, एलिप्सिस मेनू पर, Rename का चयन करें, और एक्शन का नाम बदलकर CheckBoilerPart करें।
HTTP क्रिया के गुणधर्मों को निम्नानुसार सेट करें, और फिर + नया चरण चुनें:
- विधि: GET
- URI: https://<APIM नाम>.azure-api.net/api/boilerparts/, जहाँ <APIM नाम> आपकी API प्रबंधन सेवा का नाम है। इस URI के लिए डायनेमिक कंटेंट बॉक्स में, डायनेमिक कंटेंट टैब पर, boilerPartId चुनें
एक ऑपरेशन चुनें बॉक्स में, कनेक्टर और क्रियाएँ खोजें बॉक्स में, JSON पार्स करें दर्ज करें, और फिर JSON पार्स करें क्रिया का चयन करें.
JSON पार्स करें कार्रवाई के लिए एलिप्सिस मेनू का उपयोग करके, कार्रवाई का नाम बदलकर ParseBoilerPart करें।
सामग्री बॉक्स में ParseBoilerPart कार्रवाई के लिए, डायनामिक सामग्री बॉक्स में, बॉडी का चयन करें. स्कीमा बॉक्स में, निम्नलिखित JSON स्कीमा दर्ज करें, और फिर + नया चरण चुनें.
{ "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "categoryId": { "type": "string" }, "price": { "type": "number" }, "overview": { "type": "string" }, "numberInStock": { "type": "integer" }, "imageUrl": { "type": "string" }, } }
यह क्रिया getBoilerParts/{id} अनुरोध द्वारा लौटाए गए प्रतिक्रिया संदेश को पार्स करती है। प्रतिक्रिया में बायलर भाग का विवरण शामिल है, वर्तमान में स्टॉक में संख्या सहित.
नए चरण के लिए एक ऑपरेशन चुनें बॉक्स में, HTTP कनेक्टर का चयन करें.
क्रियाएँ टैब पर, HTTP क्रिया चुनें.
ऑपरेशन के लिए एलिप्सिस मेनू का उपयोग करते हुए, ऑपरेशन का नाम बदलकर CheckReservations रखें.
इस ऑपरेशन के लिए निम्नलिखित गुण सेट करें, और फिर + नया चरण चुनें:
- विधि: GET
- यूआरआई: https://<APIM नाम>.azure-api.net/api/boilerparts/. पहले की तरह, इस URI के लिए डायनेमिक कंटेंट बॉक्स में, डायनेमिक कंटेंट टैब पर, boilerPartId का चयन करें. URI फ़ील्ड में, boilerPartId प्लेसहोल्डर के बाद /reserved टेक्स्ट जोड़ें
नई कार्रवाई के लिए एक ऑपरेशन चुनें बॉक्स में, कनेक्टर और क्रियाएँ खोजें बॉक्स में, JSON पार्स करें दर्ज करें, और फिर JSON पार्स करें कार्रवाई का चयन करें.
ऑपरेशन का नाम बदलकर ParseReservations करें.
सामग्री संपत्ति को बॉडी पर सेट करें.
निम्नलिखित स्कीमा दर्ज करें, और फिर + नया चरण चुनें.
{ "type": "object", "properties": { "id": { "type": "integer" }, "totalReservations": { "type": "integer" } } }
नई कार्रवाई के लिए एक ऑपरेशन चुनें बॉक्स में, कनेक्टर और क्रियाएँ खोजें बॉक्स में, शर्त दर्ज करें, और फिर शर्त नियंत्रण कार्रवाई का चयन करें.
ऑपरेशन का नाम बदलकर CompareStock करें.
मान चुनें बॉक्स का चयन करें. डायनेमिक सामग्री जोड़ें बॉक्स में, एक्सप्रेशन टैब पर, निम्न एक्सप्रेशन दर्ज करें, और फिर ओके का चयन करें.
add(body('ParseReservations')?['totalReservations'], triggerBody()?['numberToReserve'])
यह अभिव्यक्ति निर्दिष्ट बायलर भाग की आइटम की संख्या के योग की गणना करती है जो वर्तमान में आरक्षित हैं, और इंजीनियर द्वारा अनुरोधित संख्या.
शर्त ड्रॉपडाउन सूची बॉक्स में, से बड़ा है का चयन करें.
शेष मान चुनें बॉक्स में, डायनामिक सामग्री बॉक्स में, डायनामिक सामग्री टैब पर, ParseBoilerPart के अंतर्गत, numberInStock का चयन करें.
यदि आवश्यक वस्तुओं की संख्या और आरक्षित संख्या स्टाक में संख्या से अधिक है, तो अनुप्रयोग को इन्वेंट्री को फिर से भरने के लिए एक आदेश देने की जरुरत है. TrueCompareStock कार्रवाई की शाखा में, कार्रवाई जोड़ें का चयन करें.
नए ऑपरेशन के लिए सभी टैब पर, HTTP का चयन करें, और फिर HTTP कार्रवाई का चयन करें।
ऑपरेशन का नाम बदलकर PostOrder करें.
PostOrder ऑपरेशन के लिए निम्नलिखित गुण सेट करें:
- विधि: पोस्ट
- यूआरआई: https://<एपीआईएम नाम>.azure-api.net/api/orders
- क्वेरीज़ तालिका में, पहली पंक्ति में, कुंजी boilerPartId दर्ज करें। डायनेमिक सामग्री जोड़ें बॉक्स में मान के लिए, डायनेमिक सामग्री टैब पर, **boilerPartId चुनें **
- प्रश्न तालिका की दूसरी पंक्ति में, कुंजी मात्रा दर्ज करें। मान फ़ील्ड में, 50 दर्ज करें.
जब स्टॉक कम चल रहा हो तो तर्क अनुप्रयोग निर्दिष्ट हिस्से के 50 आइटम को स्वचालित रूप से ऑर्डर करेगा.
नोट
तर्क अनुप्रयोग मानता है कि इंजीनियर वास्तव में एक ही अनुरोध में एक निर्दिष्ट हिस्से के 50 से अधिक आइटम आरक्षित करने का प्रयास नहीं करेगा!
CompareStock कार्रवाई की False शाखा को रिक्त छोड़ दें.
CompareStock कार्रवाई के नीचे, + नया चरण चुनें.
नए ऑपरेशन के लिए सभी टैब पर, HTTP का चयन करें, और फिर HTTP कार्रवाई का चयन करें।
ऑपरेशन का नाम बदलकर PostReservation करें.
PostReservation ऑपरेशन के लिए निम्नलिखित गुण सेट करें:
- विधि: पोस्ट
- URI: https://<APIM नाम>.azure-api.net/api/reservations
- क्वेरीज़ तालिका में, पहली पंक्ति में, कुंजी boilerPartId दर्ज करें। डायनेमिक सामग्री जोड़ें बॉक्स में मान के लिए, डायनेमिक सामग्री टैब पर, boilerPartId का चयन करें.
- दूसरी पंक्ति में, कुंजी engineerId दर्ज करें. डायनेमिक सामग्री जोड़ें बॉक्स में मान के लिए, डायनेमिक सामग्री टैब पर, engineerId चुनें
- तीसरी पंक्ति में, कुंजी quantityToReserve दर्ज करें. डायनेमिक सामग्री जोड़ें बॉक्स में मान के लिए, डायनेमिक सामग्री टैब पर, numberToReserve चुनें
+ नया चरण चुनें. एक ऑपरेशन चुनें बॉक्स में, प्रतिक्रिया कार्रवाई खोजें और चुनें.
प्रतिक्रिया कार्रवाई के लिए निम्नलिखित गुण सेट करें:
- स्थिति कोड: 200
- हेडर: कुंजी - सामग्री-प्रकार, मान - application/json
- बॉडी: डायनेमिक कंटेंट बॉक्स में, पोस्टरिजर्वेशन अनुरोध से बॉडी तत्व का चयन करें। जब आरक्षण किया जाता है, यह बॉडी वापस आ जाता है.
लॉजिक ऐप्स डिज़ाइनर पृष्ठ के ऊपरी बाएँ भाग में, सहेजें का चयन करें. सत्यापित करें कि तर्क अनुप्रयोग को बिना किसी त्रुटि के सहेजा जाएगा.
कस्टम कनेक्टर बनाने के लिए जो Power Apps तर्क अनुप्रयोग को ट्रिगर करने के लिए उपयोग कर सकते हैं, कियाना Azure पोर्टल में रहते हुए भी इस प्रकार चरणों का पालन करती है:
लॉजिक ऐप के लिए अवलोकन पृष्ठ पर, निर्यात करें का चयन करें.
निर्यात करें Power Apps फलक में, कनेक्टर को PartsOrderingConnector नाम दें, अपना Power Apps पर्यावरण चुनें, और फिर ठीक चुनें.
Power Apps में साइन इन करें.
अपने परिवेश में, डेटा के अंतर्गत, कस्टम कनेक्टर का चयन करें और सत्यापित करें कि पार्ट्सऑर्डरिंग कनेक्टर सूचीबद्ध है।
मारिया अब एक ग्राहक साइट में भाग लेने के दौरान एक तकनीशियन को भागों को ऑर्डर करने में सक्षम करने के लिए VanArsdel अनुप्रयोग को संशोधित कर सकती है. मारिया ने पार्टडिटेल्स स्क्रीन पर एक ऑर्डर बटन जोड़ा है, इस प्रकार:
लॉग इन करें Power Apps (यदि पहले से लॉग इन नहीं हैं)।
ऐप्स के अंतर्गत, VanArsdelApp ऐप का चयन करें. ऐप के लिए एलिप्सिस मेनू पर, संपादित करें चुनें.
डेटा फलक पर, डेटा जोड़ें का चयन करें, पार्ट्सऑर्डरिंगकनेक्टर कनेक्टर की खोज करें, और उस कनेक्टर का उपयोग करके एक नया कनेक्शन जोड़ें।
ट्री व्यू पैन पर, पार्टडिटेल्स स्क्रीन का विस्तार करें, और फिर डिटेलफॉर्म1 फ़ॉर्म का विस्तार करें.
दाईं ओर गुण फलक पर, फ़ील्ड संपादित करें का चयन करें. फ़ील्ड पैन पर, एलिप्सिस मेनू पर, कस्टम कार्ड जोड़ें का चयन करें.
ट्री व्यू पैन पर, नए कार्ड का नाम DataCard1 से ReserveCard करें. डिज़ाइन दृश्य विंडो में, कार्ड का आकार बदलें ताकि वह Image_DataCard1 नियंत्रण के नीचे, स्क्रीन के निचले भाग पर आ जाए।
सम्मिलित करें मेनू पर, इनपुट उप मेनू से, टेक्स्ट इनपुट नियंत्रण, बटन नियंत्रण, और लेबल नियंत्रण को रिजर्व कार्ड नियंत्रण में जोड़ें।
नियंत्रणों का आकार बदलें और उनकी स्थिति इस प्रकार रखें कि वे समीप हों, बटन नियंत्रण टेक्स्ट इनपुट नियंत्रण के दाईं ओर हो, और लेबल बटन नियंत्रण के नीचे हो।
गुण फलक पर पाठ इनपुट नियंत्रण के लिए, डिफ़ॉल्ट गुण को साफ़ करें.
गुण फलक पर बटन नियंत्रण के लिए, पाठ गुण को आरक्षित पर सेट करें.
टेक्स्ट इनपुट नियंत्रण का नाम बदलकर NumberToReserve करें, बटन नियंत्रण का नाम बदलकर रिजर्व करें, और लेबल नियंत्रण का नाम बदलकर संदेश करें।
संदेश नियंत्रण के लिए गुण फलक पर, पाठ संपत्ति को भाग आरक्षित पर सेट करें, और दृश्यमान संपत्ति को संदेशदृश्यमान पर सेट करें।
नोट
MessageIsVisible एक चर है जिसे आप स्क्रीन प्रदर्शित होने पर false पर आरंभ करेंगे, लेकिन यदि उपयोगकर्ता Reserve बटन का चयन करता है तो इसे true में बदल दिया जाएगा।
OnSelect संपत्ति को Reserve बटन नियंत्रण के लिए निम्न सूत्र पर सेट करें.
FieldEngineerPartsOrdering.manualinvoke({boilerPartId:ThisItem.id, engineerId:"ab9f4790-05f2-4cc3-9f01-8dfa7d848179", numberToReserve:NumberToReserve.Text}); Set(MessageIsVisible, true);
नोट
यह सूत्र वर्तमान में अनुप्रयोग चलाने वाले तकनीशियन का प्रतिनिधित्व करने के लिए एक हार्ड-कोडेड इंजीनियर ID को उपयोग में लाता हैं. अध्याय 8 बताता है कि साइन-इन किए हुए उपयोगकर्ता के लिए ID कैसे प्राप्त करें.
इसके अतिरिक्त, अनुप्रयोग कोई त्रुटि जांच नहीं करता है; यह मानता है कि भागों को आरक्षित करने का अनुरोध हमेशा सफल होता है. त्रुटि प्रबंधन के बारे में अधिक जानकारी के लिए, त्रुटियाँ फ़ंक्शन में Power Apps पर जाएँ।
OnVisible प्रॉपर्टी को PartDetails स्क्रीन के लिए Set(MessageIsVisible, false) पर सेट करें.
अनुप्रयोग का परीक्षण करने के लिए, नीचे दिए गए:
ट्री व्यू पैन पर, होम स्क्रीन का चयन करें.
ऐप का पूर्वावलोकन करने के लिए F5 चुनें.
होम स्क्रीन पर, पार्ट्स चुनें.
ब्राउज़ स्क्रीन में, किसी भी भाग को चुनें.
भाग विवरण स्क्रीन पर, आरक्षण अनुभाग तक नीचे स्क्रॉल करें, एक सकारात्मक पूर्णांक मान दर्ज करें, और फिर आरक्षित करें का चयन करें। सत्यापित करें कि भाग आरक्षित संदेश प्रकट होता है।
पूर्वावलोकन विंडो बंद करें और Power Apps Studio में वापस लौटें.
Azure पोर्टल में, InventoryDB SQL डेटाबेस के पृष्ठ पर जाएँ.
क्वेरी संपादक का चयन करें, और अपने पासवर्ड के साथ sqladmin के रूप में लॉग इन करें।
क्वेरी 1 फलक में, निम्न क्वेरी दर्ज करें, और फिर चलाएँ का चयन करें. सत्यापित करें कि आपने VanArsdel अनुप्रयोग में आरक्षण किया है.
SELECT * FROM [dbo].[Reservations]