Dynamics AX 2012 SysOperation Framework Hızlı Genel Bakış
Yayınlandı: 15 Şubat 2025 22:35:45 UTC
Bu makale, Dynamics AX 2012 ve Dynamics 365 for Operations'daki SysOperation çerçevesinde işleme sınıflarının ve toplu işlerin nasıl uygulanacağına ilişkin hızlı bir genel bakış (veya kısa bilgi) sağlar.
Dynamics AX 2012 SysOperation Framework Quick Overview
Bu gönderideki 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 yalnızca hızlı bir genel bakış ve hile sayfası olarak tasarlanmıştır. SysOperation çerçevesine yeniyseniz, Microsoft'un konuyla ilgili teknik belgesini de okumanızı şiddetle öneririm. Buradaki bilgiler, bu çerçeveyle operasyonlar geliştirmede yer alan farklı sınıflar hakkında hızlı bir tazeleme yapmanız gerekiyorsa faydalı olabilir.
Çeşitlilikler var, ancak ben çerçeveyi kullandığımda genellikle üç sınıf uygularım:
- Veri sözleşmesi (SysOperationDataContractBase'i genişletmelidir)
- Hizmet (SysOperationServiceBase'i genişletmelidir)
- Denetleyici (SysOperationServiceController'ı genişletmelidir )
Ek olarak, bir UIBuilder sınıfı da uygulayabilirim (SysOperationUIBuilder'ı genişletmeliyim ), ancak bu yalnızca iletişim kutusunun, çerçeve tarafından otomatik olarak oluşturulandan daha gelişmiş olması gerektiğinde gereklidir.
Veri sözleşmesi
Veri sözleşmesi, işleminiz için gereken veri üyelerini tutar. RunBase çerçevesinde tanımlanan tipik CurrentList makrosuyla karşılaştırılabilir, ancak bunun yerine bir sınıf olarak uygulanır. Veri sözleşmesi SysOperationDataContractBase'i genişletmelidir, ancak genişletmese bile çalışacaktır. Üst sınıfı genişletmenin avantajı, kullanışlı olabilecek bazı oturum bilgileri sağlamasıdır.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Bu örnekte itemId bir veri üyesidir. Her veri üyesi için bir parm yöntemi uygulamanız ve çerçevenin ne olduğunu bilmesi için onu DataMemberAttribute ile etiketlemeniz gerekir. Bu, çerçevenin sizin için diyaloğu otomatik olarak oluşturmasını sağlar.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Hizmet
Hizmet sınıfı, gerçek iş mantığını içeren sınıftır. Diyalogları, toplu işlemeyi veya benzeri şeyleri göstermekle ilgilenmez; bu, denetleyici sınıfının sorumluluğundadır. Bunu ayırarak, kodunuzu iyi tasarlamanız ve daha fazla yeniden kullanılabilir kod üretmeniz daha olasıdır.
Veri sözleşmesi sınıfı gibi, hizmet sınıfının da belirli bir şeyden miras alması gerekmez, ancak en azından hizmetin bir toplu iş olarak çalıştırılacağını düşünüyorsanız SysOperationServiceBase sınıfından miras almalıdır, çünkü üst sınıf toplu bağlam hakkında bazı bilgiler sağlar. İşlemi başlatan yöntem (yani iş mantığını çalıştıran) veri sözleşmesi sınıfınızın bir nesnesini girdi olarak almalı ve [SysEntryPointAttribute] ile dekore edilmelidir. Örneğin:
{
}
run adlı bir metotla:
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, kodun maksimum performans için 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 vardır.
{
}
Üst sınıfın kurucusu, bir sınıf adı, yöntem adı ve (isteğe bağlı olarak) yürütme modunu parametre olarak alır. Sınıf ve yöntem adları, hizmet sınıfınızın adı ve üzerinde çalıştırılması gereken yöntem olmalıdır. Bu nedenle, denetleyicinizin yapı yöntemini şu şekilde uygulayabilirsiniz:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
O zaman MyController sınıfının ana metodu şu kadar basit olabilir:
{
;
MyController::construct().startOperation();
}
Ve temel olarak bitirdiniz. Yukarıdaki açıkça ç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ığınızda tazelemeniz gerektiğinde hızlı bir genel bakış görevi görür.