Miklix

Dynamics AX 2012 SysOperation Framework দ্রুত ওভারভিউ

প্রকাশিত: ১৫ ফেব্রুয়ারী, ২০২৫ এ ১০:৩৬:৩৯ PM UTC

এই নিবন্ধটি ডায়নামিক্স এএক্স 2012 এবং অপারেশনগুলির জন্য ডায়নামিক্স 365 এ সিসঅপারেশন ফ্রেমওয়ার্কে প্রসেসিং ক্লাস এবং ব্যাচ জবগুলি কীভাবে বাস্তবায়ন করা যায় সে সম্পর্কে একটি দ্রুত ওভারভিউ (বা চিট শীট) সরবরাহ করে।


এই পৃষ্ঠাটি যতটা সম্ভব মানুষের কাছে পৌঁছানোর জন্য ইংরেজি থেকে মেশিন অনুবাদ করা হয়েছে। দুর্ভাগ্যবশত, মেশিন অনুবাদ এখনও একটি নিখুঁত প্রযুক্তি নয়, তাই ত্রুটি হতে পারে। আপনি যদি চান, আপনি এখানে মূল ইংরেজি সংস্করণটি দেখতে পারেন:

Dynamics AX 2012 SysOperation Framework Quick Overview

এই পোস্টের তথ্য Dynamics AX 2012 R3 এর উপর ভিত্তি করে। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে বা নাও হতে পারে। (আপডেট: আমি নিশ্চিত করতে পারি যে এই নিবন্ধের তথ্যটি অপারেশনগুলির জন্য ডায়নামিক্স 365 এর জন্যও বৈধ)


এই পোস্টটি কেবল একটি দ্রুত ওভারভিউ এবং চিট শীট হিসাবে বোঝানো হয়েছে। আপনি যদি সিসঅপারেশন ফ্রেমওয়ার্কে নতুন হন তবে আমি দৃঢ়ভাবে পরামর্শ দিচ্ছি যে আপনি এই বিষয়ে মাইক্রোসফ্টের হোয়াইট পেপারটিও পড়ুন। এখানে তথ্যগুলি কার্যকর হতে পারে যদি আপনার এই কাঠামোর সাথে অপারেশনগুলি বিকাশের সাথে জড়িত বিভিন্ন শ্রেণির উপর দ্রুত ব্রাশ আপ করার প্রয়োজন হয়।

বৈচিত্র রয়েছে, তবে আমি যখন কাঠামোটি ব্যবহার করি তখন আমি সাধারণত তিনটি ক্লাস প্রয়োগ করি:

  • ডেটা চুক্তি (SysOperationDataContractBase প্রসারিত করা উচিত)
  • পরিষেবা (SysOperationServiceBase প্রসারিত করা উচিত)
  • কন্ট্রোলার (SysOperationServiceController অবশ্যই বাড়াতে হবে )

অতিরিক্তভাবে, আমি একটি ইউআইবিল্ডার ক্লাসও প্রয়োগ করতে পারি (অবশ্যই সিসঅপারেশনইউবিল্ডার প্রসারিত করতে হবে ), তবে এটি কেবল তখনই প্রয়োজনীয় যদি কোনও কারণে ডায়ালগটি স্বয়ংক্রিয়ভাবে তৈরি করে তার চেয়ে আরও উন্নত হতে হয়।


ডাটা কন্ট্রাক্ট

ডেটা চুক্তি আপনার অপারেশনের জন্য প্রয়োজনীয় ডেটা সদস্যদের ধারণ করে। এটি রানবেস ফ্রেমওয়ার্কে সংজ্ঞায়িত সাধারণ কারেন্টলিস্ট ম্যাক্রোর সাথে তুলনা করা যেতে পারে, তবে পরিবর্তে একটি ক্লাস হিসাবে প্রয়োগ করা হয়েছে। ডেটা চুক্তিটি SysOperationDataContractBase প্রসারিত করা উচিত, তবে এটি না করলেও কাজ করবে। সুপার ক্লাস প্রসারিত করার সুবিধা হল এটি কিছু সেশন তথ্য প্রদান করে যা সহজ হতে পারে।

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

এই উদাহরণে, আইটেমআইডি একটি ডেটা সদস্য। আপনাকে প্রতিটি ডেটা সদস্যের জন্য একটি পিএআরএম পদ্ধতি প্রয়োগ করতে হবে এবং এটি ডেটামেম্বারঅ্যাট্রিবিউট দিয়ে ট্যাগ করতে হবে যাতে ফ্রেমওয়ার্কটি এটি কী তা জানে। এটি ফ্রেমওয়ার্কটিকে স্বয়ংক্রিয়ভাবে আপনার জন্য ডায়ালগ তৈরি করতে সক্ষম করে।

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

    itemId = _itemId;
    return itemId;
}


সেবা

