2010-08-03 87 views
1

因此,我正在使用SPJobDefinition爲SharePoint創建自定義計時器作業。激活功能的範圍自定義Sharepoint定時器作業

通過功能接收器激活此作業。

據我所知,SPJobDefinition在網絡應用程序上運行。

如果功能範圍是基於站點或基於Web的,是否有代碼方式來確定哪些站點的功能在客戶工作中通過激活?

爲了更清楚地瞭解我想要實現的目標,作業本身是一個自定義的「Alert Me」通知作業。我想要做的是能夠確定哪些網站已激活此功能,以確定哪些網站訂閱警報通知。

但我不知道如何確定哪些網站已啓用此功能。

任何幫助非常感謝。

回答

2

下面是代碼,我用來做你所描述的正是:

public override void Execute(Guid targetInstanceId) 
    { 
     foreach (SPSite site in this.WebApplication.Sites) 
     { 
      try 
      { 
       if (SPSite.Exists(new Uri(site.Url)) && null != site.Features[FeatureId.AlertMeJob]) 
       { 
        try 
        { 
         ExecuteJob(site); 
        } 
        catch (Exception ex) 
        { 
         // handle exception 
        } 
       } 
      } 
      finally 
      { 
       site.Dispose(); 
      } 
     } 
    } 

FeatureId.AlertMeJob是代表與創建工作日程表的功能接收器的功能一個GUID(如果沒已經存在)。

+0

這看起來非常棒 - 非常感謝!有一個問題 - 是否有一種簡單的方法從自定義作業中獲取特徵ID?或者我必須將ID保存在某處,然後讀取它? – Dynde 2010-08-04 07:33:35

+0

nvm ...我最終把它扔到計時器作業的構造函數中,然後保存在網絡中。物業包...不是一個特別乾淨的做法,我知道... – Dynde 2010-08-04 10:51:38

相關問題