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.