Dynamics 365 Yeni Javascript Modeli – Model Değişiklikleri 1

Dynamics CRM - Dynamics 365

Bildiğiniz gibi Dynamics 365 v9.x ile birlikte kullanılan javascript modelinde değişiklikler ve ilaveler oldu. Bir çoğumuz yeni projelerimizde kullandığımız hazır kütüphanelerimizi tekrar elden geçirmek durumunda kaldık.

Tabi birde bunun var olan 2016 ve daha eski versiyondaki projelerimizin Dynamics 365 v9.x sürümüne geçişi var. Bu geçiş esnasında yazılan javascript kodlarımızın neredeyse tamamını elden geçirmemiz gerekecek.

Eski kodların birçoğu deprecated durumda on-premise versiyonda çalışmaya devam ediyor olsa bile, Unified Interface üzerinde bunların neredeyse hiç birisi artık çalışmıyor.

İşte tam bu yüzden bu makaleyi hazırladım. Ben çektim, araştırdım bir araya topladım. Siz bari uğraşmayın

Bu arada, sorun yaşamanız durumunda yorumlarınızla ya da sosyal medya üzerinden bana ulaşarak çekinmeden destek isteyebilirsiniz.

İsterseniz çok sık kullanmadığımız hatta bir çoğumuzun ihtiyacı dahi olmamış olan Xrm.Page.context modeli ile yavaştan başlayalım.

İlgili model içerisinde, eskiden var olan Kullanıcı verileri ile organizasyona ait veriler aynı model içerisinde barınmaktaydı. Değiştirilen API ile birlikte bunlarda model içerisinde değişikliğe uğradılar.
Aşağıdaki tabloda eski – yeni karşılaştırmasını görebilirsiniz.

Deprecated API

Replacement API

Xrm.Page.context.getTimeZoneOffsetMinutes globalContext.userSettings.getTimeZoneOffsetMinutes
Xrm.Page.context.getUserId globalContext.userSettings.userId
Xrm.Page.context.getUserLcid globalContext.userSettings.languageId
Xrm.Page.context.getUserName globalContext.userSettings.userName
Xrm.Page.context.getUserRoles globalContext.userSettings.securityRoles
Xrm.Page.context.getIsAutoSaveEnabled globalContext.organizationSettings.isAutoSaveEnabled
Xrm.Page.context.getOrgLcid globalContext.organizationSettings.languageId
Xrm.Page.context.getOrgUniqueName globalContext.organizationSettings.uniqueName

Tablo-1

Tablo1 de görüldüğü üzere, Önceden Page.context modelinde bulunan fonksiyonların tamamı, kendi içerisinde gruplanarak yeni isimler ile birlikte globalContext altına taşındı. İsimlerdeki değişikliklerle de aslında benim fikrime göre kullanım kolaylığı sağlandığını ve hatırlamakta zorluk çekilmeyecek isimlendirmeler kullanıldığını düşünüyorum.

Örneğin, getUserLcid fonksiyonu userSettings.languageId şeklinde değiştirildi. Eskiden context altında usera ait localization id bilgisi istenirken şimdi, kullanıcı ayarları modeline girdiğinizde direkt userId, languageId şeklinde datalarınıza erişebiliyorsunuz.

İkinci modelimiz ise, Grid fonksiyonları.
Grid fonksiyonlarında çok büyük bir değişiklik olmamasına rağmen yine de isimlerde değişiklikler oldu.
Hadi bunlara da bakalım.

Deprecated API

Replacement API

GridRow.getData GridRow.data
GridRowData.getEntity GridRowData.entity

Tablo-2

Gördüğünüz gibi Grid fonksiyonlarında büyük değişikliklerimiz yok. Ancak yine de revizyon mevcut.

En büyük değişikliklerin olduğu Xrm.Utility modelimize bakacak olursak buradaki fonksiyonların neredeyse tamamının hem kullanım şekilleri hem de isimlendirmeleri değişmiş durumda. Ayrıca kullanım esnasında da büyük değişiklikler, Dialoglarda görsel revizyonlarda mevcut.

Sonraki makalelerimizde ilgili fonksiyonların kullanımlarında ne gibi değişiklikler olduğuna da değiniyor olacağım.

Şimdi Xrm.Utility Modelimizdeki revizyonları inceleyelim.

Deprecated API

Replacement API

alertDialog Xrm.Navigation.openAlertDialog
confirmDialog Xrm.Navigation.openConfirmDialog
getbarcodeValue Xrm.Device.getBarcodeValue
getCurrentPosition Xrm.Device.getCurrentPosition
openEntityForm Xrm.Navigation.openForm
openQuickCreate Xrm.Navigation.openForm
openWebResource Xrm.Navigation.openWebResource

Tablo-3

Buradaki en büyük değişiklik openEntityForm ve openQuickCreate fonksiyonlarında gerçekleşti. İki fonksiyon tek fonksiyon altında toplandı.
Eskiden openEntityForm fonksiyonunda string olarak açılacak entity adını verirken şimdi, açılacak entity bilgilerini (daha fazla özellikle açabiliyoruz.) obje halinde iletmemiz gerekiyor. Aynı zamanda, fonksiyon tetiklendiğinde success ve error callback fonksiyonları da var

Aslında detaylı incelendiğinde, Yeni API güzellikleri yanında bazı zorlukları da beraberinde getirmiyor değil.
Misal eskiden HTML Web Resource’lar içerisinde, parent.Xrm.Page şeklinde ilgili modele ve XRM Contextine erişim sağlanabilirken, artık erişim sağlayabilmek için ilgili HTML web resource’un formun içerisine eklenmiş olması zorunluluğu geldi. Bunun dışında sitemap içerisinden ya da farklı şekilde açılan HTML Web resource’larda artık ilgili context erişilemez durumda.

GlobalContext’e erişim ise, eskiden Xrm.Page.context şeklinde sağlanırken, artık Xrm.Utility.getGlobalContext şeklinde değiştirildi.

Şimdilik 1. Partımız burada sonlansın isterseniz. Sizleri de yormayalım gözlerinizi de yormayalım

Umarım faydalı olabilmişimdir sizlere.
Bir sonraki makalede daha çok örnekle karşınızda olmak üzere şimdilik hoşça kalın, MSHOWTO ile kalın.

 

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs: Dynamics 365 Yeni Javascript Modeli – Model Değişiklikleri 1,dynamics 365 deprecated api, dynamics 365 new javascript api, dynamics crm javascript, Xrm.Page.context

Yazı gezinmesi

Mobil sürümden çık