Dynamics AX 2012 SysOperation Framework სწრაფი მიმოხილვა
გამოქვეყნებულია: 15 თებერვალი, 2025, 22:38:42 UTC
ეს სტატია გთავაზობთ სწრაფ მიმოხილვას (ან მოტყუების ფურცელს), თუ როგორ უნდა განხორციელდეს დამუშავების კლასები და სერიული სამუშაოები SysOperation ჩარჩოში Dynamics AX 2012 და Dynamics 365 ოპერაციებისთვის.
Dynamics AX 2012 SysOperation Framework Quick Overview
ამ პოსტის ინფორმაცია ეფუძნება Dynamics AX 2012 R3. ეს შეიძლება იყოს ან არ იყოს მოქმედი სხვა ვერსიებისთვის. (განახლება: შემიძლია დავადასტურო, რომ ამ სტატიაში მოცემული ინფორმაცია ასევე მოქმედებს Dynamics 365 ოპერაციებისთვის)
ეს პოსტი გამიზნულია როგორც სწრაფი მიმოხილვა და მოტყუების ფურცელი. თუ თქვენ ახალი ხართ SysOperation ჩარჩოში, გირჩევთ, წაიკითხოთ Microsoft-ის თეთრი ფურცელიც ამ თემაზე. აქ მოცემული ინფორმაცია შეიძლება სასარგებლო იყოს, თუ თქვენ უბრალოდ დაგჭირდებათ ამ ჩარჩოთი ოპერაციების შემუშავებაში ჩართული სხვადასხვა კლასების სწრაფი დახვეწა.
არსებობს ვარიაციები, მაგრამ როდესაც მე ვიყენებ ჩარჩოს, ჩვეულებრივ ვახორციელებ სამ კლასს:
- მონაცემთა კონტრაქტი (უნდა გააგრძელოს SysOperationDataContractBase)
- სერვისი (უნდა გააფართოვოს SysOperationServiceBase)
- კონტროლერი ( უნდა გააფართოვოს SysOperationServiceController)
გარდა ამისა, მე ასევე შემიძლია განვახორციელო UIBuilder კლასი ( უნდა გააფართოვოს SysOperationUIBuilder), მაგრამ ეს მხოლოდ იმ შემთხვევაშია საჭირო, თუ დიალოგი რაიმე მიზეზით უნდა იყოს უფრო მოწინავე, ვიდრე ის, რასაც ფრეიმვორი ავტომატურად ქმნის.
მონაცემთა კონტრაქტი
მონაცემთა კონტრაქტი შეიცავს თქვენი ოპერაციისთვის საჭირო მონაცემებს. ის შეიძლება შევადაროთ ტიპიურ CurrentList მაკროს, რომელიც განსაზღვრულია RunBase Framework-ში, მაგრამ დანერგილია როგორც კლასი. მონაცემთა კონტრაქტი უნდა გაგრძელდეს 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();
}
და თქვენ ძირითადად დაასრულეთ. ზემოაღნიშნული აშკარად ძალიან მარტივი მაგალითია და ჩარჩო შეიცავს უამრავ სხვა ვარიანტს და შესაძლებლობებს, მაგრამ ეს ემსახურება როგორც სწრაფ მიმოხილვას, თუ თქვენ გჭირდებათ ფუნჯი, როდესაც თქვენ არ იყენებთ ჩარჩოს გარკვეული პერიოდის განმავლობაში.