Dynamics AX 2012 SysOperation Framework Quick Overview
प्रकाशित: १५ फेब्रुवारी, २०२५ रोजी १०:३६:४१ PM UTC
हा लेख डायनॅमिक्स एएक्स 2012 आणि ऑपरेशन्ससाठी डायनॅमिक्स 365 मध्ये सिसऑपरेशन फ्रेमवर्कमध्ये प्रोसेसिंग क्लासेस आणि बॅच जॉब्स कसे कार्यान्वित करावे याबद्दल द्रुत सिंहावलोकन (किंवा चीट शीट) प्रदान करतो.
Dynamics AX 2012 SysOperation Framework Quick Overview
या पोस्टमधील माहिती डायनॅमिक्स एएक्स २०१२ आर ३ वर आधारित आहे. हे इतर आवृत्त्यांसाठी वैध असू शकते किंवा असू शकत नाही. (अद्यतन: मी पुष्टी करू शकतो की या लेखातील माहिती ऑपरेशन्ससाठी डायनॅमिक्स 365 साठी देखील वैध आहे)
ही पोस्ट फक्त झटपट विहंगावलोकन आणि चीट शीट म्हणून अभिप्रेत आहे. जर आपण सिसऑपरेशन फ्रेमवर्कमध्ये नवीन असाल तर मी ठामपणे सुचवतो की आपण या विषयावरील मायक्रोसॉफ्टची श्वेतपत्रिका देखील वाचा. जर आपल्याला या फ्रेमवर्कसह ऑपरेशन्स विकसित करण्यात गुंतलेल्या विविध वर्गांवर त्वरित ब्रश अप ची आवश्यकता असेल तर येथे माहिती उपयुक्त ठरू शकते.
भिन्नता आहेत, परंतु जेव्हा मी फ्रेमवर्क वापरतो तेव्हा मी सामान्यत: तीन वर्ग लागू करतो:
- डेटा करार (सायसऑपरेशनडेटाकॉन्ट्रॅक्टबेस वाढवावा)
- Service (SisOperationServiceBase वाढवावे)
- नियंत्रक (must SysOperationServiceController)
याव्यतिरिक्त, मी यूआयबॉयल्डर वर्ग देखील लागू करू शकतो (सिसऑपरेशन यूआयबील्डरचा विस्तार करणे आवश्यक आहे), परंतु हे केवळ तेव्हाच आवश्यक आहे जेव्हा काही कारणास्तव संवाद फ्रेमवर्क आपोआप तयार होणार्या पेक्षा अधिक प्रगत असणे आवश्यक आहे.
डेटा करार
डेटा कॉन्ट्रॅक्टमध्ये आपल्या ऑपरेशनसाठी आवश्यक डेटा सदस्य असतात. याची तुलना रनबेस फ्रेमवर्कमध्ये परिभाषित केलेल्या टिपिकल करंटलिस्ट मॅक्रोशी केली जाऊ शकते, परंतु त्याऐवजी वर्ग म्हणून लागू केली जाऊ शकते. डेटा कॉन्ट्रॅक्टने सिसऑपरेशन डेटाकॉन्ट्रॅक्टबेसचा विस्तार केला पाहिजे, परंतु तसे नसले तरीही कार्य करेल. सुपर क्लास वाढवण्याचा फायदा असा आहे की ते काही सत्र माहिती प्रदान करते जे उपयुक्त ठरू शकते.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
या उदाहरणात, आयटमआयडी डेटा सदस्य आहे. आपल्याला प्रत्येक डेटा सदस्यासाठी एक पारम पद्धत लागू करणे आवश्यक आहे आणि डेटामेंबर वैशिष्ट्यासह टॅग करणे आवश्यक आहे जेणेकरून फ्रेमवर्कला ते काय आहे हे माहित असेल. हे फ्रेमवर्क आपल्यासाठी स्वयंचलितपणे संवाद तयार करण्यास सक्षम करते.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
नोकरी
सर्व्हिस क्लास हा असा वर्ग आहे ज्यात प्रत्यक्ष बिझनेस लॉजिक असते. संवाद, बॅच प्रोसेसिंग किंवा अशा प्रकारचे काहीही दाखवण्याशी त्याचा संबंध नाही - ही नियंत्रक वर्गाची जबाबदारी आहे. हे वेगळे करून, आपण आपला कोड चांगल्या प्रकारे डिझाइन करण्याची आणि अधिक पुन्हा वापरण्यायोग्य कोड बनविण्याची शक्यता जास्त आहे.
डेटा कॉन्ट्रॅक्ट क्लासप्रमाणे, सर्व्हिस क्लासला विशेष कशाचाही वारसा घेण्याची आवश्यकता नसते, परंतु ती सिस्ऑपरेशन सर्व्हिसबेस वर्गातून वारसा मिळाला पाहिजे, कमीतकमी आपण अशी अपेक्षा केली असेल की सेवा बॅच जॉब म्हणून चालविली जाईल, कारण सुपर क्लास बॅच संदर्भाबद्दल काही माहिती प्रदान करतो. ऑपरेशन सुरू करणारी पद्धत (म्हणजे बिझनेस लॉजिक चालवते) आपल्या डेटा कॉन्ट्रॅक्ट क्लासची ऑब्जेक्ट इनपुट म्हणून घ्यावी आणि [सिसएन्ट्रीपॉईंट अॅट्रिब्यूट] ने सजवली पाहिजे. उदाहरणार्थ:
{
}
रन नावाच्या पद्धतीने:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
नियंत्रक
नियंत्रक वर्ग आपल्या ऑपरेशनची अंमलबजावणी आणि बॅच प्रक्रिया हाताळतो. जास्तीत जास्त कामगिरीसाठी सीआयएलमध्ये कोड अंमलात आणला जातो हे देखील हे सुनिश्चित करते. नियंत्रक वर्ग सामान्यत: सिसऑपरेशन सर्व्हिसकंट्रोलर वर्गाकडून वारसा प्राप्त होतो, जरी इतर पर्याय देखील आहेत.
{
}
सुपर क्लासचा कन्स्ट्रक्टर पॅरामीटर म्हणून वर्गाचे नाव, पद्धतीचे नाव आणि (वैकल्पिकरित्या) अंमलबजावणी मोड घेतो. वर्ग आणि पद्धतीची नावे आपल्या सर्व्हिस क्लासचे नाव आणि त्यावर चालवली जाणारी पद्धत असावी. तर, आपण आपल्या नियंत्रकाची बांधकाम पद्धत अशा प्रकारे अंमलात आणू शकता:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
मग मायकंट्रोलर वर्गाची मुख्य पद्धत इतकी सोपी असू शकते
{
;
MyController::construct().startOperation();
}
आणि तू मुळात पूर्ण झालाआहेस. वरील स्पष्टपणे एक अतिशय सोपे उदाहरण आहे आणि फ्रेमवर्कमध्ये इतर बरेच पर्याय आणि शक्यता आहेत, परंतु जेव्हा आपण काही काळ फ्रेमवर्क वापरले नाही तेव्हा आपल्याला ब्रशअपची आवश्यकता असल्यास हे द्रुत सिंहावलोकन म्हणून कार्य करते.