MOSS 2007 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MOSS 2007 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Salı, Temmuz 14, 2009

stsadm aracı ile bir web application'ın Backup'ını almak

stsadm.exe SharePoint üzerinde komut satırı aracılığı ile işlem yapmak için kullanabilecek bir araçtır, özellikle üçüncü parti bir yazılım kullanılmıyor ise Backup'ları zamanlamak için stsadm.exe kilit rol oynamaktadır. Aracın kendi yardımından portalın tamamının yedeğini almak için örneklere erişilebilmektedir ancak bilineceği üzere, SharePoint portalın herhangi bir bölümünün de yedeğinin alınmasına olanak tanımaktadır.Portalın herhangi bir bölümünün yedeğini almak için stsadm aracına item parametresi ile hangi bölümün yedeğinin alınacağı belirtilmelidir, burada bir soru işareti daha bizi karşılıyor item parametresine belirtilecek olan bölüm adının nereden elde edileceği!
SharePoint'te yedeği alınabilecek olan bölümlerin listesini iki farklı şekilde öğrenebilirsiniz ilk yöntem ki bu kolay olanı; Central Administration Site üzerinde Operations tabından yeni bir Backup alma işlemi başlatıyormuş gibi yapıp portalın tüm içeriği görüntülenebilir. İkinci yöntem ise stsadm aracının Bakup opeasyonunda showtree parametresi tercih edilebilir.
showtree parametresini kullanmak için stsadm.exe'nin bulunduğu dizine gidildikten sonra aşağıdaki komut çalıştırılır.

stsadm.exe -o backup -showtree


Komut çalışıtırdıktan sonra portalın içeriği aşağıdaki gibi görüntüleniyor olacaktır.


Görüntülenmekte olan bileşenlerden istenilen bölümün backup'ını almak için stsadm.exe aşağıdaki söz dizimi ile çalıştırılabilir.

stsadm.exe -o backup -directory \\NetronPortal\backup -backupmethod full -item "SharePoint - 80"


Yukarıdaki söz dizimi aracılığı SharePoint'e SharePoint - 80 isimli web application'ının backup'ının paylaşımda bulunan backup isimli klasöre alınacağı belirtilmiş oluyor.

Salı, Nisan 28, 2009

Microsoft Office SharePoint Server 2007 ve Windows SharePoint Services 3.0 için Service Pack 2 Yayınlandı!


Microsoft Office SharePoint Server 2007 ve Windows SharePoint Services 3.0 için Service Pack 2 Yayınlandı! Performans ve erişilebilirlik alanlarında iyileştirmeler içeren paketleri aşağıdaki linklerden indirip sisteminizi güncelleyebilirsiniz.

Windows SharePoint Services 3.0 için Service Pack 2:
http://www.microsoft.com/downloads/details.aspx?FamilyId=79BADA82-C13F-44C1-BDC1-D0447337051B&displaylang=en

Microsoft Office SharePoint Server 2007 için Service pack 2:
http://www.microsoft.com/downloads/details.aspx?FamilyId=B7816D90-5FC6-4347-89B0-A80DEB27A082&displaylang=en

Paketleri aşağıdaki sıra ile Farm'da bulunan tüm sunuculara aşağıdaki sırayı takip ederek
yükleyebilirsiniz:

  1. Service Pack 2 for Windows SharePoint Services 3.0
  2. Service Pack 2 for Windows SharePoint Services 3.0 Language Pack (Eğer kurulu ise)
  3. Service Pack 2 for Office SharePoint Server 2007
  4. Service Pack 2 for Office SharePoint Server 2007 Language Pack (Eğer kurulu ise)

Service Pack'leri kuracak olan sistem yöneticilerine ufak bir uyarı yapmakta fayda olacaktır, Service Pack dahi kuruyor olsanız sistem üzerinde ciddi bir değişiklik yapıyor olmanız anlamına gelmektedir ve sonuç olarak bir risk alıyorsunuz, bu sebeple Service Pack'leri kurmadan önce Back Up almayı unutmamanızı öneririm.

