アクセスカウンタ - Sharepointのカスタムタイマジョブ

Sharepointのカスタムタイマジョブ(Sharepointのカスタムタイマー、作業タイマー、タイミング開始)コレクション
shinobi.jp - アクセス解析, ブログ, カウンター とかを提供しているNINJA TOOLSの別館的サイト
長い時間のタイマを使用して、管理センターは、SPJobDefinitionクラスは、ビットの意味だ発見されたが、このクラスを展開するSPFeatureReceiverを使用する必要がある、つまり、展開することができるタイマーを行い、必要な2つの部分に設計されている:

第二に、準備がSPFeatureReceiverクラスを継承されるタイマデバイスのインストールを展開するために必要な、私はEventCheckTimerInstallerと呼んでいる




このクラスは、タイマジョブのメインクラスは、システムは、Executeメソッドは、(は、コンテンツデータベースID)を渡す必要はありませんtargetInstanceId引数のこのメソッドと呼ばれる、主に内にある適切なタイミングでシステムコール時に自動的に送信する私たちは腐ってMain関数を書いている時点で、ほぼそれを見ることができます:)システムを使用する。
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace MyCompany.Management.Employees
{
/// <summary>




/ / /設定されたスケジュールは、定期的なのExecuteメソッドを呼び出します。
/// </summary>
public class EventCheckTimer : SPJobDefinition
{
public EventCheckTimer() : base() { }
/// <summary>

/ / /複数のSDKのコンストラクタを参照してください
/// </summary>
/ / / タイマーの名前

public EventCheckTimer(string _timername, SPWebApplication _wp)
: base(_timername, _wp, null, SPJobLockType.ContentDatabase)
{
this.Title ="契約の有効期限の確認通知0.04";
}
/// <summary>
/ / /このメソッドは、システムによって渡さcontentDbId、システムによって呼び出されます
/// </summary>
/ / / データベースのIDコンテンツ
public override void Execute(Guid targetInstanceId)
{
SPWebApplication webApplication = this.Parent as SPWebApplication;
SPContentDatabase contentDb = webApplication.ContentDatabases[targetInstanceId];
DateTime dt;
/ /図書館員の現在のスタッフを反復処理し、事件がすべてを可能に思い出させるために確認する
foreachの(SPListItem李contentDb.Sites [0]。AllWebs ["従業員"]を一覧表示["従業員データベース"]。アイテム)
{
(李["契約時間だけ"]!= null)の場合
{
dtが= Convert.ToDateTime(李["契約時間だけ"]);
TimeSpan ts = (dt.Date - DateTime.Today.Date);
/ /契約は、現在の時刻よりも小さい場合にのみ時間場合は、このような状況は、通常、唯一のサービスがクラッシュしたときに発生します。
if (dt.Date < DateTime.Now.Date)
{
SPListItemのsiは= [0] contentDb.Sites。 AllWebs ["従業員"]。リスト["タスク"]。 Items.Add();
済州["タイトル"] = String.Formatは、("契約の{0}有効期限が切れている!"、李["従業員名"]);
済州["閉じる日"] = DateTime.Now.AddDays(7);
si.Update();
}
else

{
SPListItemのsiは= [0] contentDb.Sites。 AllWebs ["従業員"]。リスト["タスク"]。 Items.Add();

済州["タイトル"] = String.Format("{0} {1}期限が切れる契約、日付日後:{2}"、李["従業員名"]、(dt.Date - DateTime.Now。日)、李["契約時間だけ"]);
si.Update();
}
}
}
}
}
}
TimerJob時間を設定した後、彼らは、インストーラを書くことができます下のコードです:実際には、コピーすることができますが、オブジェクトを配置するタイマーをは、FeatureActivatedの変化を注意して、タイマティックはありますか変更する必要がある独自のニーズ。トリガ条件が満たされたときにBeginSecondとEndSecondここで1分で、タイマーを参照していることは、0〜59秒以内に実装することができます私のような時間の実施期間、。。
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace MyCompany.Management.Employees
{
/// <summary>
/ / /このクラスの主な機能は、サイトに機能をインストールすることです。
/ / /オブジェクトのクラスは、SPJobDefinitionから継承する必要がありますインストールされている

/// </summary>
class EventCheckTimerInstaller : SPFeatureReceiver
{
const string MY_TASK = "EventCheckTimer";
/// <summary>
/ / /この関数では、インストール後に呼び出される
/// </summary>
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
{
}
/// <summary>
/ / /関数でアンロードされたときに呼び出されます
/// </summary>
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{
}
/// <summary>
/ / /この関数は、アクティブになっているときに呼び出されます
/// </summary>
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
/ /現在のサイトのスコープを取得
SPSite site = properties.Feature.Parent as SPSite;
/この機能が呼び出される前に、システムがインストールされていないこと/を確認してください
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == MY_TASK)
job.Delete();
}
/ / TimerJobをインストールします。
EventCheckTimer timer = new EventCheckTimer(MY_TASK, site.WebApplication);
/ /設定は、作業スケジュールのタイマ、ここで毎日の開始時刻、実行時間、00:00-05:00場合、Timerは、SDKの詳細を参照してくださいには、最低でも一度だけ長い日に実行される
//SPDailySchedule schedule = new SPDailySchedule();
//schedule.BeginHour = 0;
//schedule.EndHour = 5;
SPMinuteSchedule schedule = new SPMinuteSchedule();
schedule.BeginSecond = 0;
schedule.EndSecond = 59;
schedule.Interval = 1;
timer.Schedule = schedule;
timer.Update();
}
/// <summary>

/// </summary>
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
/ /この機能を削除する
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == MY_TASK)
job.Delete();
}
}
}
}

stsadm -o addsolution -filename yourwspfile.wsp
stsadm -o deploysolution -name yourwspfile.wsp -immediate -allowgacdeployment -force
stsadm.exeでの- o execadmsvcjobs'これは展開操作の即時実施され
でnet stop"Windows SharePoint Servicesタイマは、"'タイマサービスを再起動する
net start "Windows SharePoint Services Timer"
resetiis

[OK]をするには、この機能では、サイトコレクション機能を開きます。。
あなたはタイマ、より多くの問題を〜〜〜アンインストールする場合は、
まず、サイトコレクションの機能の機能を無効にし、実行する必要があります
stsadm -o deletesolution -name ZTEsoft.Management.Employees.EventCheckTimer.wsp -override
最後に、またはWindows SharePoint Servicesタイマのリフレッシュサービス、またはサイトコレクションを再起動して覚えてタイマサービスを実装していきます。
あなたがプログラムの実装では、循環的な書き込みとしてこれはあなたが最初のコンソールかの実装は、必ずすべてを確認OKですし、上TimerJobプログラムの実行環境をシミュレートすることができます、実際には、おそらくそのデバッグのためにクールされていないExecute関数は、でのインストールでインストーラパッケージ。
あなただけのテストしているなら、私たちは、テストはおそらく将来いつの日か、またはサイトコレクション機能をオフに完了していることを、あなたのデータベースが同じ情報でいっぱいになる覚えておく必要があります:)
どのプロセスがOWNTIMER.EXEに接続することができますデバッグリサイズ