Dynamics AX 3.0 'da Axapta Business Connector (COM+ )-2

Axapta Business Connector (COM+ nesnesi) 'e ister Vb ister Vb.net istersek C# kullanarak erişiyor olalım, COM+ nesnesi üzerinden Axapta'ya erişimimizi sağlayacak Axapta Interface (arabirim)'ine ait fonksiyonlardan en çok kullanılanları tanımaya çalışacağız.

Axapta'ya erişmemizi sağlayan ve IAxapta a olarak bilinen arabirimler, IDisPatch arabiriminden türetilmiştir.

IAxapta arabirimini kullanarak yaratabileceğimiz nesneler(Object) Class Object, Record(Kayıt) Object, Container Object ve Buffer Object dir.

Axapta Business Connector'e baktığımızda üç tane IAxapta arabirimi göreceksiniz (AxaptaCOMConnector.Axapta.1, AxaptaCOMConnector.Axapta.2.1, AxaptaCOMConnector.AxaptaParameterList.1) AxaptaCOMConnector.Axapta.2.1 arabirimi AxaptaCOMConnector.Axapta.1 arabiriminin bir üst versiyonudur. Axapta 2.1 de sadece logon metod'unda değişiklik yapılmıştır. Tavsiyem sizin de 2. versiyonu kullanmanız yönündedir.

Şimdi fonksiyonları tanımaya çalışalım:

IAxapta::CreateObject :

Bu fonksiyon Axapta'da tanımlı bir Class'ımızı nesne(objects) olarak yaratmamızı sağlar. Nesne(Objects) olarak yarattığımız Class'ımıza ait metod'ları IAxaptaObject::Call ve IAxaptaObject::CallEx fonksiyonları ile çağırabiliriz.

CreateObject(
[in] BSTR bstrClass,
[in, optional] VARIANT v1,
[in, optional] VARIANT v2,
[in, optional] VARIANT v3,
[in, optional] VARIANT v4,
[in, optional] VARIANT v5,
[in, optional] VARIANT v6,
[out, retval] IAxaptaObject **ppObject
)

Paramerteler

bstrClass : Yaratacağımız nesnenin ismi. (Axaptada bulunan Class ismi)
v1-v6: Metod'a ailt parametrelere üyeleri. Bu parametre bilgisini göndermek isteğe bağlıdır.
ppObject: Fonksiyonun döndürdüğü değer, yaratılan COM nesnesine ait pointer.

MyObject = Axapta.CreateObject("MyClass", "new parameter1", 2)

IAxapta::CallStaticClassMethod

Bu fonksiyon Axapta içinde bulunan Class ve Class'a ait static metod'unu çağırmayı sağlar. En çok kullanılan fonksiyonlardan birisidir.

CallStaticClassMethod(
[in] BSTR bstrClass,
[in] BSTR bstrMethod,
[in, optional] VARIANT v1,
[in, optional] VARIANT v2,
[in, optional] VARIANT v3,
[in, optional] VARIANT v4,
[in, optional] VARIANT v5,
[in, optional] VARIANT v6,
[out, retval] VARIANT *pResult
)

Parametreler

bstrClass : Static metod'u olan Class ismi
btsMethot: bstrClass parametresinde kullandığımız Class'a ait Static Metod ismi. Metod mutlaka Static olaması gerekir.
v1-v6: Metod'a ailt parametrelere üyeleri. Bu parametre bilgisini göndermek isteğe bağlıdır. Dikkat edilirse parametre olarak Variant tipi değişkenler kullanıyoruz. Axapta'ya string, XML,Recordset vb. kullana biliriz. Bu değişkenleri Axapta tarafında COM değişkeni ile karşılayacağız makalemizin ilerleyen bölümlerinde bu konudaki örneklerimizi göreceksiniz.
ppObject: Fonksiyonun döndürdüğü değer, yaratılan COM nesnesine ait pointer.

IAxapta arabirimine ait fonksiyonlara baktığımızda fonsiyonlarının bazılarının sonunda Ex bulunan versiyonlarını göreceksiniz. Ex'li olan versiyonlar kullandığımız 6 parametrenin yerine yada 6 parametreden fazla parametre kullanmamız gerektiğinde bir parametre listesi kullanmamızı sağlayan fonsiyonlardır. (IAxaptaParameterList) Neden 6 parametre sorusu da aklınıza geliyor olabilir. Bunun cevabı ise bir fonksiyonun yada metod'un 6 dan fazla parametre kullanması o foksiyonun veya metod'un esnekliğini bozar. Bu konu hakkındaki daha geniş bilgiyi genel yazılım kuralları konusundaki makalelerde veya ilgili kitaplarda bulabilirsiniz.

txt = Axapta.CallStaticClassMethod("MyClass", "MyMethod", "parameter1", 2)