Pazartesi, Nisan 20, 2009

What is SharePoint? @Pamukkale Üniversitesi

Bir yıldan daha fazla bir sürenin ardından sonra bu gün yeniden kendi üniversitemde yani Pamukkale Üniversitesi'nde seminer verme fırsatım oldu. Denizli'nin memleketim ve okuduğum il olması nedeni ile yeri benim için ayrıdır ve genellikle seminer veya eğitimlere ailemi de görmek için bir kaç gün önce giderim, bu sefer de haftasonu tatilini de birleştirerek yaklaşık üç gün Denizli'de kalma fırsatım oldu ve tanıdıklarımda hasret giderdim :)
20 Nisan'da da pek çok üniversitede gerçekleştirmiş olduğum What is SharePoint? seminerimi bu sefer de Pamukkale Üniversitesi Bilişim Haftası'nda gerçekleştirmek için üniversiteye gittim, üniversite oldukça değişmiş ve gelişmiş en son gittiğim günden bu güne iki tane yeni bina ile karşılaştım ve neredeyse kampüsümüzü tanıyamadım ancak sunum yapacağım ve Türkiye'nin en çağdaş seminer salonlarından biri olan salon aynen yerinde duruyordu. Defalarca izleyici olarak girdiğim bu salonda ikinci defa genelde bulunduğum tarafın tam tersine doğru bakacaktım, daha önce gittiğimde de heyecanlanmıştım, bu sefer heyecanlanmam diye düşünüyordum ancak açık konuşmak gerekirse sunumun ilk dakikalarında biraz heyecanlandım ardından SharePoint'in büyüsü ile buçuk saat göz açıp kapatıncaya kadar sona erdi.

Pazartesi, Ocak 19, 2009

Programatik olarak MOSS üzerinde yeni Site Koleksiyonları Oluşturmak ve Güncellemek

SharePoint Nesne modeli kullanılarak yeni bir SiteCollection oluşturmak için aşağıdaki kodlar kullanılabilir. Kodlarda ilk olarak bir SiteCollection'ın adresi belirtilerek bir SPSite tipinde bir nesne oluşturuluyor ardından da bu SiteCollection'ın yer aldığı WebApplication elde edilip WebApplication içerisine yeni bir SiteCollection oluşturuluyor.
SPSite litwareportal = new SPSite("http://litwareportal");



//80. portta yer alacak olan bir SiteCollection oluşturmak için 80.
portta bulunan web application elde ediliyor...

SPWebApplication webApplication = litwareportal.WebApplication;

webApplication.Sites.Add("/sites/MossDevelopment", "MossDeveleopment",
"Bu site kod yazarak oluşturuldu...", 1033, "STS#0", @"Litwareinc\Administrator",
"Administrator", "admin@litwareinc.com");

Console.WriteLine("Yeni SiteCollection Eklendi...");

Kodlar incelendiğinde ilk parametre olarak oluşturulacak olan SiteCollection'ın Path'inin gönderildiği görülecektir. İkinci parametre olarak da SiteCollection oluşturulurken SiteCollection içerisinde yer alacak olan TopLevelSite adındaki root sitenin adı ve üçüncü parametre olarak da tanımlaması belirtiliyor. Dördüncü parametre olarak sitenin dili belirtiliyor bu alanda 1033 İngilizce'ye karşılık gelmektedir.(Türkçe Language Pack kurulduğunda Türkçe'nin kodu 1055 olacaktır.) STS#0 ile TopLevelSite'ın şablonu belirtiliyor ve ardından son iki parametre olarak da sitenin sahibi ve mail adresi belirleniyor.
SiteCollection içerisinde yer alan bir sitenin herhangi bir özelliğini programatik olarak güncellemek için de aşağıdaki kodlar kullanılabilir.

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

SPWeb web = site.OpenWeb();

