MOSSでのタイマー作業
9307 ワード
この方面の文章は庭园にいくつかありますが、皆さんは基本的にhttp://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspxの文章を参考にしています.ここでは、本文と文の中で関连する文章をよく読むことをお勧めします.仕事中にも似たような需要がありました.ここでまとめてみます.
1.MOSSではタイマーの機能を提供しています.自分のタイマーを開発するにはSPJobDefinition類から継承し、書き換えたExecute方法で自分の業務ロジックを書く必要があります.私の需要はリストの中で条件に合うアイテムを探してメールで通知します.コードは以下の通りです.
@SET TEMPLATEDIR=「c:\program files\common files\microsoff shared\web server extensions\12\Template」
@SET STSADM=「c:\program files\common files\microsoff shred\web server extens\12\bin\stsadm」
@SET GACUTIL=「d:\Program Files\Microsoft Visual Studio 8\SDK\v 2.0\Bin\gacutil.exe」
Echo Installing Hello World.dll in GAC
%GACUTIL%-if bin\debug\Hello World.dll
Echo Copying files to TEMPLATE directory
xcopy/e/y TEMPLATE\*%TEMPLATEDIR%
Echo Installing feature
%STSADM%-o installfeature-filename Hello World\feature.xml-force
IISRESET
REM cscript c:\windows\system 32\iisap.vbs/a「Share PointDefault AppPool」/r
5.プロジェクトが完了したら、ネーミング鍵を強化します.配置が成功したら、ウェブサイトのセット機能でFeatureを見ることができ、このFeatureをアクティブにした後、管理センター-操作-タイマージョブ定義にこのタイマーの関連情報が見られ、このタイマーを無効にして有効にすることができます.管理センター-操作-タイマー作業状態でこのタイマーが最後に動作する場合があります.
6.このタイマーをデバッグするなら、Owstramer.exeプロセスを追加して、毎回変更した後、以下のステップを実行します.6.1.バッチ処理を使って、新しい展開からFeature 6.2.先にDeactivate featureを追加して、その後、activate feature.6.3.コマンドライン:net stup SPTimer 6.4.コマンドライン:net start SPTimer 6.5.EXacter
7.ListRemindEventクラスで外部ファイルを読み込む構成が必要であれば、web.co.figを直接読むことはできません.c:/program files/common files/microsoff shred/12/binディレクトリに新しいファイルOwTimer.exe.com figを作成し、関連した構成を以下のようにします.
1.MOSSではタイマーの機能を提供しています.自分のタイマーを開発するにはSPJobDefinition類から継承し、書き換えたExecute方法で自分の業務ロジックを書く必要があります.私の需要はリストの中で条件に合うアイテムを探してメールで通知します.コードは以下の通りです.
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\microsoff shared\web server extens\12\Template\feature s」フォルダの下に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\microsoff shared\web server extensions\12\Template」
@SET STSADM=「c:\program files\common files\microsoff shred\web server extens\12\bin\stsadm」
@SET GACUTIL=「d:\Program Files\Microsoft Visual Studio 8\SDK\v 2.0\Bin\gacutil.exe」
Echo Installing Hello World.dll in GAC
%GACUTIL%-if bin\debug\Hello World.dll
Echo Copying files to TEMPLATE directory
xcopy/e/y TEMPLATE\*%TEMPLATEDIR%
Echo Installing feature
%STSADM%-o installfeature-filename Hello World\feature.xml-force
IISRESET
REM cscript c:\windows\system 32\iisap.vbs/a「Share PointDefault AppPool」/r
5.プロジェクトが完了したら、ネーミング鍵を強化します.配置が成功したら、ウェブサイトのセット機能でFeatureを見ることができ、このFeatureをアクティブにした後、管理センター-操作-タイマージョブ定義にこのタイマーの関連情報が見られ、このタイマーを無効にして有効にすることができます.管理センター-操作-タイマー作業状態でこのタイマーが最後に動作する場合があります.
6.このタイマーをデバッグするなら、Owstramer.exeプロセスを追加して、毎回変更した後、以下のステップを実行します.6.1.バッチ処理を使って、新しい展開からFeature 6.2.先にDeactivate featureを追加して、その後、activate feature.6.3.コマンドライン:net stup SPTimer 6.4.コマンドライン:net start SPTimer 6.5.EXacter
7.ListRemindEventクラスで外部ファイルを読み込む構成が必要であれば、web.co.figを直接読むことはできません.c:/program files/common files/microsoff shred/12/binディレクトリに新しいファイルOwTimer.exe.com figを作成し、関連した構成を以下のようにします.
<configuration>
<appSettings>
<add key="key" value="value" />
</appSettings>
</configuration>
ConfigurationManager.AppSettings.Get("key"); 。