Pazar, Şubat 08, 2009

SharePoint Object Model: Site Koleksiyonunda aktif olan Feature'ları elde etmek

Feature'lar MOSS 2007'de bir sitenin gerçekleştirip gerçekleştiremeyeceği işlemleri belirlemek için kullanılabilecek kavramlardır. Türkçe'ye "özellik" şeklinde çevirebileceğimiz Feature kavramı gerçek anlamda da sitelerin özelliklerini kısıtlayıp genişletebilmektedir. Örneğin bir site içerisinde arama işlemlerinde kullanılabilecek WebPart'ların kullanılabilmesi için Office SharePoint Server Search Web Parts özelliğinin açık olması gerekmektedir ya da bir site içerisinde Disposition Workflow'un kullanılabilmesi için Disposition Approval Workflow özelliğinin açık olması gerekmektedir, bahsedilen bu iki Feature da SiteCollection düzeyinde Fetaure'lardır Site düzeyinde olup sadece Site'ı etkileyen Feature'larda mevcuttur Office SharePoint Server Publishing Fetaure'ı bunlardan biridir ve sitenin daha görsel ve daha interaktif bir duruma getirilmesine olanak tanır. Bir Site'ın ya da SiteCollection'ın Feature'larını görüp aktif pasif etmek için site ayarlarından Site Features ve Site Collection Features bağlantıları kullanılabilir.

Nesne modeli açısından baktığımızda SPFeatureDefinition ve SPFeature adında iki sınıf bizi karşılıyor olacaktır. SPFeatureDefinition bir Feature MOSS'a yüklendikten sonra bu Feature'a erişmek için kullanılabilecek bir sınıftır. SPFeatureDefinition üzerinden erişilen Feature'lar abstract class'lara benzetilebilir, nasıl bir abstract class direkt kullanılamayıp ondan kalıtılan bir sınıf üzerinden kullanılabiliyorsa Farm düzeyindeki SPFeatureDefinition sınıfı ile erişilebilien Feature'larda direkt kullanılamaz, kullanılması için herhangi bir sitede aktif duruma getirilmesi gerekmektedir. Farm düzeyindeki Feature'ın aktif edilmiş haline de SPFeature sınıfı aracılığı erişilebilir.

MOSS'da her nesnenin bir ID'si vardır. GUID tipinde olan bu ID'ler nesnelere erişim için önemli bir yere sahiptir ve nesne modelinde de pek çok yerde kullanılması gerekir. Kullanılması gereken yerlerden biri de Feature'lardır ve bu ID'lere de özellik olarak nesne örnekleri üzerinden ulaşılabilir. Aşağıdaki kodlarda bir sitede kullanılan Feature'ları listeleyecek olan küçük bir programcık yer almaktadır. Kodlardan da anlaşılacağı üzere bu kodlar bir Console uygulamasıdır ve kodların çalışması için bir önceki makalede belirtmiş olduğumuz path'de yer alan Microsoft.SharePoint.dll isimli dll'in refere edilmiş ve Microsoft.SharePoint isimli namespace'in eklenmiş olması gerekmektedir.






SPSite site = new SPSite("http://litwareportal");

SPFeatureCollection siteFeatures = site.Features;



foreach (SPFeature feature in siteFeatures)

{

Console.WriteLine(feature.Definition.DisplayName);

Console.WriteLine(feature.Definition.Id);

SPFeaturePropertyCollection featureoOzellikleri =
feature.Properties;



foreach (SPFeatureProperty
property in featureoOzellikleri)

{


Console.WriteLine("\tProp name: " + property.Name);


Console.WriteLine("\tProp value:" + property.Value);

}

}

Kodlardan da görüleceği üzere bir SiteCollection düzeyinde kullanılan Feature'ları elde etmek için SPSite tipindeki nesne örneğinin Fetaures koleksiyonu kullanılmaktadır, bahsedilen koleksiyon geriye SPFetaureCollection tipinden bir koleksiyon döndürüyor ve foreach döngüsü ile de bu koleksiyon içerisinde geziliyor. Bir Feature'ın Definition'ınına yani Farm düzeyindeki tanımlamasına Definition özelliği aracılığı ile erişilebilir. Yukarıdaki kodlarda da Definition ID'sini yani Fetaure MOSS'a yüklenirken belirtilen GUID'i elde edebiliyoruz ve DisplayName özelliği ile de görüntülenen ismi ekrana yazdırılıyor. İkinci foreach ile de Fetaure'ın Property'leri üzerinde gezilip propetylerin adı ve taşıdıkları değerler ekrana yazdırılıyor. Program çalıştırılınca aşağıdaki gibi bir görünüm elde ediliyor olacaktır.



Hiç yorum yok: