工作项计时器作业未触发

时间:2012-04-18 13:45:09

标签: sharepoint sharepoint-2010 timer-jobs

在我的网站(SP2010)中,我创建了一个触发器,通过SPSite.AddWorkItem方法将一个工作项添加到队列中。这似乎做得很好,因为ScheduledWorkItems表正在填充正确的数据。时间以UTC为单位,是当前时间或过去时间。 ID也都设置好了。因此该表具有所有正确的数据。

但是,永远不会触发从SPWorkItemJobDefinition派生的具有正确ID的自定义创建的Work Item处理器。 添加工作项的AppPool用户也是服务器场管理员。 事件日志或共享点日志文件中没有关于此过程的条目,因此甚至没有被触发。

成功部署和解雇工作项作业的更多先决条件是什么?

1 个答案:

答案 0 :(得分:1)

您需要为工作项作业定义创建正在运行的作业实例。工作项作业被安排为任何其他工作。见SPWorkItemJobDefinition Class

  

用作派生工作项计时器作业定义的基类。此类使用计时器作业(SPTimerService)来处理工作项(SPWorkItem实例)。   [...]   此类与SPWorkItem和SPWorkItemCollection类紧密配合。您应该使用SPSite对象可以访问的集合类,将工作项添加到处理队列。 当您的工作项目计时器作业执行时,[...]

我建议创建一个功能事件接收器,并在功能激活的“事件”中创建作业实例:

SPWebApplication webApp = // ..;
SomeWorkItemJob = new SomeWorkItemJob("TheName", webApp);
job.Schedule = new SPMinuteSchedule { Interval = 2}; // every two minutes
job.Update(false);