Makale Özeti

SharePoint ekosisteminde bir olay meydana geldiğinde, bu olayı yakalayıp başka aktiviteleri tetiklemeye yarayan Event Receiver lara değineceğiz.

Makale

Merhaba,

SharePoint 2010 makalelerine vakit buldukça kendimce önemli olan konulardan devam etmek istiyorum.

Bu sefer anlatmak istediğim konu “Event Receivers” yani Türkçesi ile “Olay Algılayıcıları” dersek sanıyorum çok yanlış olmaz. SharePoint in ne kadar güçlü bir altyapıya sahip olduğunu tekrar söylememe gerek yok diye düşünüyorum ki Event Receiver lar da SharePoint e güç katan önemli bir özelliktir diyebiliriz.Ayrıca SharePoint in barındırdığı bu Event Receiverlar çok geniş bir yelpazeye sahiptir. Bir Event Receiverı,  SharePoint List, ListItem ya da Site için kullanabilirsiniz. Kabaca özetleyecek olursak, SharePoint ekosisteminde bir olay meydana geldiğinde, bu olayı yakalayıp başka aktiviteleri tetiklemeye yarar. Örneğin, şirketinizin İK departmanı, personeli ilgilendiren dökümanlarını Custom bir SharePoint List üzerinde paylaşıyor olsun ve siz de bir çözüm geliştirici olarak personelin hayatını kolaylaştırmak adına, her yeni döküman eklenildiğinde personele e-mail atarak yeni döküman eklendiği bilgisini vermeyi düşünüyorsunuz. Bu işlemi otomatize etmek için imdadınıza EventReceiver lar koşacaktır.

Lafı fazla uzatmadan, basit bir örnek üzerinden giderek icraate geçelim.

Öncelikle boş bir SharePoint 2010 projesi oluşturuyorum ve ERTest olarak adlandırıyorum.Proje tipini de Deploy as a Farm Solution olarak seçiyorum.
Daha sonra SharePoint sistemim üzerinde IKDocs adında bir Document Library oluşturuyorum.
Tekrar Visual Studio tarafına geçiyoruz ve projemize Add New Item diyerek bir EventReceiver ekliyoruz, ben bu EventReceiver in ismine IKDocsER dedim. Karşımıza bir ekran gelecek, buradan Event Receiver ımızın nereleri ve neleri izleyeceğini belirliyoruz. “What type of Event Receiver do you want?” sorusuna “List Item Events” diyoruz, “What item should be the event source?” sorusuna “Document Library” diyoruz, Handle the following events yani hangi olayları izlememi istiyorsun kısmında ise “An item was added” i seçiyoruz sadece. (Siz bu kısımda birden fazla seçenek seçebilirsiniz ama hepsi için ayrı ayrı handle eden kodları da yazmanız gerek)

public override void ItemAdded(SPItemEventProperties properties)
       {
           base.ItemAdded(properties);
 
       }

 

Yukarıdaki şekilde hazır gelen kodumuzu şu şekilde değiştiriyoruz.

         public override void ItemAdded(SPItemEventProperties properties)

       {

           base.ItemAdded(properties);

           if (properties.ListTitle == "IKDocs")

           {

               //your logic ...

               //properties.ListTitle

           }

       }

Burada şunu yapıyor kodlarımız,  doküman eklenen Document Library miz “IKDocs”  mü değil mi kontrolü öncelikle. Daha sonra istediğimiz işi yapabiliriz, burada mail atma ve buna benzer işlemler tamamen size kalıyor. ItemAdded metoduna gelen SPItemEventProperties tipindeki properties değişkeninden size gereken bilgileri de alabilirsiniz...Burada birsürü şey yapılabilir, örneğin bu Document Library ile ilişkilendirilmiş bir workflow start edilebilir, announcements olarak başka yerlere de bildirimler yapılabilir vs. Gerisi tamamen sizin ihtiyaçlarınıza ve hayal gücünüze kalıyor. Özetle, IKDocs adlı document library mize yeni bir eleman eklendiğinde kodlarımız tetikleniyor.

Event Receiver lar konusuna da böylece değinmiş olduk. Umarım işinize yarar bir makale olmuştur.