这方面的文章园子里有几篇了,不过大家基本上都是参考了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做相关通知。 SPUtility.SendEmail(web, false, false, sendTo, mailTitle, mailBody); } } }
2.该类完成后我们使用Feature来部署该功能,我们写一个自己的安装类,如下:
using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; using Microsoft.SharePoint.Administration; namespace CaryTimer { public class ListRemindEventInstaller : SPFeatureReceiver { const string caryTimerName = "Testtimer"; 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; 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(); } public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { SPSite site = properties.Feature.Parent as SPSite; foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) { if (job.Name == caryTimerName) { job.Delete(); } } } } }
3.需要在"c:\program files\common files\microsoft shared\web server extensions\12\Template\features"文件夹下建立CaryTimer文件夹,在该文件夹下建一个Feature.xml,代码如下:
<Feature Id="6283ADA0-B882-47fe-8507-D8CC763DC320" Title="CaryTimer" Description=" CaryTimer des" Scope="Site" Hidden="FALSE" ReceiverAssembly="HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b38a04419cc857d9" ReceiverClass="HelloWorld.ListRemindEventInstaller" xmlns="http://schemas.microsoft.com/sharepoint/"> </Feature>
4.然后我们使用一个批处理来安装Feature,批处理代码如下:
@SET TEMPLATEDIR="c:\program files\common files\microsoft shared\web server extensions\12\Template"
@SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm"
@SET GACUTIL="d:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe"
Echo Installing HelloWorld.dll in GAC
%GACUTIL% -if bin\debug\HelloWorld.dll
Echo Copying files to TEMPLATE directory
xcopy /e /y TEMPLATE\* %TEMPLATEDIR%
Echo Installing feature
%STSADM% -o installfeature -filename HelloWorld\feature.xml -force
IISRESET
REM cscript c:\windows\system32\iisapp.vbs /a "SharePointDefaultAppPool" /r
5.项目完成后,我们要添加强命名密钥。部署成功后就可以在网站集功能中看见该Feature,激活该Feature后,在管理中心—操作—计时器作业定义中可以看见该定时器的相关信息,并且可以禁用和启用该定时器,在管理中心—操作—计时器作业状态中可以该定时器最后一次运行的情况。
6.如果我们要调试该定时器我们需要附加OwsTimer.exe进程,每次更改后需走以下步骤:
6.1.使用批处理从新部署Feature
6.2.先Deactivate feature, 然后activate feature.
6.3.命令行:net stop SPTimerV3
6.4.命令行:net start SPTimerV3
6.5.Visual Studio: Attach to process: OWSTIMER.EXE
7.如果你在ListRemindEvent类中需要读取外部文件的配置,直接读web.config是读不到的,我们需要在c:/program files/common files/microsoft shared/…/12/bin目录里新建一个文件OwsTimer.exe.config,并做相关配置如下:
<configuration> <appSettings> <add key="key" value="value" /> </appSettings> </configuration> 然后用ConfigurationManager.AppSettings.Get("key"); 来取得这个值。
发表评论
-
Sharepoint之升级篇
2008-03-07 07:47 1597一:sharepoint介绍<?xml:namespac ... -
SharePoint之定义管理路径
2008-03-12 07:14 1080一:如何设置 通过定义管理路径,可以指定 Web 应用程序 ... -
Sharepiont之页面模型
2008-03-15 17:33 1067本文主要包括以下几方面内容:1.页面布局和母版页2.页面布局模 ... -
Sharepoint站点把我的名字显示成“系统帐户”问题
2008-03-18 21:48 983在你安装了SharePoint Server 2007之后,当 ... -
MOSS中对列表的一些操作(创建,查询等)
2008-06-17 20:47 8991.查询列表的所有字段 SPSite site = new S ... -
使用对象模型来创建内容类型
2008-07-03 21:49 645一:首先定义一个函数来创建内容类型,代码如下: private ... -
微软发布WSS3.0和MOSS2007 基础结构更新
2008-07-17 07:07 728一:Windows SharePoint Services 3 ... -
[翻译]Training Site Template—Part 1:介绍
2008-07-30 20:08 698原文地址:http://blogs.msdn.com/shar ... -
如何取到MOSS列表中item的链接
2008-12-04 18:07 823SPListItem的Url属性返回的不是绝对路径,形式如下面 ... -
MOSS程序中如何发Mail?
2008-12-09 10:42 785我们使用.NET类库中的API发Mail的时候,我们要配置他的 ...
相关推荐
标题中的“moss中使用第三方邮箱解决方案”指的是在Microsoft Office SharePoint Server (MOSS)中集成非微软提供的电子邮件系统,例如Google Workspace、Zimbra、Exchange Online等。MOSS作为一个企业级的内容管理和...
MOSS中文SDK MOSS中文SDK MOSS中文SDK MOSS中文SDK
Moss 2007 中的列表迁移到 Moss 2010 的方法 Moss 2007 是 Microsoft Office SharePoint Server 2007 的一部分,提供了强大的协作和内容管理功能。然而,随着技术的发展和业务的增长,许多组织开始迁移到 Moss 2010...
下面我们将深入探讨如何在MOSS中实现图片的自动上传,以及这一过程涉及的关键知识点。 1. **Web服务接口**: MOSS 提供了一系列 Web 服务接口,如 SharePoint Web Services,使得开发者可以通过编程方式与 MOSS ...
1. **在IIS中创建SSL绑定**:首先,需要在Internet Information Services (IIS) 管理器中,对运行MOSS的Web应用程序的网站进行配置。打开IIS,选择对应的网站,然后在“绑定”选项中添加一个新的HTTPS绑定,指定SSL...
在MOSS中配置RMS手册(英文).doc
它为用户提供了强大的功能,以便更有效地探索和操作MOSS中的数据。CamlViewer2007是该工具的一个组件,用于查看和编辑CAML(Collaborative Application Markup Language)查询,这是在SharePoint中进行复杂数据检索...
在这个案例中,它包含了RadEditor MOSS的所有组件,安装这个WSP文件就能将富文本编辑器集成到你的MOSS环境中。 总的来说,"Moss富文编辑器"通过提供一个功能强大的替代品,显著提升了MOSS用户在创建和编辑网页内容...
5. **解决方案打包与部署**:了解如何将自定义代码、样式表、XML配置文件等打包成WSP解决方案,并通过PowerShell或中央管理服务器进行部署,是MOSS开发中的重要环节。 6. **权限与安全**:在大型组织中,权限管理是...
在Microsoft Office SharePoint Server (MOSS) 2007中,列表是用于存储和管理数据的基本组件,可以用来创建各种类型的数据库,如任务列表、文档库或图片库。当涉及到图片上传功能时,MOSS 2007的默认设置可能无法...
moss2010 安装部署 MOSS 2010(Microsoft Office SharePoint Server 2010)是一款功能强大且灵活的企业协作平台,由 Microsoft 公司开发。MOSS 2010 旨在帮助组织更好地协作、共享信息和提高生产力。为了成功部署 ...
### MOSS2007 中启用搜索功能的注意事项 #### 关键知识点概览 - **默认账户问题**:MOSS2007默认使用的`NT Authority\NetworkService`账户配置搜索服务及其爬网账户,可能导致权限不足的问题。 - **解决方法**:将...
moss 2007开发教程,moss 2007开发教程(1).MOSS2007之概述
在这个主题中,我们将深入探讨MOSS中的工作流审批流程以及如何进行WWF(Windows Workflow Foundation)调试模板的使用。 工作流审批是SharePoint中常见的一种应用场景,主要用于管理文档或请求的审批过程。例如,...
### MOSS中EventHandler的使用详解 #### 一、概述 Microsoft Office SharePoint Server (MOSS) 是一个企业级的内容管理系统,提供了强大的文档管理、网站构建、工作流自动化等功能。EventHandler是MOSS中的一个...
以下是一个详细的步骤指南,教你如何在Moss中集成Ajax功能。 第一步:理解基础概念 在开始之前,确保你对Ajax的基本原理有所了解。它允许Web应用程序在后台与服务器通信,同时保持用户界面的响应性。Ajax的核心组件...
1. **了解Webpart**:Webpart是MOSS中的可重用组件,可以显示数据、提供交互功能。 2. **创建Webpart**:使用Visual Studio创建新的SharePoint Webpart项目。 3. **设计界面**:利用ASP.NET控件构建Webpart界面。 4....
在服务器管理器中,找到“配置Windows身份验证”选项,开启“使用基于Kerberos的身份验证”。然后,启动“Security Token Service”(STS)服务,这是MOSS 2007实现单点登录的核心服务。 ### 2. 建立安全组 创建一...
在本文中,我们将深入探讨如何使用代码来操作MOSS(Microsoft Office SharePoint Server)中的文档库。MOSS对象模型是 SharePoint 开发的核心,它允许开发者直接与 SharePoint 的各种元素交互,包括列表、文档库、...