Salesforce डेवलपर और आर्किटेक्ट के लिए MultiDatePick
कैलेंडर आपके org में कैसे फ़िट होता है: सेटिंग्स कहाँ रहती हैं, स्क्रीन फ़्लो को क्या वापस मिलता है, आपके flow किन Apex type पर loop कर सकते हैं, सिक्योरिटी कैसे काम करती है, और कॉन्फ़िगरेशन एक org से दूसरे में कैसे ले जाएँ।
MultiDatePick ऐसे बना है कि एडमिन को कभी डेवलपर की ज़रूरत न पड़े। यह पेज उन मौकों के लिए है जब फिर भी कोई डेवलपर या आर्किटेक्ट शामिल हो: पैकेज की समीक्षा, उसके आसपास flow बनाना, या उसका सेटअप sandbox से आगे ले जाना।
पैकेज में क्या आता है
| हिस्सा | यह क्या करता है |
|---|---|
| Date कंपोनेंट | कई तारीखें चुनें, रेंज ड्रैग करें, आवर्ती पैटर्न जोड़ें। हर तारीख या हर रेंज के लिए एक रिकॉर्ड सेव करता है, या तारीखें स्क्रीन फ़्लो को लौटाता है। |
| Date Time कंपोनेंट | तारीखें और टाइम स्लॉट, सभी के लिए एक जैसे या हर तारीख के अलग, टकराव जाँच के साथ। हर तारीख, हर टाइम ब्लॉक के लिए एक रिकॉर्ड, या sub-block वाला एक मूल रिकॉर्ड सेव करता है। |
| Booking कंपोनेंट | कमरे, उपकरण, वाहन या लोग (कोई भी ऑब्जेक्ट, User समेत) बुक करें, क्षमता, व्यावसायिक घंटे, अवरुद्ध दिन और बुकिंग नियमों के साथ। |
| Setup Wizard | एक Lightning टैब जो कॉन्फ़िगरेशन लिखता है, लाइव प्रीव्यू और JSON आयात और निर्यात के साथ। |
| Flow एक्शन | Parse Date Entries from JSON और Format MultiDatePick Time Range, उन flow के लिए जो रिकॉर्ड खुद सेव करते हैं। |
| परमिशन सेट | MultiDatePick - Setup, MultiDatePick - User, MultiDatePick - All Access, और पब्लिक साइट के लिए MultiDatePick - Guest। |
सेटिंग्स कहाँ रहती हैं
हर सहेजा गया सेटअप एक Custom Metadata रिकॉर्ड है: Config__mdt में सेटिंग्स रहती हैं, और Config_Extension__mdt नई सेटिंग्स को Settings__c में JSON के रूप में रखता है। पेज या flow स्क्रीन पर लगा कंपोनेंट Config Name में अपने कॉन्फ़िगरेशन का नाम देता है; कंपोनेंट पर अलग से सेट की गई कोई भी प्रॉपर्टी कॉन्फ़िगरेशन के टेक्स्ट और संख्या मानों को ओवरराइड करती है।
- डिप्लॉय करने योग्य: कॉन्फ़िगरेशन metadata हैं, इसलिए वे change set, Salesforce CLI या आपकी CI/CD पाइपलाइन से किसी भी दूसरे metadata की तरह जाते हैं।
- पोर्टेबल: wizard कॉन्फ़िगरेशन को JSON के रूप में निर्यात करता है और दूसरे org में आयात करता है, वहाँ जो ऑब्जेक्ट या फ़ील्ड नहीं है उसे मैप करते हुए।
- समीक्षा योग्य: हर सेटअप का एक रिकॉर्ड, Setup में पढ़ने योग्य, इसलिए हर बदलाव diff में दिखता है।
आपका डेटा आपका ही रहता है
कैलेंडर आपके अपने ऑब्जेक्ट पढ़ता और लिखता है। कोई MultiDatePick डेटा मॉडल सिंक नहीं करना, कोई बाहरी सेवा नहीं और कोई callout नहीं: चुनी गई तारीखें आपके चुने ऑब्जेक्ट पर सामान्य रिकॉर्ड बनती हैं, आपके मैप किए फ़ील्ड के साथ (तारीख, अंत तारीख, आरंभ और अंत समय, स्थिति, नाम, resource)। उन ऑब्जेक्ट पर ट्रिगर, flow, validation rule और रिपोर्ट पहले की तरह काम करते रहते हैं।
स्क्रीन फ़्लो आउटपुट
flow स्क्रीन पर एक कंपोनेंट रखें, Config Name सेट करें, और स्क्रीन के बाद ये पढ़ें:
| आउटपुट | प्रकार | इसमें क्या होता है |
|---|---|---|
| Selected Dates | Text collection | हर चुनी गई तारीख YYYY-MM-DD के रूप में। हर तारीख का एक रिकॉर्ड बनाने के लिए इस पर loop चलाएँ। |
| Date Ranges JSON | Text | चुनी गई रेंज, हर एक की आरंभ और अंत तारीख के साथ, जब Output Date Ranges as JSON चालू हो। |
| Dates With Times JSON | Text | Date Time कंपोनेंट: हर तारीख अपने आरंभ और अंत समय के साथ। |
| Successful Bookings Count | Number | Booking कंपोनेंट: सेव से कितनी बुकिंग बनीं। |
Parent Record Id में कोई रिकॉर्ड दें, तो कैलेंडर उस रिकॉर्ड की मौजूदा तारीखें दिखाता है और नई तारीखें खुद सेव कर सकता है। अगर flow से सेव करवाना है, तो wizard में My flow saves them चुनें: तब कैलेंडर अपना Save बटन छिपा देता है और चुनी गई तारीखें बस flow को सौंप देता है।
flow में चुनी गई तारीखों पर loop
JSON आउटपुट के लिए, Parse Date Entries from JSON एक्शन टेक्स्ट को ऐसे collection में बदल देता है जिस पर आपका flow loop चला सके, बिना कोई Apex लिखे:
| Apex-defined type | फ़ील्ड |
|---|---|
MultiDatePickEntryCollection | data (एंट्री), totalCount, success, errorMessage |
MultiDatePickEntry | fromDate, toDate, startTime, endTime, resourceId, resourceName, bookingStatus, relatedRecordId, label |
Screen Flow गाइड loop को स्टेप बाय स्टेप समझाती है, और Flow loop वाले लेख में तीन शुरुआती flow हैं जिन्हें आप VS Code से डिप्लॉय कर सकते हैं।
सिक्योरिटी मॉडल
- हर query और सेव user mode में चलता है: ऑब्जेक्ट परमिशन, फ़ील्ड-लेवल सिक्योरिटी और sharing कैलेंडर इस्तेमाल करने वाले व्यक्ति पर लागू होती हैं, पब्लिक साइट के guest यूज़र समेत।
- कुछ भी org से बाहर नहीं जाता: कोई callout नहीं, कोई बाहरी सर्वर नहीं, कोई subprocessor नहीं।
- Salesforce Security Review पास किया है। विवरण Trust & Security पेज पर।
- सुगम्यता: WCAG 2.1 A और AA के मुकाबले VPAT 2.5 रिपोर्ट, Accessibility पेज पर।
सेटअप को sandbox से production में ले जाना
- sandbox में बनाएँ और टेस्ट करें, Setup Wizard के साथ।
- कॉन्फ़िगरेशन ले जाएँ: उसके
Config__mdtऔरConfig_Extension__mdtरिकॉर्ड अपने सामान्य टूल से डिप्लॉय करें, या wizard से JSON के रूप में निर्यात करके production में आयात करें। - उसे इस्तेमाल करने वाला पेज या flow ले जाएँ। कंपोनेंट कॉन्फ़िगरेशन को नाम से पहचानते हैं, इसलिए और कुछ नहीं बदलता।
- इस्तेमाल करने वाले लोगों को परमिशन सेट असाइन करें, और पब्लिक साइट पर MultiDatePick - Guest।
डेवलपर के सवाल
क्या MultiDatePick इस्तेमाल करने के लिए Apex लिखना पड़ता है?
नहीं। कंपोनेंट रिकॉर्ड खुद लोड और सेव करते हैं, और जो flow खुद सेव करते हैं वे कस्टम Apex की जगह पैकेज में शामिल Parse Date Entries from JSON एक्शन का इस्तेमाल करते हैं।
क्या कॉन्फ़िगरेशन CI/CD से डिप्लॉय हो सकते हैं?
हाँ। हर कॉन्फ़िगरेशन एक Custom Metadata रिकॉर्ड है (Config__mdt, और नई सेटिंग्स के लिए Config_Extension__mdt), इसलिए यह किसी भी दूसरे metadata की तरह डिप्लॉय होता है।
क्या MultiDatePick मेरे डेटा के लिए नए ऑब्जेक्ट जोड़ता है?
नहीं। यह आपके चुने हुए ऑब्जेक्ट में सेव करता है, इसलिए आपके रिकॉर्ड, ऑटोमेशन और रिपोर्ट जहाँ हैं वहीं रहते हैं।
यह टाइम ज़ोन और भाषाओं को कैसे संभालता है?
तारीखें और समय हर यूज़र के Salesforce टाइम ज़ोन और locale के अनुसार चलते हैं, और इंटरफ़ेस नौ भाषाओं में अनुवादित है।