Dynamics AX 2012 SysOperation Framework Hızlı Genel Bakış
Yayınlandı: 15 Şubat 2025 22:35:45 UTC
Son güncelleme: 12 Ocak 2026 08:39:11 UTC
Bu makale, Dynamics AX 2012 ve Dynamics 365 for Operations'taki SysOperation çerçevesinde işlem sınıflarının ve toplu işlerin nasıl uygulanacağına dair hızlı bir genel bakış (veya kısa bir özet) sunmaktadır.
Dynamics AX 2012 SysOperation Framework Quick Overview
Bu yazıda yer alan bilgiler Dynamics AX 2012 R3'e dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir. (Güncelleme: Bu makaledeki bilgilerin Dynamics 365 for Operations için de geçerli olduğunu doğrulayabilirim.)
Bu gönderi sadece hızlı bir genel bakış ve özet bilgi niteliğindedir. SysOperation çerçevesine yeni başlıyorsanız, Microsoft'un bu konuyla ilgili teknik belgesini de okumanızı şiddetle tavsiye ederim. Buradaki bilgiler, bu çerçeveyle işlemler geliştirirken kullanılan farklı sınıflar hakkında hızlı bir bilgi tazelemeniz gerektiğinde faydalı olabilir.
Farklılıklar mevcut, ancak ben bu çerçeveyi kullandığımda genellikle üç sınıf uyguluyorum:
- Veri sözleşmesi (SysOperationDataContractBase'i genişletmelidir)
- Servis (SysOperationServiceBase'i genişletmelidir)
- Denetleyici (SysOperationServiceController'dan miras almalıdır)
Ek olarak, bir UIBuilder sınıfı da uygulayabilirim (SysOperationUIBuilder'dan miras almalıdır), ancak bu yalnızca diyalog kutusunun, çerçevenin otomatik olarak oluşturduğundan daha gelişmiş olması gerektiği durumlarda gereklidir.
Veri sözleşmesi
Veri sözleşmesi, işleminiz için gerekli veri üyelerini içerir. RunBase çerçevesinde tanımlanan tipik CurrentList makrosuna benzetilebilir, ancak bunun yerine bir sınıf olarak uygulanmıştır. Veri sözleşmesi SysOperationDataContractBase'den miras almalıdır, ancak miras almasa bile çalışacaktır. Üst sınıftan miras almanın avantajı, kullanışlı olabilecek bazı oturum bilgilerini sağlamasıdır.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Bu örnekte, itemId bir veri üyesidir. Her veri üyesi için bir parm metodu uygulamanız ve çerçeveye ne olduğunu bildirmek için DataMemberAttribute etiketini eklemeniz gerekir. Bu, çerçevenin sizin için iletişim kutusunu otomatik olarak oluşturmasını sağlar.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Hizmet
Servis sınıfı, gerçek iş mantığını içeren sınıftır. Diyalog gösterme, toplu işlem yapma veya benzeri şeylerle ilgilenmez; bunlar denetleyici sınıfının sorumluluğundadır. Bunu ayırarak, kodunuzu daha iyi tasarlamanız ve daha fazla yeniden kullanılabilir kod oluşturmanız daha olasıdır.
Veri sözleşmesi sınıfı gibi, servis sınıfının da belirli bir sınıftan miras alması gerekmez, ancak servisin toplu iş olarak çalıştırılmasını bekliyorsanız, en azından SysOperationServiceBase sınıfından miras almalıdır, çünkü üst sınıf toplu iş bağlamı hakkında bazı bilgiler sağlar. İşlemi başlatan (yani iş mantığını çalıştıran) yöntem, girdi olarak veri sözleşmesi sınıfınızın bir nesnesini almalı ve [SysEntryPointAttribute] ile işaretlenmelidir. Örneğin:
{
}
Run adlı bir yöntemle:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Kontrolör
Denetleyici sınıfı, işleminizin yürütülmesini ve toplu işlenmesini yönetir. Ayrıca, maksimum performans için kodun CIL'de yürütülmesini sağlar. Denetleyici sınıfı genellikle SysOperationServiceController sınıfından miras alır, ancak başka seçenekler de mevcuttur.
{
}
Üst sınıfın kurucusu, parametre olarak sınıf adını, metot adını ve (isteğe bağlı olarak) yürütme modunu alır. Sınıf ve metot adları, servis sınıfınızın adı ve üzerinde çalıştırılacak metodun adı olmalıdır. Bu nedenle, denetleyicinizin kurucu metodunu şu şekilde uygulayabilirsiniz:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
O halde MyController sınıfının ana metodu şu kadar basit olabilir:
{
;
MyController::construct().startOperation();
}
Ve temelde işiniz bitti. Yukarıdaki elbette çok basit bir örnek ve çerçeve çok sayıda başka seçenek ve olasılık içeriyor, ancak bu, çerçeveyi bir süredir kullanmadıysanız ve bilgilerinizi tazelemek istiyorsanız hızlı bir genel bakış görevi görüyor.
Daha Fazla Okuma
Bu yazıyı beğendiyseniz, şu öneriler de ilginizi çekebilir:
- Dynamics AX 2012'de X++ Kodundan Bir Enumun Elemanları Üzerinde Yineleme Nasıl Yapılır
- Dynamics AX 2012'de data() ve buf2Buf() Arasındaki Fark
- Dynamics AX 2012'de AIF Hizmeti için Belge Sınıfını ve Sorguyu Tanımlama
