Miklix

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.


Bu sayfa, mümkün olduğunca çok kişi tarafından erişilebilir olması amacıyla İngilizce'den makine çevirisiyle çevrilmiştir. Ne yazık ki, makine çevirisi henüz mükemmelleştirilmiş bir teknoloji değildir, bu nedenle hatalar meydana gelebilir. Tercih ederseniz, orijinal İngilizce versiyonu buradan görüntüleyebilirsiniz:

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.

[DataContractAttribute]
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.

[DataMemberAttribute]
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:

class MyService extends SysOperationServiceBase
{
}

run adlı bir metotla:

[SysEntryPointAttribute]
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.

class MyController extends SysOperationServiceController
{
}

Ü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:

public static MyController construct()
{
    ;

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

O zaman MyController sınıfının ana metodu şu kadar basit olabilir:

public static void main(Args _args)
{
    ;

    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.

Bluesky'de paylaşFacebook'ta paylaşLinkedIn'de paylaşTumblr'da paylaşX'te paylaşLinkedIn'de paylaşPinterest'e Pinleyin

Mikkel Bang Christensen

Yazar Hakkında

Mikkel Bang Christensen
Mikkel miklix.com'un yaratıcısı ve sahibidir. Profesyonel bilgisayar programcısı/yazılım geliştiricisi olarak 20 yılı aşkın deneyime sahiptir ve şu anda büyük bir Avrupa BT şirketinde tam zamanlı olarak çalışmaktadır. Blog yazmadığı zamanlarda, boş zamanlarını çok çeşitli ilgi alanları, hobiler ve aktivitelerle geçirmektedir ve bu da bir dereceye kadar bu web sitesinde kapsanan konuların çeşitliliğine yansıyabilir.