পরিষেবা শ্রেণি হ'ল এমন শ্রেণি যা প্রকৃত ব্যবসায়ের যুক্তি ধারণ করে। এটি ডায়ালগ, ব্যাচ প্রসেসিং বা এই জাতীয় কিছু দেখানোর সাথে সম্পর্কিত নয় - এটি নিয়ামক শ্রেণির দায়িত্ব। এটি পৃথক করে, আপনি আপনার কোডটি ভালভাবে ডিজাইন করতে এবং আরও পুনরায় ব্যবহারযোগ্য কোড তৈরি করতে পারেন।

ডেটা কন্ট্রাক্ট ক্লাসের মতো, পরিষেবা শ্রেণির বিশেষ কিছু থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়ার দরকার নেই, তবে এটি সিসঅপারেশন সার্ভিসবেস ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া উচিত, কমপক্ষে যদি আপনি আশা করেন যে পরিষেবাটি ব্যাচ জব হিসাবে চালানো হবে, কারণ সুপার ক্লাস ব্যাচ প্রসঙ্গ সম্পর্কে কিছু তথ্য সরবরাহ করে। যে পদ্ধতিটি অপারেশন শুরু করে (অর্থাত্ ব্যবসায়িক যুক্তি চালায়) অবশ্যই আপনার ডেটা চুক্তি শ্রেণীর একটি বস্তুকে ইনপুট হিসাবে নিতে হবে এবং [SysEntryPointAttribute] দিয়ে সজ্জিত করা উচিত। উদাহরণস্বরূপ:

class MyService extends SysOperationServiceBase
{
}

রান নামক একটি পদ্ধতি সহ:

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


নিয়ন্ত্রক

কন্ট্রোলার ক্লাস আপনার অপারেশন এক্সিকিউশন এবং ব্যাচ প্রসেসিং পরিচালনা করে। এটি এটিও নিশ্চিত করে যে কোডটি সর্বাধিক পারফরম্যান্সের জন্য সিআইএল-এ কার্যকর করা হয়েছে। কন্ট্রোলার ক্লাসটি সাধারণত সিসঅপারেশন সার্ভিসকন্ট্রোলার ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়, যদিও অন্যান্য বিকল্পও রয়েছে।

class MyController extends SysOperationServiceController
{
}

সুপার ক্লাসের কনস্ট্রাক্টর প্যারামিটার হিসাবে একটি ক্লাস নাম, পদ্ধতির নাম এবং (ঐচ্ছিকভাবে) এক্সিকিউশন মোড নেয়। ক্লাস এবং পদ্ধতির নামগুলি আপনার পরিষেবা ক্লাসের নাম এবং এটিতে যে পদ্ধতিটি চালানো উচিত তা হওয়া উচিত। সুতরাং, আপনি আপনার নিয়ামকের নির্মাণ পদ্ধতিটি এভাবে প্রয়োগ করতে পারেন:

public static MyController construct()
{
    ;

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

তারপর মাইকন্ট্রোলার ক্লাসের প্রধান পদ্ধতিটি যতটা সহজ হতে পারে

public static void main(Args _args)
{
    ;

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

এবং আপনি মূলত সম্পন্ন করেছেন। উপরেরটি স্পষ্টতই একটি খুব সহজ উদাহরণ এবং ফ্রেমওয়ার্কটিতে অন্যান্য বিকল্প এবং সম্ভাবনার আধিক্য রয়েছে তবে আপনি যখন কিছুক্ষণের জন্য ফ্রেমওয়ার্কটি ব্যবহার না করেন তখন আপনার যদি ব্রাশ আপের প্রয়োজন হয় তবে এটি একটি দ্রুত ওভারভিউ হিসাবে কাজ করে।

ব্লুস্কাইতে শেয়ার করুনফেসবুকে শেয়ার করুনলিংকডইনে শেয়ার করুনটাম্বলারে শেয়ার করুনX-এ শেয়ার করুনলিংকডইনে শেয়ার করুনপিন্টারেস্টে পিন করুন

মিকেল ব্যাং ক্রিস্টেনসেন

লেখক সম্পর্কে

মিকেল ব্যাং ক্রিস্টেনসেন
মিকেল হলেন miklix.com এর স্রষ্টা এবং মালিক। একজন পেশাদার কম্পিউটার প্রোগ্রামার/সফ্টওয়্যার ডেভেলপার হিসেবে তার ২০ বছরেরও বেশি অভিজ্ঞতা রয়েছে এবং বর্তমানে তিনি একটি বৃহৎ ইউরোপীয় আইটি কর্পোরেশনে পূর্ণকালীন কর্মরত। ব্লগিং না করার সময়, তিনি তার অবসর সময় বিভিন্ন আগ্রহ, শখ এবং কার্যকলাপে ব্যয় করেন, যা কিছুটা হলেও এই ওয়েবসাইটে কভার করা বিভিন্ন বিষয়ের মধ্যে প্রতিফলিত হতে পারে।