SharePoint On-Premise Event Reciever

Yazımızda SharePoint On-Premize üzerinde mevcut listelere Visual Studio 2013 yardımı ile Event Reciever geliştirme hakkında bilgi aktamı yapmaya çalışacağım.

Öncelikli olarak Event Reciever hakkında kısa bilgileri tekrardan gözden geçirelim isterseniz.

Event Reciever Nedir?

SharePoint Farm yapısı üzerinde meydana gelen etkinlikleri yakalayıp yakaladığı bu etkinlik ile SharePoint Farm üzerinde başka etkinlikleri yada başka bir deyiş ile aktiviteleri gerçekleştiren kod / modül parçacıklarıdır.

Event Reciever Nerelerde Kullanılır?

Olay algılıyıcıları ( Event Recievers) SharePoint Farm yapısında bulunan List, ListItem, Site vb. nesnelerde ve collectionlarda kullanılabilir. Bildiğiniz üzere SharePoint çok geniş bir yelpazeye sahip olduğundan Olay Algılıyıcıları da bu geniş yelpazenin bir parçası olarak SharePoint yapımıza güç katar. Olay algılıyıcılarının kullanımına örnek vermek gerekir ise;

SharePoint Farm yapınız üzerinde herhangi türden bir form ( Liste) olduğunu düşünün. Örneğin firmanıza ait promosyon taleplerinin girildiği bir liste. Bu liste üzerinde her yeni bir kayıt eklendiğinde ilgili personelinize e-posta atmak istiyorsunuz. Tam burada bu işlemi gerçekleştirmek için Olay Algılıyıcılarına ihtiyaç duymaktayız.

*** Hemen bir soru aklınıza gelebilir. Biz bu işlemi Work Flowlar yardımı ile de yapabiliriz niye Event Reciever kullanıyoruz. Daha öncede bahsettiğimiz üzere SharePoint geniş yelpazesi ile size bir işi farklı yollardan yapma seçeneği sunar. Kurumsal mimari yazılımlarının temeli de çözüm geliştiricilere esnek platformlar sağlamaktır. Buradaki yöntemlerden birincisini Work Flowlar olarak varsayar isek, ikincisi ise Event Recieverler dir.

Event Reciever Nasıl Oluşturulur ?

Event Reciever oluşturmak için öncelik ile bir SharePoint Farm yapısına ihtiyaç duyarsınız. Bu Farm SharePoint online üzerinde olmamalıdır. Yani On-Premise yapınız üzerinde bir sunucu olmalıdır. Gereksinimlerden diğeri ise Visual Studio çalışma yaptığınız sunucu üzerine kurulu olmalıdır.

A – Visual Studio ile Proje Oluşturmak

Visual Studio 2013 programını açarak File > New > Project seçeneği ile yeni bir SharePoint Projesi oluşturuyoruz.

Ok butonuna basarak projemizi oluşturuyoruz. Bu esnada Visual Studio bize ( Eğer açmadı isek) Yönetici olarak Visual Studio programını açıp açmayacağımızı sorabilir. Bu gibi durumda Yönetici olarak aç diyerek projemizi oluşturuyoruz.

Hemen ardından açılan pencere bize bu projemizin Sandbox mı? Yoksa Farm Solution mu? Olduğunu soracaktır. Biz örneğimizde Sandbox Solution olarak devam edeceğimizden ilgili seçeneği işaretliyerek Finish butonuna basıyoruz.

Projemizi oluşturduk ve artık boş bir SharePoint projemiz karşımızda. Projemizi boş açma sebeplerimizden birisi bir çok görsel part ve bunlara bağlı kodları başka projelerde tutmak. Yani yönetilebilirliğini arttırmak açısından sadece Event Recieverları bir noktada toplamak için boş bir proje açtık. Bundan sonra yapacağımız Event Recieverları da bu proje üzerinde geliştirebilir veya her bir Event Reciever için ayrı ayrı proje dosyaları yapabilirsiniz.

Boş projemizi Visual studio da Solution Explorer penceresinde görebiliriz.

B – Yeni Event Reciever Oluşturmak

Örnek uygulamamızda buraya kadar boş bir proje oluşturarak Event Reciever hakkında bilgi sahibi olduk. Şimdi ise oluşturmuş olduğumuz projemize yeni bir Event Reciever eklemeye geldi sıra.

Proje dosyamıza sağ tıklayarak Add > New Item Seçeneğini işaretleyerek projemize yeni öğeler ekleyebileceğimiz Add New Item penceresine ulaşıyoruz.

Bu pencere açıldığında projemize ekleyebileceğimiz SharePoint içerisinde kullanılan bir çok öğeyi görebilmekteyiz. Bunların içinden konumuz ile alakalı olan Event Reciever yazılı öğeyi bularak isimlendirerek Add butonuna tıklıyoruz.

