如何在MOSS上安装自定义SharePoint计时器作业

时间:2011-01-26 11:33:36

标签: sharepoint-2007

如何在MOSS上安装自定义SharePoint计时器作业

您好我创建了, 自定义SharePoint计时器作业, 本文档下面是我的代码。

我写了并安装了很多  的WebParts。

但这是我第一次写作  MOSS上的SharePoint计时器作业。

我尝试使用wspBuilder部署它, 尝试将其复制到gac, 但是JOB没有出现在JOB列表上 管理中心网站, 中央行政>操作>计时器作业定义,
我怎样才能添加它并在

上看到它

中央行政>操作>计时器作业定义 代码。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Administration;
using System.IO;
using Microsoft.SharePoint;
namespace WSPBuilderProject1.FeatureCode
{
    public class MyTimerJob : SPJobDefinition
    {
        public MyTimerJob()
            : base()
        {
            this.Title = "My Timer Job";
        }

        public MyTimerJob(string jobName, SPService service, SPServer server, SPJobLockType targetType)
            : base(jobName, service, server, targetType)
        {
            this.Title = "My Timer Job";
        }

        public MyTimerJob(string jobName, SPWebApplication webApplication)
            : base(jobName, webApplication, null, SPJobLockType.ContentDatabase)
        {
            this.Title = "My Timer Job";
        }


        public override void Execute(Guid contentDbId)
        {

            using (SPWeb oWeb = SPContext.Current.Site.OpenWeb("/"))
            {
                SPWeb mySite = SPContext.Current.Web;
                mySite.AllowUnsafeUpdates = true;
                SPListItemCollection listItems = mySite.Lists["AuditLogCalculatedData"].Items;
                int itemCount = listItems.Count;

                for (int k = 0; k < itemCount; k++)
                {
                    try
                    {
                        listItems.Delete(k);
                    }
                    catch { }
                }


                    SPListItem item = listItems.Add();

                    item["FileName"] = "roi";
                    item["NumOfEntries"] = 10102;


                    item.Update();

                mySite.AllowUnsafeUpdates = false;

            }

        }
    }
}

2 个答案:

答案 0 :(得分:1)

这是可以在FeatureActivated事件

上执行的示例代码
public override void FeatureActivated (SPFeatureReceiverProperties props) {
  SPWebApplication webApp = props.Feature.Parent as SPWebApplication;
  if (webApp == null)
    throw new SPException("Error obtaining reference to Web application.");

  // Ensure the job is not already registered.
  foreach (SPJobDefinition job in webApp.JobDefinitions)
    if (job.Name == JOB_NAME) job.Delete();

  // Install job.
  SharePointWarmupJob warmupJob = new SharePointWarmupJob(webApplication);

  // Schedule the job to run every minute all the time.
  SPMinuteSchedule schedule = new SPMinuteSchedule();
  schedule.BeginSecond = 0;
  schedule.EndSecond = 59;
  schedule.Interval = 1;
  warmupJob.Schedule = schedule;

  // Save changes.
  warmupJob.Update();
}

答案 1 :(得分:0)

解决方案

如果你读下这篇文章,就会有一个压缩的解决方案文件(TaskLogger_CustomTimerJob.zip),你可以自己编译和编译。

VS2008将提示您将项目转换为2008,只需执行并编译。

构建项目

您无法构建的问题位于文件BuildSharePointPackage.Targets中。 MakeCabPath对您的环境无效。我的makecab.exe位于C:\Windows\system32路径中。我试图改变路径和重建,但它没有工作,它以某种方式试图使用旧的位置。所以我只是将makecab.exe复制到C:\Program Files\Microsoft Cabinet SDK\bin并且它构建成功。

WSPBuilder

此外,您可能希望使用WSPBuilder来减轻创建SharePoint解决方案的痛苦。它安装了visual studio扩展,您可以使用它来制作wsp文件并从visual studio进行部署。 Download WSPBuilder here,并使用Walkthrough of the Visual Studio Add-in