IAxapta2::Logon2

Axapta sistemine bağlanmamızı (Connect) olmamızı sağlar.

Logon2(
[in, optional] VARIANT user,
[in, optional] VARIANT userPassword,
[in, optional] VARIANT company,
[in, optional] VARIANT language,
[in, optional] VARIANT serverManager,
[in, optional] VARIANT objectServer,
[in, optional] VARIANT configuration,
[in, optional] VARIANT isWebUser,
[in, optional] VARIANT reserved2,
[in, optional] VARIANT reserved3
)

Parametreler

user: Sisteme bağlanacak kullanıcı. Bu parametre bilgisini göndermek isteğe bağlıdır.
userPassword:Sisteme bağlanacak kullanıcının parolası. Bu parametre bilgisini göndermek isteğe bağlıdır.
company:Bağlanılacak şirket bilgisi. Bu parametre bilgisini göndermek isteğe bağlıdır.
language:Dil bilgisi. Bu parametre bilgisini göndermek isteğe bağlıdır.
serverManager:Bağlanacak server manager bilgisi. Bu parametre bilgisini göndermek isteğe bağlıdır.
objectServer:Bağlanacak object server bilgisi. Bu parametre bilgisini göndermek isteğe bağlıdır.
configuration: Axaptaya bağlanacağımız konfigürasyonun ismi. Bu parametre bilgisini göndermek isteğe bağlıdır.
isWebUser: user olarak normal Axapta kullanıcısı mı ? Yoksa Web kullanıcısı mı ? bağlanacak. Bu parametre bilgisini göndermek isteğe bağlıdır.
reserved2-reserved2: ileride kullanılmak üzere ayrılmış parametreler. Bu parametre bilgisini göndermek isteğe bağlıdır.

Gördüğünüz gibi sisteme bağlanmamız sağlayan bir çok parametre bulunmaktadır. Bu parametrelerden user, userPassword, configuration en çok kullanılan parametrelerdir. Sağlıklı bir şekilde bağlanmamız için bu parametreler yeterlidir. "Axapta Configuration Utility" de belirtilen parametrelerin çoğunu tanımlamaktayız. Doğru ve istenilen şekilde çalışan bir "Axapta Configuration" 'u ve yetki tanımlaması yapılmış normal Axapta kullanıcı ile sorunsuz bir şekilde bağlantı kurabilirsiniz. Aslında dikkat edecek olursanız normal kullanıcılarımızda aynı yöntemle Axapta'ya bağlanmaktadırlar.

Bir kaç kritik noktayı belirmek gerekir. Eğer web kullanıcı ile bağlanacaksak isWebUser bilgisi sıfırdan farklı olmalı ve web kullanıcısının sistemde tanımlı olması gerekir. Unutmayalım ki web kullanıcısının şirket tanımı sabittir.

serverManager ve objectServer parametreleri three-tiered yapılarda kullanılır. two-tiered yapılarda kullanılmaz.

Axapta.Logon2 "MyUserName", "MyPassword", "", "", "", "", "MyConfiguration"

IAxapta::Logoff

Sistemle bağlantıyı keser. İşlemimiz bittiğinde bu fonksiyonu çalıştırmayı unutmamalıyız.

Axapta.Logoff

IAxapta::Stop

Eğer COM+ nesnesi çalışıyorsa nesneyi kapatır. Logon fonksiyonu ile axaptaya bağlandığımızda COM+ nesnesi çalışmaya başlayacaktır. Durumunu Component Services den kontrol edebilirsiniz.

IAxapta::TTSAbort , IAxapta::TTSBegin , IAxapta::TTSCommit

Axapta X++ kodunda kullandığımız TTSBegin,TTSCommit ve TTSAbort fonksiyonlarını çağırır . Axapta içinde kullandığımız şartların tamamı için burada da kullanmalıyız.

Axapta.TTSBegin, Axapta.TTSCommit, Axapta.TTSAbort

Sonraki makalelerimizde bu fonksiyonlardan bazılarının kullanım şekillerini göreceğiz.

Tüm foksiyonları görmek yada daha fazla bilgi edinmek için; benim de kaynak olarak kullandığım Axapta Client klasörü içinde bulunan bin klasöründeki ''AxDvgCOMUs.chm" isimli yardım dökümanını okuya bilirsiniz.

Eğer COM+ nesneleri hakkında daha fazla bilgi almak isterseniz http://msdn.microsoft.com/library/en-us/dnanchor/html/complus_anchor.asp sayfasında bulunan bilgilere göz atabilirsiniz.

Volkan Acar

volkan.vacar@gmail.com

1 yorum:

Tiram dedi ki...

Cok faydali ve guzel yazi. Ellerine saglik. Devamini sabirsizlikla bekliyoruz.