Miklix

Dynamics AX २०१२ SysOperation Framework द्रुत अवलोकन

प्रकाशित: २०२५ फेब्रुअरी १५: २२:३९:३८ UTC

यस लेखले Dynamics AX २०१२ र Dynamics ३६५ को सञ्चालनको लागि SysOperation फ्रेमवर्कमा प्रशोधन कक्षाहरू र ब्याच कार्यहरू कसरी लागू गर्ने भन्ने बारे द्रुत सिंहावलोकन (वा चिट शीट) प्रदान गर्दछ।


यो पृष्ठलाई सकेसम्म धेरै मानिसहरूको पहुँचयोग्य बनाउनको लागि अंग्रेजीबाट मेसिन अनुवाद गरिएको थियो। दुर्भाग्यवश, मेसिन अनुवाद अझै पूर्ण प्रविधि होइन, त्यसैले त्रुटिहरू हुन सक्छन्। यदि तपाईं चाहनुहुन्छ भने, तपाईं यहाँ मूल अंग्रेजी संस्करण हेर्न सक्नुहुन्छ:

Dynamics AX 2012 SysOperation Framework Quick Overview

यस पोस्टमा भएको जानकारी Dynamics AX २०१२ R3 मा आधारित छ। यो अन्य संस्करणहरूको लागि मान्य हुन पनि सक्छ र नहुन पनि सक्छ। (अपडेट: म पुष्टि गर्न सक्छु कि यस लेखमा भएको जानकारी सञ्चालनको लागि Dynamics 365 को लागि पनि मान्य छ)


यो पोस्ट केवल एक द्रुत सिंहावलोकन र धोखा पाना को रूपमा हो। यदि तपाईं SysOperation फ्रेमवर्कमा नयाँ हुनुहुन्छ भने, म दृढतापूर्वक सुझाव दिन्छु कि तपाईं यस विषयमा माइक्रोसफ्टको श्वेतपत्र पनि पढ्नुहोस्। यदि तपाईंलाई यस फ्रेमवर्कको साथ सञ्चालन विकास गर्न संलग्न विभिन्न वर्गहरूमा द्रुत रूपमा ब्रश गर्न आवश्यक छ भने यहाँ जानकारी उपयोगी हुन सक्छ।

त्यहाँ भिन्नताहरू छन्, तर जब म फ्रेमवर्क प्रयोग गर्छु म सामान्यतया तीन वर्गहरू लागू गर्छु:

  • डेटा सम्झौता (SysOperationDataContractBase लाई विस्तार गर्नुपर्छ)
  • सेवा (SysOperationServiceBase विस्तार गर्नुपर्छ)
  • नियन्त्रक (SysOperationServiceController लाई विस्तार गर्नुपर्छ )

थप रूपमा, म UIBuilder वर्ग पनि लागू गर्न सक्छु (SysOperationUIBuilder लाई विस्तार गर्नुपर्छ ), तर त्यो तब मात्र आवश्यक हुन्छ जब कुनै कारणले संवाद फ्रेमवर्कले स्वचालित रूपमा उत्पन्न गर्ने भन्दा बढी उन्नत हुनुपर्छ।


डेटा सम्झौता

डेटा अनुबंधले तपाईंको सञ्चालनको लागि आवश्यक डेटा सदस्यहरू राख्छ। यसलाई RunBase फ्रेमवर्कमा परिभाषित विशिष्ट CurrentList म्याक्रोसँग तुलना गर्न सकिन्छ, तर यसको सट्टा वर्गको रूपमा लागू गरिएको छ। डेटा अनुबंधले 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();
}

अनि तपाईंले मूल रूपमा काम सक्नुभयो। माथिको कुरा स्पष्ट रूपमा एकदमै सरल उदाहरण हो र फ्रेमवर्कमा अन्य धेरै विकल्पहरू र सम्भावनाहरू छन्, तर यदि तपाईंले केही समयदेखि फ्रेमवर्क प्रयोग गर्नुभएको छैन भने ब्रश अप आवश्यक छ भने यो द्रुत सिंहावलोकनको रूपमा काम गर्दछ।

ब्लुस्कीमा सेयर गर्नुहोस्फेसबुक मा शेयर गर्नुहोस्लिंक्डइनमा सेयर गर्नुहोस्Tumblr मा सेयर गर्नुहोस्X मा सेयर गर्नुहोस्लिंक्डइनमा सेयर गर्नुहोस्Pinterest मा पिन गर्नुहोस्

मिकेल बाङ क्रिस्टेनसेन

लेखकको बारेमा

मिकेल बाङ क्रिस्टेनसेन
मिकेल miklix.com का निर्माता र मालिक हुन्। उनीसँग एक पेशेवर कम्प्युटर प्रोग्रामर/सफ्टवेयर विकासकर्ताको रूपमा २० वर्ष भन्दा बढीको अनुभव छ र हाल उनी एक ठूलो युरोपेली आईटी निगममा पूर्ण-समय कार्यरत छन्। ब्लगिङ नगर्दा, उनी आफ्नो खाली समय विभिन्न रुचि, शौक र गतिविधिहरूमा बिताउँछन्, जुन केही हदसम्म यस वेबसाइटमा समेटिएका विषयहरूको विविधतामा प्रतिबिम्बित हुन सक्छ।