Aus der Praxis – Beschreibung für einen eigenen Timerjob vergeben
avatar

Die Entwicklung eines eigenen Timerjobs für SharePoint 2010 ist nicht sehr aufwendig, es gibt dazu diverse Anleitungen und Artikel (s.u.). Im folgenden Beispiel handelt es sich bei dem entwickelten Timerjob um eine Komponente, die zyklisch alle Aufgaben betrachtet und einen Status setzt, wenn ein bestimmter Zeitraum verstrichen ist.

Der Code könnte wie folgt aussehen:

public class EscalationTimerJob : SPJobDefinition
{
    public EscalationTimerJob() : base()
    {
    }

    public EscalationTimerJob(string jobName, SPService service, SPServer server, SPJobLockType targetType)
        : base(jobName, service, server, targetType)
    {
    }

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

    public override void Execute(Guid targetInstanceId)
    {
        EscalationCrawler.Execute(WebApplication);
    }
}

Doch nachdem der Timerjob installiert wurde, kann man in der Zentraladministration erkennen, dass dem Timerjob keine Beschreibung zugeordnet wurde:

image

Das ist natürlich sehr unschön, damit man einem administrativem Benutzer so keine Hinweise darauf liefern kann, was der Timerjob denn genau macht.

Leider gibt es keine Eigenschaft, mit der man die Beschreibung ähnlich dem im Konstruktor Titel setzen kann. Allerdings hat die Klasse SPJobDefinition die Eigenschaft “Description”, die man überschreiben kann, damit eine Beschreibung angezeigt wird.

public class EscalationTimerJob : SPJobDefinition
{
    public EscalationTimerJob() : base() …

    public EscalationTimerJob(string jobName, SPService service, SPServer server, SPJobLockType targetType)
        : base(jobName, service, server, targetType) …
    
    public EscalationTimerJob(string jobName, SPWebApplication webApplication)
        : base(jobName, webApplication, null, SPJobLockType.ContentDatabase) …
    
    public override void Execute(Guid targetInstanceId) …

    public override string Description
    {
        get
        {
            return  "your description here";
        }
    }
}

Am Ende dann das gewünschte Ergebnis:

image

Interessante Links zur Timerjob-Entwicklung in Visual Studio 2010: http://dotnetfinder.wordpress.com/2010/07/24/creatingcustomsharepointtimerjob2010/
http://doitwithsharepoint.blogspot.com/2011/01/create-custom-timer-job-in-sharepoint.html

Technorati-Markierungen: ,

Schreibe einen Kommentar