web.Title = "MOSS Development";

//Güncellemelerde Update() metodunun çalıştırılması gerekiyor...

web.Update();

Console.WriteLine("Site Güncellendi...");

Kodlarda daha önceliklerden faklı olarak OpenWeb() isimli bir metod kullanıldığı dikkat çekmektedir. Bu metod bir SiteCollection içerisinde yer alan bir sitenin nesnesini döndürür. Kodlarda görüldüğü gibi boş olarak kullanıldığında SiteCollection içerisinde yer alan ve SiteCollection oluşturulurken oluşturulan TopLevelSite'ın nesne örneği oluşturulur ve onun üzerinde işlem gerçekleştirilebilir. OpenWeb() metodunun OverLoad'larından bir diğeri de string olarak site URL'ini kabul eden bir metoddur. Bu metot aracılığı ile SiteCollection içerisinde yer alan bir Site açılıp üzerinden işlem gerçekleştirilebilir.
SiteCollection içerisine yeni bir Site eklemek için de aşağıdaki kodlar kullanılabilir.

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

SPWebTemplateCollection allTemplates = site.GetWebTemplates(1033);

SPWebTemplate template = allTemplates["BLOG#0"];

SPWeb blogSite = site.AllWebs.Add("blog", "Burak's", "Burak'ın Bloğu",
1033, template, false, false);

Console.WriteLine("{0} isimli site oluşturuldu...", blogSite.Title);

Yukarıdaki kodlarda da SPWebTemplateCollection isimli bir koleksiyon dikkat çekiyor bu koleksiyon Site template'lerini taşımak için oluşturulmuş bir koleksiyondur ve bir önceki satırda oluşturulan SPSite nesnesi içerisinde yer alan 1033 dilinde yani İngilizce'de yer alan şablonlar SPWebTemplateCollection tipinden oluşturulan nesneye alınıyor ve bir alt satırda da içlerinden daha bir tanesi daha sonra kullanılmak üzere SPWebTemplate tipinde tanımlanan nesne üzerine alınıyor. SiteCollection'a yeni bir Site eklemek için SPSite'ın AllWebs koleksiyonu kullanılıyot ve koleksiyonun Add metodu ile yeni bir Site ekleniyor, bu alanda metodun ilk parametresi sitenin URL'ini, ikincisi adını üçüncüsü de tanımlamasını ifade ediyor. Dördüncü parametre dili ve beşinci parametre de anlaşılacağı üzere sitenin şablonunu ifade ediyor. Bu alanda daha önce template isimli değişkende depolanan "BLOG#0" isimli template Blog Template'ini işaret etmektedir. Son iki parametreye false değeri atandığı görülmektedir bunlardan ilki site için ayrı bir güvenlik alt yapısının kullanılıp kullanılmayacağını belirtmektedir, false diyerek parent site'ın güvenlik ayarlarının bu site için de aynen uygulanacağını belirtmiş olduk. Son parametre ise belirtilen URL'in boş olmaması durumunda ne yapılacağını belirtmektedir, bu alanda false vererek daha önce belirtilen URL'in kullanılması durumunda hata mesajı fırlatılması sağlandı eğer true olarak belirtilirse belirtilen URL MOSS'un kullanacağı bir URL haline getirilip site oluşturuluyor olacaktır.

Perşembe, Ocak 15, 2009

MOSS'a Programatik Olarak Erişim

MOSS 2007 alt yapısı kullanılarak gerçekleştirilen sistemler kurumların pek çok ihtiyacını karşılayabilecek yetenektedir ancak zaman zaman sadece MOSS 2007 ile gelen özellikler kurumların ihtiyaçlarına cevap veremeyebilir, ya da kurum içinde kullanılmakta olan bir uygulama MOSS 2007 ile entegre hale getirilmek istenebilir. Bu gibi durumlarda SharePoint'e programatik olarak erişme ihtiyacı ortaya çıkmaktadır. MOSS 2007 ile birlikte SharePoint'e programatik olarak erişmek amacı ile web servisleri ve SharePoint Nesne Modeli yazılım geliştiricilere sunulmaktadır. Bu post'ta SharePoint Nesne Modeli içerisinde yer alan SPWeb ve SPSite sınıflarına deyinip bir site koleksiyonu içinde yer alan listeleri görüntülüyor olacağız.

