1. Anasayfa
  2. Dynamics 365

Dynamics CRM 2015 Kodlama Mimarisi – Bölüm 8 – Plug-in Registration Tool’u Kullanmak


0

ilk plug-in’imizi yazdıktan sonra geldi onu CRM içerisine eklemeye. Bu işlem için Plugin Registration Tool dediğimiz CRM SDK içerisinden çıkan bir uygulamayı kullanacağız. Bu uygulama sayesinde hem plug-in hem de custom workflow’lari CRM içerisine ekleyebilmekteyiz.

SDK\Tools\PluginRegistration\PluginRegistration.exe yolu ile ulaşabileceğiniz uygulamayı çalıştırdığınızda sizden bağlanmak istediğiniz server ile ilgili bilgileri isteyecektir.

Dynamics CRM Online için Online’i seçebilirsiniz ama unutmayın ki Office 365 hesabi kullanıyorsanız Office 365’i seçmeniz gerekmekte. İkisi de Online ama yetki mekanizmaları farklı.


Resim-1

Eger On-Premises yani Microsoft dışında host edilen bir CRM’e erişmek istiyorsanız o zaman On-Premises seçeneğini seçmeniz gerekmekte. IFD’ler için de bu seçeneği kullanabilirsiniz.


Resim-2

Eğer “Always display list of available orgs” seçeneğiniz seçerseniz bağlanmak istediğiniz kullanıcı ile erişebileceğiniz organizasyonların listesini görüntüleyebilirsiniz.

Başarılı bir şekilde giriş yaptığınızda aşağıdaki gibi bir ekran karşınıza gelecektir.


Resim-3

Plug-in’i sisteme kayıt edebilmek için yukarıdaki “Register” düğmesine tıklıyoruz ve ardından “Register New Assembly” ‘ ye tıklıyoruz.


Resim-4

Step#1 bölümündeki … düğmesine tıklayarak kayıt ettirmek istediğimiz .dll’i seçiyoruz.

Step#2 bölümünde kaydetmek istediğimiz plug-in class’ini seçiyoruz.

Step#3 bölümünde 2 tane seçeneğimiz bulunmakta;

  1. Sandbox : Bu seçeneği seçer isek plug-in bir Sandbox içerisinde çalışacak yani dış ortamdan izole edilecek. Böylece bu plug-in sistem içerisinde çalışacak ama sisteme zarar veremeyecek ve izlenebilir olacak. Kısacası yazdığınız bir plug-in production ortamına taşımadan önce test etmek için bu seçeneği kullanıyoruz.
  2. None : Hiçbir kısıtlama olmadan .dll içerisindeki kodlar icra edilir.

Step#4 bölümünde ise plug-in nerede duracağını seçmemizi istemekte.

  1. Database: Tavsiye edilen yöntem budur. Böylece dll işletim sistemi kaynaklı sorunlardan izole edilir. Veritabanı yedeklendikçe dll de içinde olduğundan yedeklenecektir ve herhangi bir durumda geriye dönmenizi sağlar.
  2. Disk: Sistemin varsayilan dll yerleştirme yeri olan CRM Kurulum Yolu\Server\bin\assembly klasörü içerisinden dll’i okur. Her bir Server için dll’lerin belirtilen klasöre konması gerekmektedir.
  3. GAC: Global Assembly Cache üzerinden dll’leri okur.

Bu noktada bir not ileteyim eğer server üzerinde çalışan kodu debug etmek isterseniz yine server\bin\assembly klasörüne .pdb uzantılı debug symbol’lerinizi yerleştirmeniz gerekmekte.

İkinci bir not da eğer Server’da custom code execution kapalıysa açmak için Server üzerinde Powershell ile şu kodları çalıştırmanız gerekmekte:

Add-PSSnapin Microsoft.Crm.PowerShell

$setting = get-crmsetting customcodesettings

$setting.AllowExternalCode=”True”

Degerleri kontrol etmek için bu komutlari calistirabilirsiniz :

set-crmsetting $setting

get-crmsetting customcodesettings

Ayarları tersine çevirmek için “AllowExternalCode”‘a “False” değerini vermeniz yeterli.

Bütün bu adımları tamamladıktan sonra “Register Selected Plugin” düğmesine tıklıyoruz. Plug-in kaydetmediki ilk adimi gerçekleştirmiş olduk sıra diğer adımlarda :)

Bu noktada plug-in’i hangi event(ler) için yazdıysak onun için adim(lar) eklememiz gerekiyor. Plug-in anlatırken hep bir olay olduğunda yani veritabanına bir kayıt eklendiğinde, silindiğinde ya da bir alanı güncellendiğinde tetiklenebilir gibi örneklerle anlatıyoruz ama aslında olay bundan daha derin gelin simdi custom entity’ler için yani bizim oluşturduğunuz varlıklar için sistem üzerinde nasıl olayların tetiklenmelerini yakalayabiliyoruz. Literaturde bu konu message olarak geçmekte yani CRM eventlarina mesaj adı verilmekte.


