Miklix

ਡਾਇਨਾਮਿਕਸ ਏਐਕਸ 2012 ਸਿਸਓਪਰੇਸ਼ਨ ਫਰੇਮਵਰਕ ਤੇਜ਼ ਸੰਖੇਪ ਜਾਣਕਾਰੀ

ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 9:29:37 ਬਾ.ਦੁ. UTC

ਇਹ ਲੇਖ ਡਾਇਨਾਮਿਕਸ ਏਐਕਸ 2012 ਅਤੇ ਡਾਇਨਾਮਿਕਸ 365 ਵਿੱਚ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਸਿਸਓਪਰੇਸ਼ਨ ਫਰੇਮਵਰਕ ਵਿੱਚ ਪ੍ਰੋਸੈਸਿੰਗ ਕਲਾਸਾਂ ਅਤੇ ਬੈਚ ਜੌਬਾਂ ਨੂੰ ਕਿਵੇਂ ਲਾਗੂ ਕਰਨਾ ਹੈ ਇਸ ਬਾਰੇ ਇੱਕ ਸੰਖੇਪ ਜਾਣਕਾਰੀ (ਜਾਂ ਚੀਟ ਸ਼ੀਟ) ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।


ਇਸ ਪੰਨੇ ਨੂੰ ਵੱਧ ਤੋਂ ਵੱਧ ਲੋਕਾਂ ਤੱਕ ਪਹੁੰਚਯੋਗ ਬਣਾਉਣ ਲਈ ਅੰਗਰੇਜ਼ੀ ਤੋਂ ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਸੀ। ਬਦਕਿਸਮਤੀ ਨਾਲ, ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਅਜੇ ਇੱਕ ਸੰਪੂਰਨ ਤਕਨਾਲੋਜੀ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਜੇ ਤੁਸੀਂ ਚਾਹੋ, ਤਾਂ ਤੁਸੀਂ ਮੂਲ ਅੰਗਰੇਜ਼ੀ ਸੰਸਕਰਣ ਇੱਥੇ ਦੇਖ ਸਕਦੇ ਹੋ:

Dynamics AX 2012 SysOperation Framework Quick Overview

ਇਸ ਪੋਸਟ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣਕਾਰੀ Dynamics AX 2012 R3 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਹੋਰ ਸੰਸਕਰਣਾਂ ਲਈ ਸਹੀ ਨਾ ਹੋਵੇ। (ਅਪਡੇਟ: ਮੈਂ ਇਹ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦਾ ਹਾਂ ਕਿ ਇਸ ਲੇਖ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣਕਾਰੀ Dynamics 365 for Operations ਲਈ ਵੀ ਸਹੀ ਹੈ)


ਇਹ ਪੋਸਟ ਸਿਰਫ਼ ਇਕ ਜਲਦੀ ਝਲਕ ਅਤੇ ਚੀਟ ਸ਼ੀਟ ਦੇ ਤੌਰ 'ਤੇ ਹੈ। ਜੇ ਤੁਸੀਂ SysOperation ਫਰੇਮਵਰਕ ਵਿੱਚ ਨਵੇਂ ਹੋ, ਤਾਂ ਮੈਂ ਇਸ ਵਿਸ਼ੇ 'ਤੇ ਮਾਈਕ੍ਰੋਸਾਫਟ ਦਾ ਵਾਈਟ ਪੇਪਰ ਪੜ੍ਹਨ ਦੀ ਸਿਫਾਰਿਸ਼ ਕਰਦਾ ਹਾਂ। ਇੱਥੇ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਉਸ ਵੇਲੇ ਫਾਇਦਮੰਦ ਹੋ ਸਕਦੀ ਹੈ ਜੇ ਤੁਸੀਂ ਸਿਰਫ਼ ਫਰੇਮਵਰਕ ਨਾਲ ਸੰਚਾਲਨ ਵਿਕਸਿਤ ਕਰਨ ਵਾਲੀਆਂ ਵੱਖ-ਵੱਖ ਕਲਾਸਾਂ 'ਤੇ ਝਲਕ ਪਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ।

