Etiket arşivi: Microsoft Office Sharepoint Server 2007

Web Partlarda Farkli Veri Turlerinde Toolpart Kullanimi

Sharepoint içerisinde özel içeriklerin görüntülenebilmesi ve kişiselleştirilebilme için webpartları kullandığımızdan daha önce söz etmiştik. Hazırladığımız webpartlarda dinamikliğin sağlanabilmesi için “EditorPart” veya “ToolPart” olarak adlandırabileceğimiz, webpartın önyüzünde görüntülenmeyen ancak düzenleme modundayken görebildiğimiz bir konsolu vardır. Bu konsol içerisinde Appearance, Layout ve Advanced isminde varsayılan tablar her zaman bulunur ancak bizde bu bölüme yeni kontroller ekleyebilir ve bu kontrollerde yapacağımız değişikliğin webpart içerisinde aktif hale gelmesini sağlayabiliriz.

image001

Örneğin Sharepoint’te yer alan bir listedeki verileri çeken ve sizin istediğiniz farklı bir görünümde gösteren bir webpart yazdığımızı varsayalım. Sharepoint’te yer alan 100 tane listeniz varsa ve hepsinde aynı görünüm değişikliğini yapmak istiyorsanız 100 farklı webpart yazmanız gerekir. Oysa ToolPart’ı kullanarak okunacak listeyi parametre olarak geçebiliecek olursa tek bir dinamik webpart yazıp her sayfada webpartın okuyacağı liste özelliğini değiştirip aynı webpartı tekrar tekrar kullanabiliriz.

Toolpart içerisinde pek çok kontrol türünden ASP.Net kontrolleri yaratabilirsiniz. Textbox, dropdownlist, checkbox, radiobutton gibi. Şimdi bir toolpart nesnesini projemize nasıl ekleriz ve yukarıda bahsettiğim türde farklı veri türlerini barındıran toolpart kontrollerini nasıl yaratabiliriz bunu örnekleyelim.

TextBox Türünde

private string _myString;

[Category(“Custom Properties”)]
[DefaultValue(c_MyStringDefault)]
[WebPartStorage(Storage.Personal)]
[FriendlyNameAttribute(“Custom String”)]
[Description(“Type a string value.”)]
[Browsable(true)]
[XmlElement(ElementName = “MyString”)]
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
}
}

Checkbox Türünde

private bool _myBool;

[Category(“Custom Properties”)]
[DefaultValue(c_MyBoolDefault)]
[WebPartStorage(Storage.Personal)]
[FriendlyNameAttribute(“Custom Boolean”)]
[Description(“Select to set value to True.”)]
[Browsable(true)]
[XmlElement(ElementName = “MyBoolean”)]
public bool MyBool
{
get
{
return _myBool;
}
set
{
_myBool = value;
}
}

DropDownList Türünde

public enum myFarmEnum
{
barn = 0,
tractor,
hay,
pitchfork
};

[Category(“Custom Properties”)]
[DefaultValue(myFarmEnum.hay)]
[WebPartStorage(Storage.Personal)]
[FriendlyName(“Custom Enum”)]
[Description(“Select a value from the dropdown list.”)]
[Browsable(true)]
public myFarmEnum MyEnum
{
get
{
return _myEnum;
}
set
{
_myEnum = value;
}
}

DateTime Türünde

private System.DateTime _myDateTime;

[Category(“Custom Properties”)]
[WebPartStorage(Storage.Personal)]
[FriendlyNameAttribute(“Custom Date Time”)]
[Description(“Type a DateTime value.”)]
[Browsable(true)]
[XmlElement(typeof(System.DateTime))]
public System.DateTime MyDateTime
{
get
{
return _myDateTime;
}
set
{
_myDateTime = value;
}
}

Yukarıdaki örnekler ve birkaç farklı örneği projemize eklediğimizde aşağıdaki şekilde bir ekran görüntüsüyle karşılaşacağız webpartımızın editorpartında.

image002

Toolparta girdiğimiz bilgilerin webpartın “Render” metodunda görüntülenebilmesi için ise standart .Net bilgimizden başka bir şeye ihtiyacımız yok.

protected override void RenderWebPart(HtmlTextWriter output)
{
output.Write(“<b>Stored Property Values</b>”);
output.Write(“<br><b>String: </b>” + this.MyString);
output.Write(“<br><b>Boolean: </b>” + this.MyBool.ToString());
output.Write(“<br><b>Int: </b>” + this.MyInt.ToString());
output.Write(“<br><b>Float: </b>” + this.MyFloat.ToString());
output.Write(“<br><b>DateTime: </b>” + this.MyDateTime.ToString());
output.Write(“<br><b>Enum: </b>” + this.MyEnum.ToString());
output.Write(“<br><b>Color Enum: </b>” + this.MyColor.ToString());
}

Evren AYAN
WSS Architecture MVP, ISPA Regional Evangelist

Microsoft Office Sharepoint Designer 2007 Is Akısı Aktiviteleri

Microsoft Office Sharepoint Designer 2007 içerisinde varsayılan olarak 21 farklı iş akışı aktivitesi yer almaktadır. Bu aktiviteler aracılığı ile iş akışı adımlarında kullanıcılara mail gönderilmesi, görev atanması, liste öğelerinin check-in/check-out edilmesi, gruplara görev atanması, iş akışının bekletilmesi, log kayıtlarının tutulması gibi işlemler gerçekleştirilebilir. Aşağıda varsayılan olarak gelen bu aktivitelerin hangi işlemler için kullanıldığı yer almaktadır.

MICROSOFT OFFICE SHAREPOINT DESIGNER 2007 VARSAYILAN AKTİVİTELERİ

