### MOSS中的计时器作业 #### 一、概述 Microsoft Office SharePoint Server (MOSS) 是一个企业级的内容管理系统和协作平台,它提供了强大的文档管理、网站构建、工作流等功能。在MOSS中,计时器作业是实现后台任务自动化执行的重要机制之一,通过创建自定义计时器作业,开发人员可以按预定的时间间隔执行特定的任务,如数据清理、邮件通知等。 #### 二、计时器作业基础 ##### 1. 计时器作业的概念 计时器作业(Timer Job)是在MOSS中用来执行定时任务的一种机制。这些任务通常在服务器场的后端执行,并不直接与用户交互。计时器作业可以通过设置来周期性地运行,例如每分钟、每天或每周执行一次。 ##### 2. 创建计时器作业 在MOSS中创建计时器作业需要继承 `SPJobDefinition` 类并重写其 `Execute` 方法。该方法会在计时器作业被触发时执行指定的操作。此外,还需要定义一个用于安装计时器作业的特征接收器(Feature Receiver),并在特征激活时注册计时器作业。 #### 三、代码示例解析 以下是对示例代码的部分解析: ##### 3.1 自定义计时器作业类 ```csharp public class ListRemindEvent : SPJobDefinition { public ListRemindEvent() : base() { } public ListRemindEvent(string _timerName, SPWebApplication _wp) : base(_timerName, _wp, null, SPJobLockType.ContentDatabase) { this.Title = "TestTimer"; } public override void Execute(Guid targetInstanceId) { // ...执行任务的逻辑 } } ``` - **构造函数**:提供了两个构造函数,其中一个接受计时器名称和 `SPWebApplication` 对象作为参数。 - **Execute 方法**:此方法会在计时器作业被触发时调用,用于执行具体的业务逻辑,例如发送邮件通知等。 ##### 3.2 特征接收器 ```csharp public class ListRemindEventInstaller : SPFeatureReceiver { const string caryTimerName = "TestTimer"; public override void FeatureActivated(SPFeatureReceiverProperties properties) { SPSite site = properties.Feature.Parent as SPSite; // 删除已存在的同名计时器作业 foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) { if (job.Name == caryTimerName) { job.Delete(); } } // 创建新的计时器作业 ListRemindEvent timer = new ListRemindEvent(caryTimerName, site.WebApplication); // 设置执行计划 SPMinuteSchedule schedule = new SPMinuteSchedule(); schedule.BeginSecond = 0; schedule.EndSecond = 59; schedule.Interval = 1; timer.Schedule = schedule; timer.Update(); } } ``` - **FeatureActivated 方法**:当特征被激活时调用,用于创建计时器作业并设置执行计划。 - **删除同名计时器作业**:确保不会重复创建计时器作业。 - **设置执行计划**:使用 `SPMinuteSchedule` 类设置计时器作业的执行频率。 #### 四、注意事项 1. **命名规则**:计时器作业的名称应当具有唯一性,以避免冲突。 2. **错误处理**:在 `Execute` 方法中应妥善处理异常情况,避免程序崩溃。 3. **性能考虑**:计时器作业不应占用过多资源,尤其是在执行密集型操作时。 #### 五、总结 通过上述介绍,我们可以了解到在MOSS中如何利用计时器作业来实现后台任务的自动化执行。这种机制对于维护系统稳定性和提高工作效率至关重要。理解计时器作业的工作原理以及如何创建和部署它们对于任何希望充分利用MOSS功能的开发人员来说都是非常有用的。




















这方面的文章园子里有几篇了,不过大家基本上都是参考了http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx这篇文章,在此我也推荐大家仔细看下本文及文中涉及到的相关文章。工作中也遇到了类似的需求,在此也做个总结。
1.MOSS中已经提供了定时器的功能,我们要开发自己的定时器需要继承自SPJobDefinition类,在重写的Execute方法写自己的业务逻辑。我的需求是找出列表中符合条件的item,并做mail通知,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
namespace CaryTimer
{
public class ListRemindEvent : SPJobDefinition
{
public ListRemindEvent() : base() { }
public ListRemindEvent(string _timername, SPWebApplication _wp)
: base(_timername, _wp, null, SPJobLockType.ContentDatabase)
{
this.Title = "TestTimer";
}
public override void Execute(Guid targetInstanceId)
{
SPWebApplication webApp = this.Parent as SPWebApplication;
SPContentDatabase contentDB = webApp.ContentDatabases[targetInstanceId];
SPWeb web = contentDB.Sites[0].AllWebs[0];
string sendTo = "";
string mailTitle = "";
string mailBody = "";
//实现自己业务逻辑,找出复合条件的并发mail做相关通知。


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 互联网+下的高职计算机课程教学改革研究.docx
- 大数据掘金的九个洞察.docx
- 简析我国未成年人网络道德教育的论文-教育理论论文.docx
- 建设工程价格的合理确定.doc
- 项目工期管理制度(中建).doc
- QC成果:合理布置管井管道提高安装工程质量.ppt
- 串级控制系统基础.doc
- SYSOP036客户监造管理办法(版本1.01).doc.doc
- 公路隧道施工技术规范特殊地质地段的施工.doc
- 计算机技术在职业中学数学教学中应用现状及对策.docx
- 小型应急卫星通信指挥车总体设计的探索与思考.docx
- 电工与电子技术练习题.doc
- 人货梯安装合同.doc
- 项目激励约束考评实施细则.doc
- 预留预埋施工方案.pdf
- 毕业设计四层电梯的PLC控制设计.doc