ਇਸ ਵਿੱਚ ਵੱਖਰੇ ਵੱਖਰੇ ਰੂਪ ਹਨ, ਪਰ ਜਦੋਂ ਮੈਂ ਫਰੇਮਵਰਕ ਦਾ ਇਸਤੇਮਾਲ ਕਰਦਾ ਹਾਂ ਤਾਂ ਮੈਂ ਅਕਸਰ ਤਿੰਨ ਕਲਾਸਾਂ ਲਾਗੂ ਕਰਦਾ ਹਾਂ:

  • ਡਾਟਾ ਕਾਨਟ੍ਰੈਕਟ (ਜੋ ਕਿ SysOperationDataContractBase ਨੂੰ ਵਧਾਉਣਾ ਚਾਹੀਦਾ ਹੈ)
  • ਸੇਵਾ (ਜੋ ਕਿ SysOperationServiceBase ਨੂੰ ਵਧਾਉਣਾ ਚਾਹੀਦਾ ਹੈ)
  • ਕੰਟਰੋਲਰ (ਜ਼ਰੂਰੀ ਹੈ ਕਿ SysOperationServiceController ਨੂੰ ਵਧਾਇਆ ਜਾਏ)

ਇਸ ਦੇ ਇਲਾਵਾ, ਮੈਂ ਇੱਕ UIBuilder ਕਲਾਸ ਵੀ ਲਾਗੂ ਕਰ ਸਕਦਾ ਹਾਂ (ਜ਼ਰੂਰੀ ਹੈ ਕਿ SysOperationUIBuilder ਨੂੰ ਵਧਾਇਆ ਜਾਏ), ਪਰ ਇਹ ਸਿਰਫ਼ ਉਸ ਸਮੇਂ ਜ਼ਰੂਰੀ ਹੈ ਜੇ ਕਿਸੇ ਕਾਰਣ ਕਰਕੇ ਡਾਇਲੌਗ ਨੂੰ ਫਰੇਮਵਰਕ ਦੁਆਰਾ ਆਪਣੇ ਆਪ ਬਣਾਏ ਗਏ ਡਾਇਲੌਗ ਤੋਂ ਵਧੇਰੇ ਜਟਿਲ ਹੋਣਾ ਪਏ।


ਡਾਟਾ ਕਾਨਟ੍ਰੈਕਟ

ਡਾਟਾ ਕਾਨਟ੍ਰੈਕਟ ਉਹ ਡਾਟਾ ਮੈਂਬਰ ਰੱਖਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਸੰਚਾਲਨ ਲਈ ਲੋੜੀਂਦੇ ਹਨ। ਇਹ ਰਨਬੇਸ ਫਰੇਮਵਰਕ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਟਿਪਿਕਲ 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
{
}

ਇੱਕ ਵਿਧੀ ਨਾਲ ਜਿਸ ਦਾ ਨਾਮ run ਹੈ:

[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 ਦਾ ਸਿਰਜਣਹਾਰ ਅਤੇ ਮਾਲਕ ਹੈ। ਉਸਨੂੰ ਇੱਕ ਪੇਸ਼ੇਵਰ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮਰ/ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਰ ਵਜੋਂ 20 ਸਾਲਾਂ ਤੋਂ ਵੱਧ ਦਾ ਤਜਰਬਾ ਹੈ ਅਤੇ ਉਹ ਵਰਤਮਾਨ ਵਿੱਚ ਇੱਕ ਵੱਡੇ ਯੂਰਪੀਅਨ ਆਈਟੀ ਕਾਰਪੋਰੇਸ਼ਨ ਲਈ ਪੂਰਾ ਸਮਾਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਉਹ ਬਲੌਗ ਨਹੀਂ ਲਿਖਦਾ, ਤਾਂ ਉਹ ਆਪਣਾ ਖਾਲੀ ਸਮਾਂ ਬਹੁਤ ਸਾਰੀਆਂ ਰੁਚੀਆਂ, ਸ਼ੌਕ ਅਤੇ ਗਤੀਵਿਧੀਆਂ 'ਤੇ ਬਿਤਾਉਂਦਾ ਹੈ, ਜੋ ਕਿ ਕੁਝ ਹੱਦ ਤੱਕ ਇਸ ਵੈੱਬਸਾਈਟ 'ਤੇ ਕਵਰ ਕੀਤੇ ਗਏ ਵਿਸ਼ਿਆਂ ਦੀ ਵਿਭਿੰਨਤਾ ਵਿੱਚ ਪ੍ਰਤੀਬਿੰਬਤ ਹੋ ਸਕਦਾ ਹੈ।