Add Time To Date : Tarih tütündeki verilerle çalışmanızı ve bu verileri bir değişken içerisinde tutabilmenizi sağlar. Mevcut bir değişken içerisindeki tarih/saat formatındaki değere zaman eklemenizi ve çıkarmanızı sağlar.

Assign a Form To a Group : Grup üyelerine veya kullanıcılara bir form atamanızı sağlar. Atanacak formun oluşturulması için bir sihirbaz görüntülenir. Sihirbaz aracılığı ile yeni bir görev içerik türü ve içerik türüne bağlı alanlar yaratılır. Kullanıcı seçim listesinden seçilecek kullanıcılara veya gruplara oluşturulan içerik türü bir anket gibi atanır.

Assign a To Do Item : Karşınıza çıkacak bir diyalog kutusu aracılığı ile basit yapılacak işler / görev öğesi yaratılabilmesine ve kullanıcılara atanmasına yardımcı olur.

Build Dynamic String : Adım adım bir text değişken yaratılmasına yardımcı olur. Açılan editör ekranı aracılığı ile look-up alanlar text değişkenin içerisine yerleştirilir. Text değişkenler arasında birleştirme işlemi “+” (artı) operatörü kullanılarak gerçekleştirilir.

Check-In Item : Check-Out konumdaki öğenin tekrar kullanımında verilmesine olanak tanır. Bu işlem gerçekleşirken yeni versiyon oluşturma da gerçekleşebileceğinden Check-In işlemi için yorum yazılmasını ister.

Check-Out Item : Check-In konumdaki öğrenin kullanıma alınmasına olanak tanır. Bu işlem sonrası öğe üzerinde versiyonlama aktif ise minör versiyonlar oluşturulur. (0.1, 0.2 gibi) Düzenleme sonrası öğenin geri iade edilmesi (Check-In yapılması) gerekir.

Collect Data From a User : Bir sihirbaz aracılığı ile kullanıcı için görev atanmasına yardımcı olur. Atanacak formun oluşturulması için bir sihirbaz görüntülenir. Sihirbaz aracılığı ile yeni bir görev içerik türü ve içerik türüne bağlı alanlar yaratılır. Kullanıcı seçim listesinden seçilecek kullanıcıya oluşturulan içerik türünden bir görev atanır. İşlem sonrası oluşturulan görevin ID bilgisi output değişken olarak iş akışı içerisinde kullanılabilecek şekilde dışarı verilir.

Delete Item : Herhangi bir liste öğesinin iş akışı esnasında silinmesi için kullanılır. Özellikle temp olarak yaratılmış olan öğelerin başka bir listede gerçek kayıt olarak yaratılması durumunda iş akışında temp kayıt ile olan işlem tamamlandığında bu öğenin silinmesi için kullanılır.

Discard Check-Out : Check-Out edilmiş bir öğe üzerindeki kullanıma almanın kaldırılması amacıyla kullanılır. Bu işlem sonrasında eğer öğede bir güncelleme yapıldıysa bu güncellemede geri alınır ve yaratılan minör versiyon silinir.

Do Calculation : İki alan arasında temel hesaplama işlemlerinin yapılabilmesine olanak tanır (toplama, çıkarma, çarpma, bölme, mod alma gibi).

Log To History List : İş akışı esnasında look-up alan değerlerinin veya manuel olarak yazılacak açıklamaların iş akışı geçmişine kaydedilmesini sağlar. İş akışının sistemsel akışını izlemek ve nerede kaldığını öğrenmek adına kullanılabilecek manuel tek loglama aktivitesidir.

Pause for Duration : İş akışının gün, saat, dakika gibi zamansal bir değer boyunca beklemesini sağlar. İş akışı bu süre boyunca sadece bekleme görevini üstlenir ve sürenin sonunda kaldığı yerden devam eder.

Pause Until Date : İş akışının spesifik bir tarihe kadar beklemesini sağlar. Belirtilen tarih geldiğinde iş akışı kaldığı yerden devam eder.

Send an Email : İş akışı esnasında kullanıcılara ve bilgi sahibi olması gereken kişilere HTML tabanlı email gönderme işlemi yapar. Açılan editör HTML tabanlıdır ancak herhangi bir tasarımsal WYSWYG editör kullanıcının karşısına getirilmeyecek, HTML’in manuel olarak yazılması istenecektir. İstenirse editör içerisinde yer alan look-up butonu aracılığı ile iş akışı değişkenleri, iş akışının çalıştığı öğeye ilişkin alan değerleri veya farklı bir listedeki alan değerleri mailin içerisine eklenebilir.

Set Content Approval Status : İlgili öğe üzerinde içerik onayı çalışıyorsa içeriğin onaylanmasını sağlar. (Örneğin onaylamadan yayınlanmasını istemediğiniz dokümanlar). Approval esnasında hangi yorumun yazılacağı belirtilebilir. Ancak bu yorum bu iş akışının tüm instancelarında aynı text ile yer alacağından yorum alanının bir look-up alandan alınması daha yararlıdır.

Set Field In Current Item : İş akışının üzerinde çalıştığı öğe içinde bulunan veya farklı bir listede yer alan alana değer ataması için kullanılır. Değer ataması esnasında text türde manuel veriler kabul edilebileceği gibi look-up alanlardan veri girişi de kabul edilir. Unutulmaması gereken nokta eğer farklı bir listedeki öğenin alanınına değer ataması yapılacaksa ilgili sihirbaz SQL sorgularındaki “WHERE” anahtarına benzeyen bir bölüm açacaktır. Bu alana iş akışının üzerinde çalıştırğı öğe ile değer ataması yapılmak istenen liste arasındaki ortak alanlar belirtilmelidir. Aksi halde değer atama işlemi diğer listedeki tüm öğeler için geçerli olacaktır.