SPSite ve SPWeb sınıfları da site (Site) ve site koleksiyonlarına (Site Collection) erişmek için kullanılabilecek olan iki sınıftır, SPSite ve SPWeb sınıflarından bahsetmeden önce ilk olarak site koleksiyonu yapılarına deyiniyor olmak mantıklı olacaktır. SharePoint alt yapısı ile bir portal geliştirildiğinde parçalar web siteleri olarak bir bütün oluşturuyor olacaktır. Türkçe yazılışı da aynı olan bu parçalara Site adı verilir, siteleri aynı amaca veya aynı gereksinimlere göre gruplama görevini üstlenen yapıya ise Site Koleksiyonu (Site Collection) adı verilir. MOSS üzerinde yer alan bir Web Uygulaması (Web Application) içerisinde yeni siteler oluşturulmak istenildiğinde bu siteler direkt Web Uygulaması düzeyinde değil bir Site Koleksiyonu içerisinde oluşturuluyor olmalıdır dolayısı ile MOSS'da aşağıdaki şekilde de yer alan bir hiyerarşi mantığı söz konusudur.




Şekilden de görüleceği üzere IIS altında yer alan Web Application'lar içerisinde SiteCollection'lar bulunabiliyor ve SiteCollection'lar içerisinde de Site'lar yer alıyor. Programatik olarak SiteCollection'lara erişmek için nesne modelinde yer alan SPSite ve Site Collection içerisinde yer alan sitelere ulaşmak için de SPWeb sınıfları kullanılıyor olacaktır. SPSite ve SPWeb sınıflarının kullanılabilmesi için MOSS 2007 kurulu olan bir makinede yer alan SharePoint dll'i uygulamaya referans edilmelidir. Varsayılan olarak kullanılacak olan dll C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI yolunda yer alıyor olacaktır. Klasörde yer alan Microsoft.SharePoint.dll isimli dll Visual Studio ile yeni bir proje açılıp refere edildikten sonra dll içindeki isim uzayları (NameSpace) kullanılabiliyor olacaktır.

Hiyerarşik yapının doğası gereği herhangi bir Site'a erişmek için ilk olarak SiteColection'a erişilmeli ve ardında da istenilen Site'a erişilmelidir. Bir SiteCollection'a erişmek için ilk olarak SPSite sınıfının bir nesne örneği oluşturulur ve yapılandırıcı metod içerisinde erişilmek istenilen SiteCollection'un URL'i belirtilebilir. Konuyu bir örnekle açıklamak için ilk olarak Visual Studio içerisinden bir Console uygulaması açıp Microsoft.SharePoint.dll isimli dll'i refere edelim ve ardından gerekli isim uzaylarını ekleyelim ardından da bir SiteCollection'a erişip bir kaç bilgisini yazdıracak olan ve ardından da SiteCollection içerisinde yer alan siteleri listeleyecek olan aşağıdaki kodları yazıyor olalım.

/*SPSite MOSS'da yer alan SiteCollection'lara erişmemize
olanak tanıyan Class'dır...*/

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



/*SPSite tipinden oluşturulan bir nesne aracılığı ile ilgili
SiteCollection'ın WebApplication'ınana da erişebiliriz.... Bu özellik
bize SPWebApplication tipinden bir nesne döndürür...*/



Console.WriteLine("Site Collection'ın WebApplication'ı: " +
siteCollection.WebApplication.DisplayName);



/*SiteCollection içerisinde yer alan sitelere erişmek için SPWeb Class'ı
kullanılır...*/

