1

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

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

成功部署和触发工作项作业还有更多先决条件吗?

4

1 回答 1

1

您需要为您的工作项作业定义创建一个正在运行的作业实例。工作项作业被安排为任何其他作业。请参阅SPWorkItemJobDefinition 类

作为派生工作项计时器作业定义的基类。此类与计时器作业 (SPTimerService) 一起处理工作项(SPWorkItem 实例)。[...] 这个类与 SPWorkItem 和 SPWorkItemCollection 类密切合作。您应该使用 SPSite 对象有权访问的集合类将工作项添加到处理队列。当您的工作项计时器作业执行时,[...]

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

SPWebApplication webApp = // ..;
SomeWorkItemJob = new SomeWorkItemJob("TheName", webApp);
job.Schedule = new SPMinuteSchedule { Interval = 2}; // every two minutes
job.Update(false);
于 2012-04-18T14:44:10.243 回答