ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Eklenti, Microsoft Dynamics CRM ile entegre olan ve platformun standart davranışını değiştiren veya genişleten özel bir iş mantığıdır. Eklentiler olay işleyicileri olarak işlev görür ve CRM'de belirli bir olayda yürütülmek üzere kaydedilir. Eklentiler C# veya VB dillerinde yazılır ve senkron veya asenkron modda çalışabilir.
Eklenti yazacağınız bazı senaryolar şunlardır:
Bir CRM kaydı oluşturduğunuzda veya güncellediğinizde, bir kaydın belirli alanlarını güncellemek veya ilgili kayıtları güncellemek gibi bazı iş mantığını yürütmek istiyorsunuz.
Bir kaydı kaydetme veya güncelleme gibi belirli olaylarda harici bir web servisini çağırmak istiyorsunuz.
Herhangi bir kayıt açıldığında alan değerlerini dinamik olarak hesaplamak istiyorsunuz.
CRM'deki belirli olaylarda müşterilerinize e-posta göndermek gibi süreçleri otomatikleştirmek istiyorsunuz.
Olay Çerçevesi
CRM'deki Olay İşleme Çerçevesi, senkron ve asenkron eklenti isteklerini olay yürütme hattına ileterek işler. Bir olay bir eklenti mantığını tetiklediğinde, CRM Organizasyon Web Servisine bir mesaj gönderilir ve bu mesaj diğer eklentiler veya platformun temel işlemleri tarafından okunabilir veya değiştirilebilir.
Eklenti İşlem Hattı Aşamaları
Tüm eklenti işlem hattı, özel iş mantığınızı kaydedebileceğiniz birden fazla aşamaya bölünmüştür. Belirtilen işlem hattı aşaması, eklenti kodunuzun eklenti yürütme döngüsünün hangi aşamasında çalıştığını gösterir. Aşağıdaki tabloda belirtilen tüm işlem hattı aşamalarından yalnızca Ön ve Son olaylara özel eklentilerinizi kaydedebilirsiniz. Platform Çekirdek Ana İşlemlerine eklenti kaydedemezsiniz.
CRM uygulaması bir olayı (örneğin bir kaydı kaydetme veya güncelleme) tetiklediğinde, aşağıdaki işlem dizisi gerçekleşir:
Olay, bir Web servis çağrısını tetikler ve yürütme, olay işlem hattı aşamalarından (olay öncesi, platform çekirdek işlemleri, olay sonrası) geçer.
Bilgiler dahili olarak bir OrganizationRequest mesajı olarak paketlenir ve son olarak dahili CRM Web servis yöntemlerine ve platform çekirdek işlemlerine gönderilir.
OrganizationRequest mesajı ilk olarak olay öncesi eklentiler tarafından alınır ve bu eklentiler, platform çekirdek işlemlerine iletilmeden önce bilgileri değiştirebilir. Platform çekirdek işlemlerinden sonra, mesaj OrganizationResponse olarak paketlenir ve işlem sonrası eklentilere iletilir. İşlem sonrası eklentiler, isteğe bağlı olarak bu bilgileri asenkron eklentiye iletmeden önce değiştirebilir.
Eklentiler bu bilgiyi, Execute yöntemine iletilen bir bağlam nesnesi biçiminde alır ve ardından daha fazla işlem gerçekleşir.
Tüm eklenti işlemleri tamamlandıktan sonra, yürütme, olayı tetikleyen uygulamaya geri iletilir.
Eklenti Mesajları
Mesajlar, eklentinin (veya iş mantığının) kaydedildiği olaylardır. Örneğin, İletişim varlığının Oluşturma Mesajı olayına bir eklenti kaydedebilirsiniz. Bu, yeni bir İletişim kaydı oluşturulduğunda iş mantığını tetikleyecektir.
Özel varlıklar için, varlığın kullanıcıya ait mi yoksa kuruluşa ait mi olduğuna bağlı olarak desteklenen mesajlar şunlardır:
Varsayılan olarak kutudan çıkan varlıklar için 100'den fazla desteklenen mesaj bulunmaktadır. Bu mesajlardan bazıları tüm varlıklar için geçerliyken, bazıları belirli varlıklara özgüdür. Desteklenen mesajların tam listesini SDK içindeki bir Excel dosyasında bulabilirsiniz: SDK\Message-entity support for plug-ins.xlsx
Eklenti Yazma
Bu bölümde, bir eklenti yazmanın temellerini öğreneceğiz. Sisteme yeni bir müşteri eklendiğinde, yani CRM'de yeni bir İletişim Kaydı oluşturulduğunda, müşteriyle takip etmek için bir Görev etkinliği oluşturan örnek bir eklenti oluşturacağız.
Öncelikle, Microsoft.Xrm.Sdk ad alanına referansları eklemeniz gerekecektir. CRM SDK, gerekli tüm SDK derlemelerini içerir. 2. Bölümde SDK'yı zaten indirdiğinizi ve kurduğunuzu varsayarak, Visual Studio'yu açın. Sınıf Kitaplığı türünde yeni bir proje oluşturun. Projeye SamplePlugins adını verebilir ve Tamam'ı tıklayabilirsiniz.
Projenize Microsoft.Xrm.Sdk derlemesinin referansını ekleyin. Bu derleme SDK/Bin dizininde bulunmaktadır.
Şimdi, PostCreateContact.cs adında bir sınıf oluşturun ve bu sınıfı IPlugin'den miras alın. Şu ana kadar kodunuz aşağıdaki gibi görünecektir.
Ayrıca System.Runtime.Serialization'a da referans eklemeniz gerekecek. Gerekli referansları ekledikten sonra, aşağıdaki kodu PostCreateContact sınıfının içine kopyalayın.
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;
namespace SamplePlugins {
public class PostCreateContact:IPlugin {
/// A plug-in that creates a follow-up task activity when a new account is created.
/// Register this plug-in on the Create message, account entity,
/// and asynchronous mode.
public void Execute(IServiceProviderserviceProvider) {
// Obtain the execution context from the service provider.
IPluginExecutionContext context =(IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
// The InputParameters collection contains all the data
passed in the message request.
if(context.InputParameters.Contains("Target")&&
context.InputParameters["Target"]isEntity) {
// Obtain the target entity from the input parameters.
Entity entity = (Entity)context.InputParameters["Target"];
try {
// Create a task activity to follow up with the account customer in 7 days
Entity followup = new Entity("task");
followup["subject"] = "Send e-mail to the new customer.";
followup["description"] =
"Follow up with the customer. Check if there are any new issues
that need resolution.";
followup["scheduledstart"] = DateTime.Now;
followup["scheduledend"] = DateTime.Now.AddDays(2);
followup["category"] = context.PrimaryEntityName;
// Refer to the contact in the task activity.
if(context.OutputParameters.Contains("id")) {
Guid regardingobjectid = new Guid(context.OutputParameter
s["id"].ToString());
string regardingobjectidType = "contact";
followup["regardingobjectid"] =
new EntityReference(rega rdingobjectidType,regardingobjectid);
}
// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory =
(IOrganizationSer viceFactory)serviceProvider.GetService
(typeof(IOrganizationServiceFactory));
IOrganizationService service =
serviceFactory.CreateOrganizationService(context.UserId);
// Create the followup activity
service.Create(followup);
} catch(Exception ex) {
throw new InvalidPluginExecutionException(ex.Message);
}
}
}
}
}
Aşağıda bu kodun ne yaptığının adım adım açıklaması yer almaktadır:
Adım 1 − IServiceProvider nesnesini parametre olarak alarak Execute yöntemini uygular. Servis sağlayıcı, eklenti içinde kullanacağınız birçok yararlı nesneye referans içerir.
Adım 2 − IServiceProvider'ın GetService yöntemini kullanarak IPluginExecutionContext nesnesini elde eder.
Adım 3 − Bağlam nesnelerinin InputParameters koleksiyonundan hedef varlıklar nesnesini alır. Bu Varlık sınıfı nesnesi, eklentimizin kaydedileceği İletişim varlık kaydına referans verir.
Adım 4 − Ardından bir Görev varlık nesnesi oluşturur ve uygun konu, açıklama, tarihler, kategori ve ilgili nesne kimliğini ayarlar. İlgili nesne kimliği, bu etkinlik kaydının hangi iletişim kaydı için oluşturulduğunu gösterir. Kodun, context.OutputParameters kullanarak üst İletişim kaydının kimliğini aldığını ve oluşturduğunuz Görev varlık kaydıyla ilişkilendirdiğini görebilirsiniz.
Adım 5 − IServiceProvider nesnesini kullanarak IOrganizationServiceFactory nesnesi oluşturur.
Adım 6 − IOrganizationServiceFactory nesnesini kullanarak IOrganizationService nesnesi oluşturur.
Adım 7 − Son olarak, bu servis nesnesinin Create yöntemini kullanarak CRM'ye kaydedilen takip aktivitesini oluşturur.
Eklenti Derlemesini İmzalama
Bu bölüm yalnızca eklenti derlemenizi ilk kez kaydediyorsanız geçerlidir. Eklentiyi dağıtabilmek için derlemeyi bir anahtarla imzalamanız gerekir. Çözüme sağ tıklayın ve Özellikler'e tıklayın.
Soldaki seçeneklerden İmzalama sekmesini seçin ve Derlemeyi imzala seçeneğini işaretleyin. Ardından, Güçlü ad anahtar dosyası seç seçeneğinden Yeni'yi seçin.
Anahtar dosya adını "sampleplugins" olarak girin (İstediğiniz başka bir isim de olabilir). "Anahtar dosyamı parola ile koru" seçeneğinin işaretini kaldırın ve Tamam'a tıklayın. Kaydet'e tıklayın.
Son olarak, çözümü derleyin. Sağ Tıklayın → Derle. Çözümü derlemek, bir sonraki bölümde bu eklentiyi kaydetmek için kullanacağımız derleme DLL'sini oluşturacaktır.
Eklentilerde İstisna İşleme
Çoğu zaman, eklenti mantığınızın çalışma zamanı istisnalarını ele alması gerekecektir. Senkron eklentiler için, kullanıcıya bir hata iletişim kutusu gösterecek bir InvalidPluginExecutionException istisnası döndürebilirsiniz. Hata iletişim kutusu, istisna nesnesinin Message nesnesine ilettiğiniz özel hata mesajını içerecektir.