Console.WriteLine("{0} URL'inde yer alan SiteCollection'ın web siteleri:",
siteCollection.Url);



SPWebCollection tumWebler = siteCollection.AllWebs;

foreach (SPWeb web in tumWebler)

{

Console.WriteLine("\tTitle: " +
web.Title);

Console.WriteLine("\tSite logo
URL'i: " + web.SiteLogoUrl);

Console.WriteLine("Site
içerisinde yer alan Listeler: ");

foreach (SPList list in
web.Lists)

{


Console.WriteLine("\t\tListe Adı: " + list.Title);

}

}

Yukarıda yer alan kodlarda ilk olarak SPSite tipinde bir nesne oluşturuluyor ve http://litwareportal isimli SiteCollection'a erişilmek isteniliyor. Oluşturulan nesne üzerinden ilk olarak SiteCollection'u taşıyan WebApplication'a erişiliyor görüleceği üzere bu özellik SPWebApplication tipinden bir nesne döndürüyor ve adı yazılyor. Bir SiteCollection içerisinde yer alan tüm sitelere erişmek için SiteCollection'un özelliklerini taşıyan nesne örneği üzerinden AllWebs özelliği kullanılabilir bu özellik de geriye SPWebCollection tipinde bir nesne döndürecektir. Yukarıdaki kodlarda yer alan ilk foreach ile SPWebCollection tipindeki nesnenin içinde yer alan siteler'in özellikleri listeleniyor ve içerde yer alan ikinci foreach içerisinde de sitelerin içinde yer alan listeleler görüntüleniyor. Uygulama çalıştırıldığında ekran görüntüsü aşağıdaki resimdekine benzer bir hal alacaktır.



Çarşamba, Ekim 15, 2008

SharePoint Development InfoPath Formu Yayınlama Sorunu

Moss 2007 üzerinde yeni bir WorkFlow yazarken, görev oluşturmak için WorkFlow'a veri göndermek amacıyla InfoPath formu tasarladım ve ardından MOSS'a publish etttim. Her şeyin normal görünmesine rağmen garip bir hata ile karşı karşıya kaldım hata mesajı aynen şöyleydi: "The following location is not accessible, because it is in a different site collection:InfoPath formunun ID'si" Hata mesajı üzerinde biraz araştırma yaptım ve hatanın formun ID'sinin belirtilmiş olduğu meta datalardan kaynaklandığı sonucuna ulaştım. SharePoint üzerinde çalışacak olan bir WorkFlow çözümü yazıldığında bu WorkFlow SharePoint'e bir Feature olarak eklenir, feature'larda Feature.xml ve yayınlanacak Fetaure'ın adında başka bir xml dosya daha bulunur ikinci xml dosya genellikle Feature olarak eklenecek olan bileşenin adında olur ve Feature.xml'den ikinci dosya refere edilir. WorkFlow'larda WorkFlow'un ayarları bahsedilen ikinci dosya üzerinden gerçekleştirilir ve doğal olarak WorkFlow'da kullanılacak olan custom içerik tipleri veya formlarda burada belirtilir. İlk ayarlarımda InfoPath formlarımın ID'lerini belirttiğim durum şu şekildeydi:

Yukarıda yer alan kodlarda kullanılcak olan InfoPath formlarının ID'lerinin belirtilmesi yer almaktadır, görüleceği üzere standart bir XML dosyasının yapısına uyacak şekilde yazılmış durumda ancak bu şekilde yazıldığı için whitespace olarak adlandırmış olduğumuz satır araları ve tablar problem yaratıyor ve formlar bulunamıyor yukarıdaki bölümü form ID'leri belirtilirken ID'ler ile XML elamanları aynı satıra gelecek şekilde aşağıdaki hale getirince ise problemsiz bir şekilde tasarlanan formlar WorkFlow içerisinde kullanılabiliyor...

Çok basit bir ayrıntı ama maalesef uygulamanın çalışmasına engel oluyor...