Add butonuna bastığımızda Visual Studio bize hangi tip Event Reciever oluşturacağımız sormakta. Aşağıdaki oluşturabileceğimiz tiplerin bir listesi ve açıklamaları bulunmaktadır.

  1. List Event : Bir Liste oluşturulduğunda veya silindiğinde yapılacak işlemler.
  2. Liste Item Event : Herhangi bir listenin yeni öğe oluşturulmasında veya silimesinde
  3. List Email Events : Bu listenin dışarıdan email alabileceğini ve email alındığı zaman ne işlem yapılacağını kontrol eden Event Reciever.
  4. Web Events : Siteler yada Site Collection işlemlerinin takip edilebildiği Event Recieverlar oluşturulur.
  5. Work Flow : İş akışları esnasında başlatılma, başlama bitiş gibi işlemlerin kontrol edilebileceği Event Reciever.

Biz elimizdeki mevcut bir listeye öğe eklenmesinde işlem yapmak istediğimizden List Item Events seçeneğini seçerek aşağıda listelenen seçeneklerden de “” seçeneğini tik’leyerek Finish butonuna basıyoruz.

Bu seçeneklerin isimlerinden ne anlama geldiklerini çözebilmeniz için basit bir açıklama şeklinde yazılmıştır. Yukarıdaki işlem Item eklenmeye başlandığı zaman çalışacaktır. Diğer bir yanda Item eklendikten sonra Event Receiverinizin çalışmasını işitiyor iseniz aşağıdaki seçeneği tiklemeniz yeterli olacaktır.

Evet yukarıda Item eklendikten sonra çalışacak methodu artık kodumuza tanıttık ve finish butonu yardımı ile ekranı kapatarak Visual Studio ortamına geçiş yapmaya geldi sıra.

Senaryomuz gereği Promosyon Talep formumuza bir öğe eklendiğinde mail atan bir kod yazalım. Daha önce projemizi oluştururken Sand Box olarak seçmiştik. Bu noktada sharepoint SpUtility.SendEmail fonksiyonunu sand box modunda desteklememektir. Bu gibi bir durumda sand box üzerinden mail atabilmek için System.Net Mail kodlarını kullanarak mail atabilirsiniz.

Aşağıda kodumuzun ekran görüntüsünü görüyoruz. Üzerindeki rakamlara göre de biraz kodumuzu açılamaya çalışalım .

1 – Event Reciever’ımızı oluştururken kaynağını Custom List olarak seçtik. Ama hangi liste olduğunu belirtmemiştik. Bu alanda ufak bir if ile eğer listemizin title alanı bu ise diyerek kodumuza başlıyoruz ve sadece Promosyon Talep formu için Reciever’ımızın çalışmasını sağlıyoruz.

2 – Listeye ekleme yapan kullanıcının tam denetime sahip olmasa bile bu kodun çalışması için gerekli yetkilendirme kodumuzdur. Bu konu hakkında daha fazla bilgiye https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx adresinden ulaşabilirsiniz.

3 – Mevcut Site bağlantısını Reciever tarafından gönderilen Property.SiteId den alarak set ediyoruz.

4 – Aynı şekilde eklemiş olduğumuz site bağlantısına bağlı mevcut aktif web sitesini de web objesine alıyoruz.

5 – Sitenin içindeki web collectionun da bulunan listemizi okuyoruz. Ardından eklenen list öğesini item değişkenimize alıyoruz. RemoveAllPermissionMethodumuz ile öğeye bağlı bütün yetkilendirmeleri Reciever çalışma süresi boyunca kaldırıyoruz. En son olarak SpUtility.SendEmail fonksiyonu yardımı ile mailimizi atıyoruz.

Burada gönderilen mail SharePoint SMTP ayarlarından girmiş olduğunuz mail adresi tarafından gönderilecektir. SpUtility.SendEmail hakkında daha fazla bilgi edinmek isterseniz https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.sendemail%28v=office.12%29.aspx linkini ziyaret etmeniz yeterli olacaktır.

Örneğimizde basit manada bir event reciever oluşturulmasından ve bu recieverin arkasına Visual Studio yardımı ile kod yazılmasına kısaca değinmeye çalıştım.

Bu yazımızda anlatılan Farm ve Sandbox uygulamaları Deployment aşamasında zamanlama olarak birbirlerinden farklılık gösterebilir. Siz kendi farm yapınız dahilinde uygulanacak olan uygulama şablonunu belirleyerek kodlamanıza devam edebilirsiniz.

İyi kodlar.

Leave a Reply