Dynamics AX 2012 SysOperation Framework দ্রুত ওভারভিউ
প্রকাশিত: ১৫ ফেব্রুয়ারী, ২০২৫ এ ১০:৩৬:৩৯ PM UTC
সর্বশেষ আপডেট: ১২ জানুয়ারী, ২০২৬ এ ৮:৩৯:৫৩ AM UTC
এই প্রবন্ধটি Dynamics AX 2012 এবং Dynamics 365 for Operations-এ SysOperation ফ্রেমওয়ার্কে প্রসেসিং ক্লাস এবং ব্যাচ জব কীভাবে বাস্তবায়ন করতে হয় তার একটি সংক্ষিপ্ত সারসংক্ষেপ (অথবা চিট শিট) প্রদান করে।
Dynamics AX 2012 SysOperation Framework Quick Overview
এই পোস্টের তথ্য Dynamics AX 2012 R3 এর উপর ভিত্তি করে তৈরি। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে আবার নাও হতে পারে। (আপডেট: আমি নিশ্চিত করতে পারি যে এই নিবন্ধের তথ্য Dynamics 365 এর অপারেশনের জন্যও বৈধ)
এই পোস্টটি কেবল একটি সংক্ষিপ্ত পর্যালোচনা এবং প্রতারণামূলক শিট হিসেবে তৈরি করা হয়েছে। আপনি যদি SysOperation ফ্রেমওয়ার্কে নতুন হন, তাহলে আমি দৃঢ়ভাবে পরামর্শ দিচ্ছি যে আপনি এই বিষয়ে মাইক্রোসফটের শ্বেতপত্রটিও পড়ুন। এই ফ্রেমওয়ার্কের সাথে ক্রিয়াকলাপ বিকাশের সাথে জড়িত বিভিন্ন শ্রেণী সম্পর্কে দ্রুত ধারণা পেতে চাইলে এখানে তথ্য কার্যকর হতে পারে।
বিভিন্নতা আছে, কিন্তু যখন আমি ফ্রেমওয়ার্ক ব্যবহার করি তখন আমি সাধারণত তিনটি ক্লাস বাস্তবায়ন করি:
- ডেটা চুক্তি (SysOperationDataContractBase প্রসারিত করা উচিত)
- পরিষেবা (SysOperationServiceBase প্রসারিত করা উচিত)
- কন্ট্রোলার (SysOperationServiceController প্রসারিত করতে হবে)
অতিরিক্তভাবে, আমি একটি UIBuilder ক্লাসও বাস্তবায়ন করতে পারি (SysOperationUIBuilder প্রসারিত করতে হবে), তবে এটি কেবল তখনই প্রয়োজনীয় যখন কোনও কারণে ডায়ালগটি ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে তৈরি হওয়া থেকে আরও উন্নত হতে হয়।
ডেটা চুক্তি
ডেটা কন্ট্রাক্ট আপনার অপারেশনের জন্য প্রয়োজনীয় ডেটা মেম্বার ধারণ করে। এটিকে RunBase ফ্রেমওয়ার্কে সংজ্ঞায়িত সাধারণ CurrentList ম্যাক্রোর সাথে তুলনা করা যেতে পারে, কিন্তু এটি একটি ক্লাস হিসেবে বাস্তবায়িত। ডেটা কন্ট্রাক্টটি 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 এ ডেটা () এবং বিইউএফ 2 বুফ () এর মধ্যে পার্থক্য
- ডায়নামিক্স এএক্স 2012 এ কোন সাবক্লাসটি তাত্ক্ষণিক করতে হবে তা খুঁজে বের করতে সিসএক্সটেনশন ফ্রেমওয়ার্ক ব্যবহার করে
- ডায়নামিক্স এএক্স 2012 এ ম্যাক্রো এবং স্ট্রএফএমটি সহ স্ট্রিং ফর্ম্যাটিং
