创建SharePoint 2010 Timer Job

好久没有写博客了。最近在使用SharePoint 2010中Timer Job的功能,有了一点心得,分享一下。

我个人认为SharePoint Timer Job和Windows Service或者是Schedule很相似,就是enable之后可以定时执行。开发的步骤如下:

1.   在VS中新建一个Class,这个Class继承Microsoft.SharePoint.Administration.SPJobDefinition,实现的代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.SharePoint;

using Microsoft.SharePoint.Administration;

namespace Mike.TimeJob

{

public class MyFirstTimeJob:SPJobDefinition

{

public MyFirstTimeJob()

:base()

{}

public MyFirstTimeJob(string jobName, SPService service, SPServer server, SPJobLockType targetType)

:base(jobName,service,server,targetType)

{}

public MyFirstTimeJob(string jobName, SPWebApplication webApplication)

: base(jobName, webApplication, null, SPJobLockType.ContentDatabase)

{

this.Title = "Mike First Timer Job";

}

public override void Execute(Guid targetInstanceId)

{

// get a reference to the current site collection‘s content database

SPWebApplication webApplication = this.Parent as SPWebApplication;

SPContentDatabase contentDb = webApplication.ContentDatabases[targetInstanceId];

// get a reference to the "Tasks" list in the RootWeb of the first site collection in the content database

SPList taskLlist=contentDb.Sites[0].RootWeb.Lists["Tasks"];

//create a new task, set the Title to the current day/time, and update the item

SPListItem newTask = taskLlist.Items.Add();

newTask["Title"] = DateTime.Now.ToString();

newTask.Update();

}

}

}

MyFirstTimeJob这个类最关键的就是需要override Execute方法,这里面可以写你自己想要实现的业务逻辑,我这里就是向Tasks List中每次新增一个时间信息,这个类需要注册到GAC中,是需要强命名的。

2. 在VS中新建第二个Class,这个Class是MyFirstTimeJob的安装类,在SharePoint Feature被激活的时候使用,这个Class继承了Microsoft.SharePoint.Administration.SPFeatureReceiver,实现的代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.SharePoint;

using Microsoft.SharePoint.Administration;

namespace Mike.TimeJob

{

public class MyFirstTimeJobInstaller:SPFeatureReceiver

{

const string JOB_NAME = "MyFirstTimeJob";

public override void  FeatureInstalled(SPFeatureReceiverProperties properties)

{

}

public override void  FeatureUninstalling(SPFeatureReceiverProperties properties)

{

}

public override void  FeatureActivated(SPFeatureReceiverProperties properties)

{

SPSite site = properties.Feature.Parent as SPSite;

// make sure the job isn‘t already registered

foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)

{

if (job.Name == JOB_NAME)

job.Delete();

}

// install the job

MyFirstTimeJob myjob = new MyFirstTimeJob(JOB_NAME, site.WebApplication);

SPMinuteSchedule schedule = new SPMinuteSchedule();

schedule.BeginSecond = 0;

schedule.EndSecond = 59;

schedule.Interval = 5;

myjob.Schedule = schedule;

myjob.Update();

}

public override void  FeatureDeactivating(SPFeatureReceiverProperties properties)

{

SPSite site = properties.Feature.Parent as SPSite;

// delete the job

foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)

{

if (job.Name == JOB_NAME)

job.Delete();

}

}

}

}

MyFirstTimeJobInstaller类中FeatureDeactivating方法用于在Feature被Disable时将已经存在的SPJobDefinition实例删除,FeatureActivated方法用于删除已经存在的SPJobDefinition实例,然后再新建实例,并设置Schedule,Schedule可以有SPYearlySchedule、SPMonthlySchedule、SPDailySchedule、SPHourlySchedule、SPMinuteSchedule等等,具体可以去查MSDN。

3. 将这2个Class注册到GAC中,因为是同一个Assembly,得到一个PublicKey。

安装GAC的命令

gacutil -i 目录\Mike.TimeJob.dll

4. 在创建Feature.XML文件

<?xml version="1.0" encoding="utf-8" ?>

<Feature xmlns="http://schemas.microsoft.com/sharepoint/"

Id="D4C9BB6B-E95D-4066-A0BA-EE5AAE79E3B3"

Title="Mike First Timer Job"

Description="Mike Hu‘s first timer job for adding now to tasks list"

Scope="Site"

Hidden="TRUE"

Version="1.0.0.0"

ReceiverAssembly="Mike.TimeJob, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d747f4e6e693450e"

ReceiverClass="Mike.TimeJob.MyFirstTimeJobInstaller">

</Feature>

这里Feature中的PublicKeyToken填写的是第3步得到的Public Key.将这个feature.xml文件copy到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\MyFirstTimeJob_Feature1中,注意MyFirstTimeJob_Feature1是自己创建的。

5. 安装Feature

stsadm -o installfeature -filename MyFirstTimeJob_Feature1\feature.xml -force

6. 重新启动ISS

iisreset

7. 激活Feature

stsadm -o activatefeature -filename MyFirstTimeJob_Feature1\feature.xml -url
http://prsgi0001

其中http://prsgi0001表所起作用的Web Application,这是Timer Job已经安装成功,并设置好了Shedule。

8. stop SharePoint 2010 Timer

net stop sptimerv4

9. start SharePoint 2010 Timer

net start sptimerv4