Resim-5

Listede de yer aldığı gibi Retrieve, RetrieveMultiple yani veritabanında sorgulama ya da SetState yani bir kaydın durumun değişmesi gibi birçok farkli mesaj için plug-in’i tetikletebilmekteyiz.

Lütfen sunu unutmayın yukarıdaki liste sadece custom entity’ler için campaign, campaignactivity, list gibi entity’ler için farklı mesajlar da mevcut tum listeye SDK içindeki “Message-entity support for plug-ins.xlsx” isimli dosyadan ulaşabilirsiniz.

Simdi yeni bir adim ekleyerek bir mesaj için plug-in’imizin tetiklenmesini sağlayalım. Bunun için plug-in üzerinde sağ tuşa tıklayarak ya da yukarıdaki “Register” düğmesine tıklayarak açılan menüden “Register New Step”‘e tıklıyoruz. Karşımıza aşağıdaki gibi bir pencere çıkacak:


Resim-6

Message: Yukarıda bahsettiğim mesajlardan birini buraya yazabilirsiniz. Hangi mesajı yazarsanız plug-in bu olay için çalışacak. Create/Update gibi mesaj isimleri yazarken otomatik olarak tamamlamaya çalıştığını göreceksiniz. Her bir mesaj için ayrı step’ler tanımlamanız gerekmektedir.

Primary Entity: Bu plug-in hangi entity yani varlık üzerinde çalışacak. Buraya account, contact gibi bir varlık adi yazabilirsiniz.

Secondary Entity: Bu plug-in’i ikinci bir varlık için tanıtacaksak buraya yazabiliriz.

Event Pipeline Stage of Execution: Bu kısımda plug-in’i pre yani veri veritabanına gitmeden mi çalıştıracağız yoksa post yani kaydedildikten sonra mi çalıştıracağız bunu seçiyoruz.

Execution Mode: (sadece post da ikisinden birini seçebilmekteyiz) kod senkron yani sistemde kullanıcı ile etkileşimli ayni anda mi hareket etsin yoksa asenkron yani kullanıcıdan bağımsız arka tarafta sessizce mi çalışsın bunu seçiyoruz.

Deployment: Bu kod
Server da mı çalışsın yoksa Outlook client gibi offline modda da çalışsın seçeneğidir.

Bu yukarıda açıkladığım bölümler standart ayarlar. Yani her plug-in step’i tanımladığımızda mutlaka bakmamız gereken ayarlar. Ekranda bir de farklı ayarlar var onlara da bakalım.

Event Handler: Bu kodun çalışmaya başlayacağı class’in seçildiği yerdir. Çok değişik bir hareket yapmadığınız surece zaten plugin registration tool otomatik bir şekilde “Execute” metodunu görecek ve orayı seçecektir.

Name: Sistem bu step için otomatik bir atamakta ama değiştirmek isterseniz buradan yapabilirsiniz.

Run in User’s Context: Belki dokunmanız gereken noktalardan biri olabilir. Bu kodu hangi kullanıcı yetkileriyle çalıştırmak istiyorsanız onu seçebilirsiniz. Standartta ayarı “Calling User” yani hangi kullanıcı bu işlemi yaparsa seçilidir.

ExecutionOrder: Eğer ayni varlık içinde ve ayni mesaj için başka bir plug-in daha varsa buraya sıra numaraları vererek hangisini önce-sonra çalışacağını belirleyebilirsiniz.

Unsecure ve Secure Configuration’larin ne ise yaradığına zaten “Plug-in Yapıcı Metodlari” başlığı altında değinmiştim.

Bütün gerekli ayarlamaları yaptıktan sonra en altta bulunan “Register New Step” düğmesine tıklayarak işlemi tamamlıyoruz. Artik plug-in’i test edebilirsiniz.

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

Referanslar

https://www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Barış Kanlıca firmalara CRM ve yazılım konusunda danışmanlık yapmaktadır ve yazılım eğitimleri vermektedir. Dynamics CRM alanında yaptığı çalışmalarından dolayı Microsoft kendisine bu alanda sadece 55 kişide olan MVP(Most Valuable Professional) unvanını ve ödülünü vermiştir. Barış Kanlıca birçok üniversite ve seminerde konuşmacı olmaktadır. Kendisi INETA topluluğunun bir konuşmacısıdır. Ayrıca www.yazgelistir.com, www.yazilimgunlugu.com ve www.nedirtv.com sitelerinde bölüm editörüdür.Uzunca bir süredir Londra'da yaşayan Barış Kanlıca ve kurucusu olduğu Mawens Business Solution'da danışmanlık hizmeti vermeye devam etmektedir.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir