Miklix

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 वाढवावे, परंतु ते नसले तरीही ते काम करेल. सुपर क्लास वाढवण्याचा फायदा असा आहे की ते काही सत्र माहिती प्रदान करते जी उपयुक्त ठरू शकते.

[DataContractAttribute]
class MyDataContract extends SysOperationDataContractBase
{
    ItemId itemId;
}

या उदाहरणात, itemId हा डेटा सदस्य आहे. तुम्हाला प्रत्येक डेटा सदस्यासाठी एक parm पद्धत लागू करावी लागेल आणि ती DataMemberAttribute सह टॅग करावी लागेल जेणेकरून फ्रेमवर्कला ते काय आहे हे कळेल. हे फ्रेमवर्कला तुमच्यासाठी आपोआप संवाद तयार करण्यास सक्षम करते.

[DataMemberAttribute]
public ItemId parmItemId(ItemId _itemId = itemId)
{
    ;

    itemId = _itemId;
    return itemId;
}


सेवा

सेवा वर्ग हा असा वर्ग आहे ज्यामध्ये प्रत्यक्ष व्यवसाय तर्क असतो. तो संवाद, बॅच प्रक्रिया किंवा तत्सम काहीही दाखवण्याशी संबंधित नाही - ही नियंत्रक वर्गाची जबाबदारी आहे. हे वेगळे करून, तुम्ही तुमचा कोड चांगल्या प्रकारे डिझाइन करण्याची आणि अधिक पुनर्वापरयोग्य कोड बनवण्याची शक्यता जास्त असते.

डेटा कॉन्ट्रॅक्ट क्लासप्रमाणे, सर्व्हिस क्लासला कोणत्याही विशिष्ट गोष्टींकडून वारसा मिळण्याची आवश्यकता नाही, परंतु जर तुम्हाला अशी अपेक्षा असेल की ही सेवा बॅच जॉब म्हणून चालवली जाईल तर ती SysOperationServiceBase क्लासमधून वारसा मिळायला हवी, कारण सुपर क्लास बॅच संदर्भाबद्दल काही माहिती प्रदान करतो. ऑपरेशन सुरू करणारी पद्धत (म्हणजेच बिझनेस लॉजिक चालवते) तुमच्या डेटा कॉन्ट्रॅक्ट क्लासमधील ऑब्जेक्ट इनपुट म्हणून घेईल आणि [SysEntryPointAttribute] ने सजवली पाहिजे. उदाहरणार्थ:

class MyService extends SysOperationServiceBase
{
}

रन नावाच्या पद्धतीसह:

[SysEntryPointAttribute]
public void run(MyDataContract _dataContract)
{
    // run business logic here
}


नियंत्रक

कंट्रोलर क्लास तुमच्या ऑपरेशनची एक्झिक्युशन आणि बॅच प्रोसेसिंग हाताळतो. जास्तीत जास्त कामगिरीसाठी कोड CIL मध्ये एक्झिक्युट झाला आहे याची खात्री देखील करतो. कंट्रोलर क्लास सामान्यतः SysOperationServiceController क्लासमधून वारशाने मिळतो, जरी इतर पर्याय देखील आहेत.

class MyController extends SysOperationServiceController
{
}

सुपर क्लासचा कन्स्ट्रक्टर क्लासचे नाव, मेथडचे नाव आणि (पर्यायी) एक्झिक्युशन मोड हे पॅरामीटर्स म्हणून घेतो. क्लास आणि मेथडची नावे तुमच्या सर्व्हिस क्लासचे आणि त्यावर चालवल्या जाणाऱ्या मेथडचे नाव असावीत. म्हणून, तुम्ही तुमच्या कंट्रोलरची कन्स्ट्रक्ट मेथड अशा प्रकारे अंमलात आणू शकता:

public static MyController construct()
{
    ;

    return new MyController(classStr(MyService),
    methodStr(MyService, run));
}

मग MyController क्लासची मुख्य पद्धत तितकी सोपी असू शकते

public static void main(Args _args)
{
    ;

    MyController::construct().startOperation();
}

आणि तुम्ही मुळात काम पूर्ण केले आहे. वरील उदाहरण हे स्पष्टपणे एक अतिशय सोपे उदाहरण आहे आणि फ्रेमवर्कमध्ये इतर अनेक पर्याय आणि शक्यता आहेत, परंतु जेव्हा तुम्ही काही काळ फ्रेमवर्क वापरला नसेल तेव्हा ब्रश अपची आवश्यकता असल्यास हे एक जलद विहंगावलोकन म्हणून काम करते.

पुढील वाचन

जर तुम्हाला ही पोस्ट आवडली असेल, तर तुम्हाला हे सूचना देखील आवडतील:


ब्लूस्की वर शेअर कराफेसबुक वर शेअर करालिंक्डइन वर शेअर कराटंबलर वर शेअर कराX वर शेअर करालिंक्डइन वर शेअर कराPinterest वर पिन करा

मिकेल क्रिस्टेनसेन

लेखकाबद्दल

मिकेल क्रिस्टेनसेन
मिकेल हे miklix.com चे निर्माता आणि मालक आहेत. त्यांना व्यावसायिक संगणक प्रोग्रामर/सॉफ्टवेअर डेव्हलपर म्हणून २० वर्षांहून अधिक अनुभव आहे आणि सध्या ते एका मोठ्या युरोपियन आयटी कॉर्पोरेशनमध्ये पूर्णवेळ नोकरी करतात. ब्लॉगिंग करत नसताना, ते आपला मोकळा वेळ विविध आवडी, छंद आणि क्रियाकलापांमध्ये घालवतात, जे काही प्रमाणात या वेबसाइटवर समाविष्ट असलेल्या विविध विषयांमध्ये प्रतिबिंबित होऊ शकतात.