Set Time Portion of Date/Time Field : Add Time To Date aktivitesi gibi çalışır. Tarih/Saat türündeki öğe alanlarına dakika, saat gibi zaman dilimlerinin eklenmesine olanak tanır.

Set Workflow Variable : İş akışı esnasında çeşitli aktivitelerin yaratmış olduğu veya sizin tarafınızdan yaratılan değişkenlere değer ataması yapmaya olanak tanır. Değer ataması manuel olabileceği gibi bu işlem esnasında look-up alanlardan da yararlanılabilir.

Stop Workflow : İş akışının durdurulmasını sağlar. Durdurma işlemi esnasında sebep belirten bir yorum girilmesi zorunludur. Yorum alanı manuel girilebileceği gibi look-up bir alandan da yararlanılabilir.

Update List Item : Herhangi bir liste öğesinin iş akışı içerisinden güncellenmesini sağlar. Liste öğesi iş akışının üzerinde çalışmakta olduğu öğe olabileceği gibi farklı bir listedeki alanda güncellenebilir. Farklı bir listedeki alanın güncellenecek olması durumunda iş akışının üzerinde çalıştığı liste ile bu liste arasında ortak bir alanın bulunması ve SQL’deki “WHERE” koşuluna benzeyen bölümde bu ortak alanlara ilişkin bağın belirtilmesi gerekir.

Wait for Field Change in Current Item : İş akışını belirtilen alandaki değişim gerçekleşene kadar beklemeye alır. Belirtilen alandaki değişim gerçekleştiğinde iş akışı kaldığı yerden iş akışı adımlarını gerçekleştirmeye devam eder. Bu aktivite Sharepoint Designer’ın sequential formattaki akış modelini kısmen state Machine Workflow’a çevirir. Ve böylelikle forward-only olan yapının dinamik koşullara göre bekletilebilmesine olanak tanır.

Tüm bu Microsoft Office Sharepoint Designer 2007 aktivitelerine ek olarak internetten edinilebilecek veya gerekli extensionları yüklemenin ardından Visual Studio 2005 ve Visual Studio 2008 aracılığı ile kendi yaratabileceğiniz Sharepoint Designer aktivitelerini de mevcut sisteminizde kullanabilirsiniz.

Sharepoint Designer 2007 üzerinde kullanılabilecek son derece kullanışlı pek çok aktiviteye https://www.codeplex.com adresinden veya yapımcı firmaların web adreslerinden ulaşılabilir. Ücretli yada ücretsiz olabilecek bu aktivitelerin size iletilen kurulum materyallerine göre farklı yükleme alternatifleri olacaktır. Aşağıda bu yöntemlerin adımlarından bahsedilmektedir.

ÖZEL AKTİVİTENİN MANUEL OLARAK YÜKLENMESİ

Kendinizin yazdığınız veya internetten kaynak kodunu (veya assembly, actions dosyası gibi çıktılarını) indirdiğiniz bir aktivitenin Microsoft Office Sharepoint Designer 2007 aracılığı ile kullanılabilmesi için öncelikle bazı manuel adımların atılması gerekir.

Elde edilen kaynakta aşağıdaki materyallerin eksiksiz olarak bulunması veya yaratılması gerekir.

  • Tasarlanan iş akışı aktivitesinin assemblysi (Stronge name bir assembly olması gerekir GAC deploymentı için)
  • İş akışı aktivitesinin Sharepoint Designer’a tanımlanabilmesi için gerekli olan “*.ACTIONS” dosyası.

Tüm materyallerin hazır olmasının ardından aşağıdaki iş adımları ile ilgili aktivite kullanıma hazır hale getirilebilir.

  1. İş akışına ait assemblynin GAC’a deploy edilmesi. Bu işlem için ilgili dll’in C:\WINDOWS\Assembly klasörüne sürüklenip bırakılması veya GACUTIL aracı kullanılarak GAC’a deploy edilmesi gerekmektedir.
  2. Aktiviteye ilişkin Sharepoint tanımlamalarının yapılabilmesi adına aktivitenin kullanılacağı web uygulamasının C:\Inetpub\wwwroot\wss\Virtual Directories dizinindeki web.config dosyasına gidilmeli ve <SafeContols></SafeControls> taglarının arasına asseblye ilişkin safe control tanımlanmasının yapılması gerekir. Bu işlem için SafeControls tagındaki herhangi bir satır kopyalanır ve içeririsnde yer alan AssemblyName, Culture, Version, NameSpace, PublicKeyToken ifadeleri sizin assemblynizinkiyle değiştirilir.

    Kendi assemblynize ilişkin bu bilgileri elde etmek için bir öndeki adımda deploy ettiğinizi C:\WINDOWS\Assembly adresinde dll’inizi bulun ve uzerinde sağ tıklayıp “Özellikler” alanına gelin. Açılan pencere az önce saydığımız tüm bilgileri size iletiyor olacaktır.

  3. Aynı web.config dosyasında yer alan <System.Workflow.ComponentModel.WorkflowCompiler> tagının içerisine yine assemblynize ilişkin bilgilerin girilmesi. Bu işlem için SafeControls eklemesinde olduğu gibi içerideki satırlardan birini kopyalayabilir ve değişmesi gereken AssemblyName, PublicKeyToken, Version, Culture ifadelerini değiştirebilirsiniz.
  4. web.config deki bu işlemlerin ardından dosyayı kaydedin ve kapatın.
  5. Bir sonraki adımda Sharepoint Designer’ın tanımladığınız iş akış aktivitesine dair bilgileri okuyabilmesi ve aktivite listesinde buna ilişkin kayıtları size gösterebilmesi için gerekli tanımlamaları yapıyoruz. Bu işlem için C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\Workflow dizinine kadar gidin. Burada “WSS.ACTIONS” isimli bir dosya göreceksiniz. Eğer iş akış aktivitesi materyalleriniz arasında *.ACTIONS uzantılı bir dosya varsa onu buraya kopyalayın. Eğer yoksa sizin yaratmanız gerekecektir. Bu durumda mevcut WSS.ACTIONS dosyasını bir XML editörü ile açın ve içerisinden işinize en çok yarayacak(Sizin aktivitenize en fazla benzeyen) bir iş akışı aktivitesinin tanımlama textini kopyalayın. Yeni oluşturduğunuz bir text editöründe bu dosya içerisinde sizin aktivitenize göre gerekli alan adı ve tanımlama değişikliklerini yapın ve kaydedin.

    Şayet Türkçe bir sisteminiz varsa bu işlemin aynısını C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1055\Workflow klasöründe de yapın.

  6. IIS’i restart edin
  7. Microsoft Office Sharepoint Designer 2007’i açın ve yeni bir iş akışı oluturup Actions bölümünde tanımlamasını yaptığınız aktiviteyi gördüğünüzü doğrulayın.

