Selam arkadaşlar,
Bildiğiniz gibi Dynamics Ax AIF servisleri biraz komplike bir yapıya sahip.
Bazen sadece belirli bir datayı dışarıya açmak isteriz.
Örneğin, CustTable komple dışarı açmak yerine sadece AccountNum ve AccountName dışarı açmak isteyebiliriz.
Bir başka sebep ise CustTable direkt dışarı açarsak eğer kompleks bir XML olarak dışarı açılıyor. Ancak bir model class yapıp onu dışarı açarsak JSON çıktısı elde edebiliyoruz.
Bu sebeplerden dolayı Model class yapmaya ihtiyacımız var. Aşağıda model classı nasıl oluştururuz anlatıyorum.
Başlayalım !
1- Yeni class oluşturalım: CustTableModel
[DataContractAttribute] class CustTableModel { CustAccount accountNum; CustName accountName; } [DataMemberAttribute('AccountNum')] public CustAccount parmAccountNum(CustAccount _accountNum = accountNum) { accountNum = _accountNum; return accountNum; } [DataMemberAttribute('AccountName')] public CustName parmAccountName(CustName _accountName = accountName) { accountName = _accountName; return accountName; }
2- Yeni bir servis oluşturalım ve CustTableModel Model classını kullanalım.
[ SysEntryPointAttribute, AifCollectionTypeAttribute('return', Types::Class, classStr(CustTableModel)) ] public List getCustTables() { CustTable custTable; CustTableModel model; List list = new List(Types::Class); while select custTable { model = new CLSAdvanceCurrencyCodeModel(); model.parmAccountNum(custTable.AccountNum); model.parmAccountName(custTable.name()); list.addEnd(model); } return list; }
Hepsi bu. Şimdi servisi yayınlayabilir ve methodu kullanabiliriz.
Model classındaki alanlar arttıkça her alanı tek tek açmak biraz yorucu olabiliyor. Bu yüzden model classını otomatik oluşturan bir tool yaptım. Buradan kullanabilirsiniz.
Umarım yardımcı olabilmişimdir. Herkese iyi çalışmalar dilerim.
Eğer yazıyı beğendiyseniz ve yardımcı olduysam lütfen yorum yapmaktan çekinmeyin.
Beni desteklemek ve faydalı içerikler üretmeme devam etmemi isterseniz bana buradan bir kahve ısmarlayabilirsiniz..
Teşekkürler