Bom, para isso você deve criar um projeto vazio de SharePoint 2010 ("Empty SharePoint Project").
Com o projeto criado, você deve criar agora uma classe que irá ser consumida pelo Timer Job, para isso basta fazer com que sua classe herde de SPJobDefinition.Veja o código do nosso exemplo:
namespace NameSpace
class TimerJobClass : SPJobDefinition
{
public TimerJobClass(): base()
}
public TimerJobClass(string jobName, SPService service, SPServer server, SPJobLockType targetType): base(jobName, service, server, targetType)
{}
public TimerJobClass(string jobName, SPWebApplication webApplication): base(jobName, webApplication, null, SPJobLockType.ContentDatabase)
{
this.Title = "My Custom Timer Job";
}
public override void Execute(Guid contentDbId)
{
//AQUI VOCÊ INSERE TODO O CÓDIGO QUE SEU TIMER JOB EXECUTARÁ NO TEMPO
PLANEJADO
}
}
}
Após criar a classe você deve adicionar uma Feature:
}
}
}
Após criar a classe você deve adicionar uma Feature:
E após adicionar também um Feature Event Receiver, que terá os métodos quando nossa feature for ativada e também desativada.
Agora você deve inserir o código necessário para ativar e desativar o Timer Job.
namespace NameSpace.Features.Feature1
{
[Guid("9a724fdb-e423-4232-9626-0cffc53fb74b")]
public class Feature1EventReceiver : SPFeatureReceiver
{
const string List_JOB_NAME = "My Custom Timer Job";
public override void FeatureActivated(SPFeatureReceiverProperties properties){
SPSite site = properties.Feature.Parent as SPSite;
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == List_JOB_NAME)
job.Delete();
}
TimerJobClass timerjob = new TimerJobClass(List_JOB_NAME, site.WebApplication);
SPMinuteSchedule schedule = new SPMinuteSchedule();
schedule.BeginSecond = 0;schedule.EndSecond = 59;
schedule.Interval = 5;
timerjob.Schedule = schedule;
timerjob.Update();
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == List_JOB_NAME)
job.Delete();}
}
}
}
Caso seu projeto esteja dando o seguinte erro:
"Error ocurred in deployment step 'Activate Features': Object reference not set to na instance of na object"
Mude o "Scope" da feature para "Site":
Agora você deve inserir o código necessário para ativar e desativar o Timer Job.
namespace NameSpace.Features.Feature1
{
[Guid("9a724fdb-e423-4232-9626-0cffc53fb74b")]
public class Feature1EventReceiver : SPFeatureReceiver
{
const string List_JOB_NAME = "My Custom Timer Job";
public override void FeatureActivated(SPFeatureReceiverProperties properties){
SPSite site = properties.Feature.Parent as SPSite;
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == List_JOB_NAME)
job.Delete();
}
TimerJobClass timerjob = new TimerJobClass(List_JOB_NAME, site.WebApplication);
SPMinuteSchedule schedule = new SPMinuteSchedule();
schedule.BeginSecond = 0;schedule.EndSecond = 59;
schedule.Interval = 5;
timerjob.Schedule = schedule;
timerjob.Update();
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == List_JOB_NAME)
job.Delete();}
}
}
}
Caso seu projeto esteja dando o seguinte erro:
"Error ocurred in deployment step 'Activate Features': Object reference not set to na instance of na object"
Para ver seu Timer Job criado, basta ir em Central Administration -> Monitoring -> Review job definitions.
Nenhum comentário:
Postar um comentário