18 Şubat 2009 Çarşamba

MOSS 2007'de Timer Job nasıl Yazılır?

Uğrastıgım proje kapsamında yarattıgımız MOSS portali kullanıcılarının portaldeki sayfaları Ajax Control Toolkit'in rating kontrolüyle oylamaları ve bu oyların Puanlar isimli bir listede URL, Puan gibi custom sütunlar olusturularak tutulması isteniyordu. Burada ilginç birşey yok, fakat isteğin devamında günlük bir sharepoint jobun çalısarak bir excel dosyasına listedeki itemları yazdırması ve yazdırırken Oylayan kullanıcının Profilinden de bazı bilgileri çekerek onları da yazması isteniyordu.
Sharepoint timer jobu yazmak için ilk yapılması gereken Microsoft.Sharepoint.Administration namespace'inde bulunan SPJobDefinition classından türeyen bir sınıf yaratmak.

class DailyProfileBasedRatingReportJobDefinition:SPJobDefinition
{
Workbook book;
Worksheet sheet;
WorksheetRow row;
public DailyProfileBasedRatingReportJobDefinition()
: base()
{
}

public DailyProfileBasedRatingReportJobDefinition(string name, SPService service, SPServer server, SPJobLockType jlt)
: base(name, service, server, jlt)
{
}

public DailyProfileBasedRatingReportJobDefinition(string name, SPWebApplication webApp)
: base(name, webApp, null, SPJobLockType.None)
{
this.Title = name;
}
public override void Execute(Guid targetInstanceId)
{
SPSite siteCollection = (this.Parent as SPWebApplication).Sites["/"];
SPList lstPuanlar = siteCollection.RootWeb.Lists["Puanlar"];
//Yapmamız gerekenleri yapıyoruz. Tüm kodu vermek isterdim, fakat hukuki olaylarla uğrasmak istemediğimden bunlan yetinmek zorundayız
}
}

Bu SPJobDefinition classının Execute Metodunu override ederek job çalıstıgında ne yapması gerekiyorsa onları burada yapıyoruz.


Peki simdi bu jobu nasıl install ederiz?
Cevabı bir sonraki blogumda bulacaksınız.
Keep Watchin'..

Hiç yorum yok:

Yorum Gönder