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