这样在Central Administration--> Monitoring --> Timer Jobs --> Review Job Definition中找到安装好的Timer Job。

全部完成,并可以成功运行了。

10. 如果需Debug,需要attach to process到OWSTIMER.EXE这个process中。

参考:Andrew Connell, Creating Custom SharePoint Timer Jobs

创建SharePoint 2010 Timer Job

时间: 2024-10-07 09:11:31

创建SharePoint 2010 Timer Job的相关文章

Sharepoint 2010 备份与恢复 (二)

使用数据库备份: 1. 安装必要组件 SharePoint Server 以下这些组件适用于Windows Server 2008及Windows Server 2008 R2. KB971831 (目前该KB还没有对2008 R2进行更新,这个KB为WCF添加一个新模式“AllowInsecureTransport”,如果没有这个模式则User Profile SA.Metadata Service SA不能正常工作) http://support.microsoft.com/kb/97183

创建你第一个SharePoint 2010 应用程序----完整推荐总结

创建你第一个SharePoint 2010 应用程序 本文中,你会学到: 1. 创建解决方案,使用服务器端对象模型和可视Web Part部件读取和写入列表数据. 2. 使用Visual Studio 2010 创建并部署解决方案. 3. 使用Chart Web Part呈现列表数据. 4. 在一个Web部件页面集成解决方案中的不同可视Web部件. 最终效果: 准备: 首先要创建两个必要的列表Customer Sales和Total Sales.第一个列表储存关于公司和FY10季度销售信息.它包含

Sharepoint 2010 代码自动创建列表

不再用一个EXCEL文件大家来发EMAIL来录入数据了,给用户用Sharepoint列表,但有一次用户有50个字段要录入,虽然在Designer里或是UI上创建字段很方便,但要一个个创建真是不高兴这样做.用户会用EXCEL那就让用户把字段名.类型.是否是必须项填在EXCEL里面,代码读下搞定~~查阅项(lookup字段)怎么办?EXCEL的SHEET!常用的USER PICKER类型的字段代码里根据EXCEL获取到的列的值来判断下就行了. Sharepoint 2010 代码自动创建列表,布布扣

SharePoint 2010 中创建超链接到Pop-Up对话框

SharePoint 2010 中创建超链接到Pop-Up对话框 SharePoint 2010 推出了新式的带有阴影的弹出对话框,你感觉怎么样?我感觉倒是挺酷的.这样少打开了一个页面,省事多了,而且不会让用户迷惑,在不同页面中穿梭.问题是在你的页面中,如何创建自定义的超链接,放在Pop-Up对话框里呢? 其实方法真的很简单,使用一个SharePoint内置的JavaScript功能就可以了.(PS:在SharePoint 2010中测试可用,因为我没有2013..) 这里给出两种方法.加到快速

创建你第一个SharePoint 2010 应用程序

创建你第一个SharePoint 2010 应用程序 本文中,你会学到: 1. 创建解决方案,使用服务器端对象模型和可视Web Part部件读取和写入列表数据. 2. 使用Visual Studio 2010 创建并部署解决方案. 3. 使用Chart Web Part呈现列表数据. 4. 在一个Web部件页面集成解决方案中的不同可视Web部件. 最终效果: 准备: 首先要创建两个必要的列表Customer Sales和Total Sales.第一个列表储存关于公司和FY10季度销售信息.它包含

sharepoint 2010 创建自定义的ASP.NET Web Service (上)

项目背景 根据客户需求在SharePoint 2010 中创建自定义的ASP.NET Web Service可以分为3种方式(我所知道的).废话少说,下面一一列举: 创建方式 MSDN 官方博客自己的一个创建ASP.NET Web Service.http://msdn.microsoft.com/zh-cn/library/ms464040(v=office.14).aspx 但是它不推荐这种方式. 通过创建类库项目,使类库项目包装webservice. MSDN推荐使用的方式,通过WCF创建

SharePoint 2010 WebPart Web部件 总贴

SharePoint 2010 WebPart Web部件 总贴 之前写的SharePoint WebPart Web部件相关的博客,没有做一个索引,导致网友在查看的时候很不方便,于是这里我做一个总贴.感谢来自北京的summer的提醒. SharePoint 根据列表项目的元属性按照条件筛选列表项目 Web 部件 http://blog.csdn.net/crazygolf/article/details/37934165 SharePoint 网站导航Web部件 http://blog.csd

SharePoint 2010 WebPart Web部分 总的膏

SharePoint 2010 WebPart Web部分 总的膏 之前写SharePoint WebPart Web部分相关的博客,我们没有做一个索引.网友在查看的时候非常不方便,于是这里我做一个总贴.感谢来自北京的summer的提醒. SharePoint 依据列表项目的元属性依照条件筛选列表项目 Web 部件 http://blog.csdn.net/crazygolf/article/details/37934165 SharePoint 站点导航Web部件 http://blog.cs

SharePoint 2010 之 数据库架构

1.SharePoint Foundation 2010 数据库 1)配置数据库 配置:SharePoint_Config 配置数据库包含有关 SharePoint 数据库.Internet Information Services (IIS) 网站.Web 应用程序.受信任的解决方案.Web 部件包.网站模板以及特定于 SharePoint 2010 产品的 Web 应用程序和服务器场设置(例如默认配额设置和被禁止的文件类型)的数据. 在仅服务器场配置备份或还原过程中,不会保存许多配置设置,尤