Microsoft Sharepoint 2007 bir büyüğün dediği gibi “immature” bir yazılımdır. Sharepoint ile yazılım geliştirmelerimizde akla hayale sığmayan hatalarla karşılaştık ve gördükki, microsoft bu şekilde dizayn etmiş yazılımı. Ne mi bu hatalar? hemen en önemli hataları listeliyeyim.
1. İş akışlarında sonsuz döngü (Infinite Loop in Workflows)
Bir döküman listesi için iş akışı oluşturdunuz ve döküman eklendiğinde ve değiştirildiğinde iş akışının çalışmasını istediniz. Bunun için de out-of-box, yani ürün ile beraber gelen iş akışını kullandınız. Ayrıca, haklı olarak içerik onayı özelliğini de aktfi ettiniz, yani eğer bir döküman admin tarafından onaylanmamışsa, publish edilmesin istiyorsunuz.
adım adım neler olduğunu görelim:
a. Döküman yüklendi, ve iş akışı başladı.
İçerik onayı: Beklemede.
İş akışı: Sürüyor.
b. Admin dökümanı gördü ve onayladı.
İçerik onayı: Onaylandı.
İş akışı: Tamalandı.
c. Öğe değiştiğinde iş akışını başlat seçeceğini işaretlediğinizden iş akışı tekrar başladı.
İçerik onayı: Beklemede.
İş akışı: Sürüyor.
….
ve yukarıdaki durum A noktasına geri dönüp sonsuza dek sürer. Çünkü Öğe onaylandığında, öğe değiştiği için iş akışı tekrar başlar. Ve iş akışı hiç bitmez.
Peki öğe neden değişiyor?
Öğeye ait olan İçerik Onayı sütunu, iş akışı tamalandığın değiştiğinde, Sharepoint bunu belgenin değiştiği olarak algılıyor.
Peki bu sorununu çözümü yok mu? Cevap : Elbette var.
İlk önce out-of-box iş akışı kullanmaktan vazgeçin. Sharepoint Designer kullanın.
Veya daha sağlam ama uzun yol olan Workflow Foundation kullanın ve Visual Studio ile iş akışı geliştirin.
Service Pack 2′de düzeltileceği söyleniyor Microsoft tarafında ama bakıp göreceğiz.
2. Yeni Klasör’de iş akışı başlamıyor.
Diyelim, bir döküman kütüphanesinde hem içerik onayı kullanıyorsunuz hem de onay iş akışı. Bir belge yüklendiğinde, iş akışının çalıştırılmasını istiyorsunuz.
Fakat, eğer bu kütüphanede bir klasör yaratırsanız ne olacak ? Klasör bir öğe olarak algılanmadığı için iş akışı başlamayacak. Fakat, içerik onayı isteyecek. Haydaa, oldu mu şimdi?
Madem yeni klasörü öğe olarak algılamıyorsun neden içerik onayı istiyorsun? Yönetici ne yapacak peki? tüm listelere girip acaba onaylanmayan klasör var mı diye araştıracak ?
İşte bu notkada yine iş başa düşüyor ve yeni bir EventHandler yazmanız gerekiyor. Bu eventHandler’i custom content type olarak yarattığını Yeni Klasöre attach edeceksiniz ve klasör oluşturlduğunda iş akışını başlatmış oalcaksınız. Bu eventhandler’i da Visual Studio ile geliştirmek zorundasınız. Ama burda yapılmışı var : CodeProject sağolsun
3.Web Part düzeyinde izinler.
Örneğin sharepoint ile oluşturduğunuz siteninizde, birden çok webpart kullanılıyor. Bu webpartlardan biri yüklenirken bir yerden (DB, file, SPList’ten öğe) bir veri okuması gerekiyor.
Fakat bu noktada, bu webpart için bir kullanıcının bu veriyi okuma yetkisi olmasın. İşte burada tam veriyi okuma esnasında erişim reddedildi hatası alıyor ve tüm site bu hataya yönleniyor.
Exception handling’te yapılamıyor burada.
Biz ne beklerdik?
Eğer bu webpart’ta erişim sorunu var ise, sadece bu webpart bir hata mesajı ile gelsin. Tüm sitenin kapanmasına gerek yok.
Ayrıca, sharepointte izinler liste ve site düzeyinde verilebiliyor. Peki ya webpart düzeyinde?
benim iki webpartım var ve birincisi için A grubuna EDİT izni veririken, diğer webpart için A grubuna yalnızca görüntüle hakkı vermek istiyor olabilirim ,ve bu çok mantıklı bir istektir.
Malesef, Sharepoint’te web-part düzeyinde izin bulunmamaktadır.
——
aklıma geldikçe bu tür problemlerden bahsedeceğim. takip edin…