ÖZEL AKTİVİTELERİN SETUP İLE YÜKLENMESİ

Şayet kullanmayı planladığınız ve ihtiyaç duyduğunuz özel aktivite daha önce bir başkası tarafından yazılmışsa ve içeriğe güveniyor, kullanmak istiyorsanız bunu internetten indirebilirsiniz. Son dönemde karşımıza çıkan pek çok aktivite setup dosyaları veya setup.bat batchleri ile beraber gelmektedir. Bu durumda yapacağınız yükleme çok daha kolay olacaktır. Aşağıda bu işlemin adımları anlatılmıştır.

  1. İnternetten indirdiğiniz setup dosyasını Sharepoint’in yüklü olduğu sunucu üzerinde çalıştırın.
  2. Setup uygulaması öncelikle sistem doğrulaması yapacaktır. (Kimi eklentiler SP1 istemekte ve bunun gibi yüklemeler ile sisteminizin uygun versiyonda olup olmadığını kontrol etmektedir.)
  3. Şayet bir önceki adım başarılı geçtiyse “İleri” butonları aracılığı ile kurulumu tamamlayın.

Bu işlem son derece hızlı gerçekleşecektir. Sonrasında IIS restart gibi işlemlerde setup uygulaması tarafından yapılmış olacağından doğrudan Sharepoint Designer’deki kontrol aşamalarına geçebilirsiniz. Şayet ilgili aktivite çalışmayacak olursa bir önceki başlıkta anlattığımız “Manuel Yükleme” adımlarının tamamını sırayla ilgili dosya sisteminde kontrol edin ve eksik kalan adımlar varsa yükleme sonrası bunları siz tamamlayın. (Örneğin sisteminiz Türkçe’dir ve ilgili setup sadece C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\Workflow klasörüne ACTIONS dosyasını kopyalamıştır. Bu durumda 1055 klasörüne sizin kopyalamanız gerekecektir.

Evren AYAN
WSS Architecture MVP, ISPA Regional Evangelist

Microsoft Office Sharepoint Designer 2007 Is Akıs Genel Ozellikleri

Microsoft Office Sharepoint Designer 2007, Microsoft Office Sharepoint Server 2007 ve Windows Sharepoint Services 3.0 üzerinde pek çok özelleştirme işleminin yapılabilmesi için tek araç konumundadır.

Microsoft’un Office 2007 ürününde Frontpage’e yer vermemesi ve Frontpage’in üstlendiği görevlerin tamamına ek olarak MOSS 2007 ve WSS 3.0 üzerinde özelleştirme çalışmaları için de bu aracı adreslemesi bunda temel sebeptir.

Teknik anlamda Sharepoint Designer’ın tek ürün olma sebebi ise Sharepoint sistemlerinde sayfa, stil dosyası, imajlar, içerikler gibi tüm yapıların veritabanında binary formatta tutulması ve bu binary dosyalar üzerinde güncelleme yeteneğinin sadece bu üründe yer alması gösterilebilir.

Sharepoint Designer aracılığı ile Sharepoint sistemleri üzerinde tasarım özelleştirmesinin yapılabilmesinin yanı sıra bazı etkin kullanıcı ve yönetici eylemleri de bu ürün aracılığı ile yapılabilmektedir. Örneğin doküman kütüphanesi, liste, anket gibi Sharepoint öğelerinin yaratılabilmesi, sitelerin yedeğinin alınabilmesi, yeni sayfa ve layoutların yaratılabilmesi bu eylemlere örnek olarak gösterilebilir. Yine Sharepoint Designer aracılığı ile yapılabilecek eylemlerden bir tanesi de iş akışlarının hazırlanabilmesi ve bu iş akışlarının mevcut sistem üzerindeki liste ve kütüphanelere deploy edilebilmesidir.

SHAREPOINT DESIGNER İŞ AKIŞI YETENEKLERİ

Microsoft Office Sharepoint Designer aracılığı ile yaratılabilecek iş akışları in-browser iş akışlarına göre bazı temel farklılıklar ve artılar gösterir. İki iş akışı arasındaki temel farklar aşağıda listelenmiştir.

  • In-browser iş akışlarında herhangi bir iş akışı koşulu belirtilemezken Sharepoint Designer iş akışlarında kütüphane veya listedeki alanlara ilişkin koşullar tanımlanabilir. (Örneğin masraf formunun 500 YTL’den büyük bir tutara sahio olması durumu gibi)
  • In-browser iş akışlarında görev formu sabit iken (onay/red, yorum gibi alanlar) Sharepoint Designer iş akışlarında özelleştirilmiş görev formları aracılığı ile kullanıcıdan daha fazla bilgi toplanabilir.
  • In-browser iş akışlarında organizasyon hiyerarşisi gibi iş akışlarında dinamikliği sağlayacak yapılar sunmak son derece zorken Sharepoint Designer iş akışlarında bu tip bilgiler dışarıdaki veya içerideki bir kaynaktan okunarak iş akışına dahil edilebilir.
  • In-browser iş akışlarında iş akışı esnasında yapılabilecekler kısıtlıyken Sharepoint Designer iş akışlarında 21 adet temel ve eklenebilecek özel aktiviteler ile pek çok sayıda özel aktivitenin gerçekleşmesi sağlanabilir. (Örneğin liste öğesinin güncellenmesi, log kaydının girilmesi, iş akışının bekletilebilmesi gibi)

Yukarıda sayılan farklar sebebiyle Sharepoint ortamında iş akışı hazırlanması konusunda en çok tercih edilebilecek yöntemlerden bir tanesi Sharepoint Designer iş akışlarıdır. Bu türün daha da gelişmişi olarak adlandırabileceğimiz bir diğer yöntem ise Windows Workflow Foundation kullanarak iş akışları geliştirmektir ki .Net Framework 3.0 / 3.5 bilgisi gerektirmesi ve sonuç itibariyle kod yazıyor olmanız sebebiyle development süresini uzatacak ancak diğer yandan çok daha esnek yöntemleri kullanabileceğiniz bir iş akışı geliştirme ortamıdır.

Microsoft Office Sharepoint Designer 2007 kolay bir arayüzde tek bir satır kod yazmaya gerek kalmaksızın iş akışlarını oluşturmanıza ve deploy etmenize imkan verecek şekilde tasarlanmıştır. Özel aktivitelerin yazılabiliyor ve eklenebiliyor olması aracın varsayılan özelliklerinin dışında da yeteneklere kavuşabilmesini sağlayacaktır.

SHAREPOINT DESIGNER ILE İŞ AKIŞI GELİŞTİRMEK

Microsoft Office Sharepoint Designer 2007 ile iş akışı geliştirmek için öncelikle iş akışını hangi kütüphane veya liste üzerinde çalıştırmak istediğinizi belirlemeniz gerekir. Çünkü Sharepoint Designer’da iş akışı, tasarım özelleştirmesi gibi işlemler site bazında yapılır. İlgili kütüphane veya listeye karar verildikten File>New>Workflow seçeneği aracılığı ile yeni iş akışını yaratacağınız sihirbaz karşınıza getirilir.

image001

Bu ekranda iş akışına o site için tekil bir isim vermeli ve iş akışının hangi liste veya kütüphane üzerinde çalışacağını belirtmelisiniz. İş akışı sisteme deploy edildikten sonra bu iki alandaki değerler değiştirilemeyecektir.

Bu temel bilgileri verdikten sonra iş akışının başlama şeklini seçmeniz gerekir. Üç farklı şekilde başlatılabilir Sharepoint Designer iş akışları:

  1. Manuel : Bu durumda kullanıcı liste veya kütüphanede ilgili öğenin üzerindeki menüyü açar ve “Workflows” butonuna tıkladığı zaman birazdan tasarlayacağınıziş akışını listede görür. İsterse o anda sadece ilgili öğe için manuel bir iş akışı başlatabilir.
  2. “Created” Anında : Bu durumda iş akışı seçtiğiniz kütüphane veya listeye atanır ve deploy anından itibaren o liste veya kütüphanede yaratılacak tüm öğeler için otomatik olarak çalışır.
  3. “Modified” Anında : Bu durumda iş akışı seçtiğiniz kütüphane veya listeye atananır ve deploy anından itibaren o liste veya kütüphanede değiştirilecek tüm öğeler için otomatik olarak başlar.

Aynı ekranda üç adet konfigürasyon butonu da görmekteyiz. Bunlar aşağıda belirtilen işlemler için kullanılmaktadır.

  1. Check Workflow : İş akışı içerisinde herhangi bir hata yapılıp yapılmadığını denetler. İş akışı sihirbazının devamında da sürekli olarak görünür. Bir iş akışını deploy etmeden önce bu butona tıklayarak çalışmayı engelleyici bir hata yapıp yapmadığınızı görebilirsiniz.
  2. Initiation : İş akışının initiation yani başlangıç aşamasında çalışacak formu tasarlamanızı sağlar. Özellikle bir iş akışı manuel olarak kullanıcı tarafından başlatılacaksa initiation formunu başlangıç anında kullanıcıdan alması gereken bilgilere göre konfigüre edebilirisiniz. Butona tıklamanızın ardından bir sihirbaz başlatılacak ve iş akışı başlatılırken kullanıcıya gösterilip veri toplanacak formun alanlarını oluşturmanız sağlanacaktır.
  3. Variables : İş akışı değişkenlerini yaratmanıza olanak tanır. İş akışının devamı boyunca kullanıcıdan topladığınız bilgileri veya iş akışı içerisinde çalıştırdığınız aktiviterlerden dönen sonuçları burada yaratacağınız değişken listesinde depolayabilirsiniz.

Tüm bu ana konfigürasyonları yaptıktan sonra “Next” butonuna tıklayarak iş akışında tanımlayacağınız koşulları ve bu koşullara karşılık iş akışının çalıştıracağı aktiviteleri tasarlayabilirsiniz.

image002

Bu bölümde ekranın sağ köşesinde gördüğünüz “Workflow Steps” kısmı iş akışındaki mevcut adımlarınızı görüntüler ve yeni adımlar yaratabilmenizi sağlar. Böylelikle iş akışı esnasında karmaşık bir tasarım yerine adım adım ilerlemeleri tasarlayabilmenize olanak tanır.

Ekranın sol bölümü ise seçili adımda iş akışının yapması gereken koşul kontrolleri ve bu koşullara ilişkin çalıştıracağı aktiviteleri gösterir. Burada “Conditions” alanını kullanarak iş akışının üzerinde çalıştığı liste veya kütüphanede bulunan alanların değerlerini karşılaştırabilip üzerinde koşul çalıştırma işlemi yapabileceğiniz gibi farklı kütüphane ve listedeki alanlar için de bu işlemi gerçekleştirebilirsiniz.

Aynı bölümde yer alan “Actions” butonu aracılığı ile ise üstte seçmiş olduğunuz koşulun gerçeklemesi durumunda iş akışının alması gereken aksiyonları sıralayabilirsiniz. Örneğin koşul kısmında listede yer alan “Tutar” alanının “500” değerinden büyük yada küçük olması koşulunu sorgulayabilir ve bu koşul doğru ise o anki öğe için alttaki Actions bölümünde bir kullanıcıya görev oluşturması, aynı kullanıcıya email ile görevi bildirmesi, iş akışı loglarına görevin yaratıldığına dair bir mesaj yazmasını ve görevin atandığı kullanıcının bir aksiyonu yerine getirmesini beklemesini söyleyebilirsiniz. Gerekli aksiyon yerine geldiğinde siz ikinci iş akışı adımında yeni bir koşul ve yeni aksiyonları tanımlamış olabilirsiniz.

Bu bölümde seçilecek aksiyonlar 21 varsayılan ve bunun üzerinde sizin ekleyeceğiniz özel aksiyonlar olabilir. Dolayısıyla Sharepoint Designer’ın varsayılanları ile sınırlı kalmayıp edineceğiniz veya yazacağınız özel aksiyonlar ile iş akışının kendi sistemleriniz ile entegre olmasını sağlayabilirsiniz. Örneğin yazacağınız özel bir aktivite aracılığı ile iş akışına konu olan öğaye ait bilgileri bir veritabanı sistemine yazdırabilirsiniz.

ŞAYET GÖREV ATANAN BİR İŞ AKIŞINIZ VAR İSE

Sharepoint Designer aracılığı ile yaratılan iş akışları her zaman görev atama yönünde ilerlemez. Bazen bir öğenin yaratılmasını takiben o öğe üzerindeki yetkileri değiştirmek veya o öğenin yaratıldığından bazı kullanıcıları haberdar etmek de bir iş akışı olarak adlandırılabilir.

Eğer hazırladığınız iş akışında bir kullanıcıya görev ataması yaptıysanız ve Sharepoint Designer tarafında ikinci bir iş akışı yaratmanızı gerektirecektir. Zira ilk yarattığınız iş akışı normal bir liste veya kütüphane üzerinde çalışırken bu iş akışı içerisinden bir kullanıcıya görev oluşturduğunuzda görev öğesi bir görev listesinde yaratılacaktır. Yani yarattığınız iş akışının kontrolünde olmayan bir yerde. Bu durumda Görev listesi üzerinde çalışacak ikinci bir iş akışı yaratabilir ve yaratılan görevin durumuna göre ilk yaratılan iş akışı ile entegre olmasını sağlayabilirisiniz.

Evren AYAN
WSS Architecture MVP, ISPA Regional Evangelist

Temel Web Part Gelistirme Ve Deploy Etme

 

ASP.Net 2.0’ın hayatımıza girmesinin ardından .Net Framework içerisinde pek çok yeni kontrol grubu ve alt frameworkler ile çalışmaya başladık. Membership, Webpart gibi alt frameworkler işimizi son derece kolaylaştıran ve development süremizi kısaltan bir yapıyı hizmetimize sunmaya başladı. Aynı dönemde ortaya çıkan pek çok internet sitesinde bu alt frameworklerin kullanım örneklerini gördük ve teşvik edildik. Örneğin Live ürün ailesi içerisinde yer alan “Spaces” bize webpart konusunda örnek sunan ilk sitelerdendi. Sitenin kavuştuğu yeni yapı ile kullanabileceğimiz bölümler webpart olarak geliştirilmiş ve istediğimizi sayfamızda gösterebilir, istediğimizi engelleyebilir hale geldik. Webpartların yerlerini değiştirerek daha kişiselleştirilmiş siteler yaratabildik.

Aslında webpartın ortaya çıkışında temel nedenlerden biri de buydu. Yani sadece site sahibine değil kullanıcıya da sitenin tasarımı ve içeriği konusunda tercihte bulunma hakkı vermek. Bu sayede ben bir portala girdiğimde ana sayfada IMKB Endeksi, Döviz Kuru gibi beni daha çok ilgilendiren bölümleri görmek isterken bir başka kullanıcı aynı bölümlerde Flaş Haberler ve Oyunları görmeyi tercih edebildi.

Microsoft Office Sharepoint Server 2007 ve Windows Sharepoint Services 3.0 altyapısını kullanan sitelerde de hem developmentı parçalar halinde gerçekleştirebilmeyi sağlamak hemde sitelerin kişiselleştirilebilmesine olanak tanımak adına webpart frameworkden yoğun bir şekilde faydalanılmış durumda. Alttaki ekran görüntüsünde Sharepoint ile beraber gelen standart bir “Team Site” ın düzenleme modunu görüyorsunuz. Resimden de göreceğiniz üzere site içerisinde gördüğümüz herşey kutucuklara ayrılmış durumda ve ister kişisel tercihlerle ister yöneticilerin uygun gördükleri şekilde bu kutucukların görünümünde ve yerlerinde değişiklik yapma şansımız var.

 

image001

 

Burada gördüğümüz “Left” ve “Right” ifadeleri WebPartZone olarak isimlendirdiğimiz ASP.Net bileşenlerine karşılık geliyor. WebPartZone kontrolleri birer konteynır görevi üstlenip içerisinde webpartları barındırabiliyor. Dolayısıyla o kadar da özgür olmadığımız anlıyoruz. WebPartZone’lar dışında bir yerde webpartlarımızı görüntülememiz mümkün değil.

Hedefimizi biraz daha Sharepoint odaklı hale getirirsek akla ilk olarak şu soru gelecektir: “Neden Webpart?”

Çünkü webpart hem iç hemde dış verileri görüntüleyebilmek ve bunları modül halinde yazabilmek için elimizdeki men kullanışlı tekniği bize sunar ve Sharepoint sistemlerinde özelleştirme genellikle webpartlar aracılığı ile yapılır. Bazen site içerisinde yarattığınız bir listenin farklı bir şekilde görüntülenebilmesi için webpart yazarsınız bazense tamamen dışarıdaki bir veritabanından bilgileri okumak ve Sharepoint sisteminiz içerisinde göstermek için. Sharepoint’te temel amaç sunulabilen tüm kurumsal bilginin birlikte çalışabilirlik adına tek adresten sunulması olduğundan örneğin bir CRM uygulamanızdaki müşterileriniz için veri girişini hala uygulamanın kendisinden yaparken verilerin sorgulanması işini Sharepoint’e bırakabilirsiniz. Bu sayede CRM uygulamasını sadece veri sorgulamak için kullanacak kullanıcılarınıza CRM clientını kurmaktan kurtulabilir ve her türlü bilgiye tek ekrandan ulaşma prensibini yerine getirebilirsiniz.

Burada konu alnınacak şey webpartın ne olduğu ve temel bir “Merhaba Dünya” webpartının nasıl geliştirilip deploy edileceği konusu. Ancak konu bununla sınırlı değil elbette. Daha ileri aşamalarda daha özelleştirilebilir webpartların, birbirine bağlı webpartlarında örneklerini bulabileceksiniz.

Sharepoint sitenizde yeni bir webpart geliştirmek için öncelikle Visual Studio 2005 veya 2008’de yeni bir “Class Library” projesi yaratıyoruz. Microsoft’un hazırlamış olduğu ve çok daha hızlı webpart geliştirmenizi sağlayabilecek VS 2005 ve 2008 proje templateleri de bulunmakta, isterseniz bu templateleri de kullanabilirsiniz geliştirirken. Projemizi yaratalım.

 

 

image002

 

 

Projenizi ekledikten sonra yapmanız gereken bazı temel referans eklemeleri, using satırı eklemeleri ve WebPart sınıfından kalıtım sağlama eklentilerini yapmamız gerekiyor.Sırasıyla :

  • References bölümünde yeni bir referans olarak “System.Web” kütüphanesini ekleyin
  • using elemanı olrak “using System.Web.UI.WebControls.WebParts” namespaceini ekleyin
  • Sınıfınızın “WebPart” sınıfından referans almasını sağlayın. “TemelWP:WebPart” şeklinde.

 

image003

 

Not : WebPart sınfından referans almak için “System.Web” yerine “Microsoft.Sharepoint” kütüphanesini de tercih edebilirsiniz. Aynı WebPart sınıfını her ikisi de barındırmaktadır.

Şimdi kalıtımı sağladığımız “WebPart” sınıfındaki “Render” metodunu override edeceğiz, yani yeniden kodlayacağız. “Render” metodu webpartın içeriğinin oluşturulduğu metoddur ve string bir ifadeyle HTML olarak her türlü içeriği gönderebilirsiniz. Bu sayede ekrana bir şeyler yazdıralım.

 

image004

 

 

Webpartımız kod itibariyle hazır. Şimdi bunun Sharepoint sistemimiz tarafından kullanılabilir hale gelmesi için deploy edilmesi gerekiyor. Deploy ederken webpart projemizin oluşturduğu “dll” e ihtiyaç duyacağız. Ancak eğer GAC’a deployment yapacaksanız oluşacak assemblyi “sign” etmeniz gerekiyor. Bu işlem için Solution Explorer’da proje üzerinde sağ tıklayıp “Özellikler” penceresine ve burada da “Signing” tabına geliyoruz. “Sign the assembly” checkboxını iaretleyip alttaki dropdownmenüden “New” seçeneğini işaretliyoruz. Karşınıza assemblyniz için oluşturacağınız “snk” uzantılı dosyanın yaratılacağı basit form geldi. Herhangi bir isim verin ve “Protect my key file with a password” checkboxını kaldırın.

 

image005

 

Şimdi projenizi build edebilir ve deployment adımlarına geçebilirsiniz.

 

DEPLOYMENT ADIMLARI

  1. Elde ettiğiniz TemelWebPart.dll’i C:\Windows\assembly dizinine deploy edin. Bu işlem için gacutil’i de kullanabilirsiniz. Eğer manuel deploy edecekseniz ilgili klasör copy/paste i desteklemediğinden sürükle/bırak ile işlemi gerçekleştirebilirsiniz.
  2. Sharepoint’in hazırladığınız webpartı güvenli bulabilmesi için uygulamanın web.config dosyasında yer alan <SafeControls> bölümüne gitmeli ve webpartınızı tanıtmalısınız. Bu işlem için C:\Inetpub\wwwroot\wss\VirtualDirectories\<UygulamanizinAdi> klasöründe yer alan web.config dosyasını açın, <SafeControls> tagını bulun ve içerisine şu satırı kopyalayın. (Tabi kendi Public Key Toke’ınızla. Public Key Token’a dll’i deploy ettiğiniz GAC’dan ulaşabilirsiniz.)<SafeControl Assembly=”TemelWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=11b24de2dc63fc73″ Namespace=”TemelWebPart” TypeName=”*” Safe=”True” />

  3. IIS’i restart edin

4.     

Web uygulamanızın anasayfasını açın.(Sitenin değil, site collectionın) Site Actions>Site Settings>Modify All Site Settings bölümünde yer alan “Galleries” bölümünde “Web Parts” ı tıklayın. Yazdığınız webpartı burada göremeyeceksiniz, çünkü henüz populate etmedik. Populate edebilmek için bu ekranda “New” butonuna tıklayın. Karşınıza tüm webpartların bulunduğu bir liste gelecek. Buradan kendi webpartınızı bulun, işaretleyin ve üst bölümden “Populate” butonuna tıklayın.

image006

 

5.     

Şimdi webpartı kullanmak istediğiniz siteyi Site Actions>Edit menüsü aracılığı ile düzenleme modunda açın. Sayfada yer alan WebPartZone’ların üstünde yer alan “Add a Web Part” butonunu tıklayın ve karşınıza gelecek listeden webpartınızı seçip sayfaya ekleyin.

image007

 

6.                 

Ve sonuç …

image008

 

Evren AYAN
WSS Architecture MVP, ISPA Regional Evangelist

Workflow Service Manager (Spd Is Akıs Aktivitesi) Kullanimi

 

Microsoft Office Sharepoint Designer 2007 için https://www.codeplex.com adresi üzerinde ve üretici firmaların kendi siteleri üzerinde host etmekte oldukları pek çok özel aktivite bulunmaktadır. Bunlardan bir tanesi olan SPD Workflow Service Manager Microsoft Office Sharepoint Designer 2007 iş akışları içerisinden kendi yazdığınız bir assemblynin metodlarını kullanma imkânı yaratır.

 

SPD Workflow Service Manager‘ın assembly çağırma özelliği sayesinde Microsoft Office Sharepoint Designer 2007‘nin iş akışları içerisinden kod çalıştıramama yetersizliğini yenebilir ve örneğin iş akışlarınız içerisinden organizasyon hiyerarşisini getiren, iş akışınızın içerisinden iş akışı kurallarını oluşturmak için kullanacağınız limit bilgilerini dinamik olarak ekrana getirebilir veya iş akışları içerisinde yönetmeniz zor olan hataları kendi yazdığınız hata loglama classları veya event log aracılığı ile loglatabilirsiniz.

 

WORKFLOW SERVICE MANAGER KULLANIMI

Workflow Service Manager’ın sisteminize tanımlanmasını takiben artık Sharepoint Designer ile oluşturacağınız iş akışlarında “Call Service” isimli bir özel aktivitede karşınıza gelmeye başlayacaktır.

 

image001

 

Aktiviteyi kullanmak için listeden seçilir. İş akışı tasarım ekranında aşağıdaki görüntü oluşacaktır. Ekranda mavi renkli ve siyah renkli altı çizili textler oluşacaktır. Mavi renkli olan bölümler atamanızın zorunlu olduğu parametreleri barındırır. Siyah ve altı çizili olan bölümler ise opsiyoneldir, dolayısıyla parametre atamanız gerekmez.

 

image002

 

Full Qualified Method Name : Bu bölüme kullanmak istediğiniz ve daha önce Visual Studio 200X ile oluşturmuş olduğunuz dll dosyasındaki Full Qualified Method Name bilgisi gelecektir. Sözkonusu dll’in iş akışına başlamadan önce Sharepoint uygulamanızın virtual directory si olan C:\Inetpub\wwwroot\wss\ Virtual Directories\wss\<uygulama_adi>\bin klasörüne kopyalanmış olması gerekir. Kopyalanan dll içerisindeki NamespaceAdi.ClassAdi.MethodAdi bilgisi Full Qualified method Name parametresini oluşturmaktadır.

 

Parameter List Delimited by Pipe(|) : Az önce tanımladığınız methodun alacağı parametreler arada noktalı virgül (;) veya pipe (|) karakterlerinden biri olacak şekilde yerleştirilir.

 

Metodun çalıştırılması sonrası dönecek output değeri “variable” değişkenine kaydedilecek ve iş akışı içerisinde tekrar kullanılabilir durumda olacaktır.

 

image003

 

Parametre atamalarını bu şekilde yapıp iş akışını deploy ettiğinizde artık bu iş akışını deploy etmiş olduğunuz liste veya kütüphanede herhangi bir item yaratıldığı anda iş akışınız başlayacak ve çağırdığınız assemblye göndermiş olduğunuz parametreleri gönderecektir. İşin buradan sonraki bölümünü SPD Workflow Service Manager gerçekleştirir. Sizin için parametre olarak verdiğiniz assemblydeki ilgili metodu reflection ile çağırır, parametreleri gönderir ve metodun execute edilmesinden sonra geri dönen parametreleri yukarıda opsiyonel bir alan olarak gördüğünüz “variable” değişkenine yazar. “Variable” bir iş akışı değişkenidir ve dolayısıyla artık bu metodun çalıştırılması sonrasında elde ettiğiniz sonucu tüm iş akışınız içerisinde kullanabilirsiniz.

 

Örneğin gönderilecek “kullanıcı adı” parametresine göre o kullanıcının yöneticisini bulan bir metodu çağırdıysanız artık “variable” içerisinde o yöneticinin kullanıcı adı bilgileri vardır ve siz isterseniz “Collect Data” gibi varsayılan Sharepoint Designer aktiviteleri aracılığı ile bu yönetici kullanıcıya görev ataması gerçekleştirebilirsiniz.

 

 

Evren AYAN
WSS Architecture MVP, ISPA Regional Evangelist