DotNetNuke Scheduler

Heute Abend habe ich mich mal mit der Scheduler-Technologie von DotNetNuke auseinandergesetzt. Ich habe zwar auch einen eigenen DotNetNuke unabhängigen Scheduler laufen, da ich mich aber mit dieser Seite von DNN noch nicht auseinandergesetzt habe und der Anwendungsfall nicht so zeitkritisch ist viel mein Entschluß auf diese Art der Implementierung.

Zunächst einmal habe ich mir die Dokumentation von DotNetNuke Scheduler Service durchgelesen - allerdings war dort nur sehr wenig über die Implementierung zu lesen.

Die Erstellung ist aber auch eigentlich super simple und somit ist eine Anleitung gar nicht wirklich erforderlich. Hier das Grundgerüst für einen DotNetNuke Scheduler Service:

using System;
using DotNetNuke.Services.Exceptions ;

namespace GaliNeo.Modules.Events
{
    public class NotifyScheduler : DotNetNuke.Services.Scheduling.SchedulerClient
    {

        public NotifyScheduler(DotNetNuke.Services.Scheduling.ScheduleHistoryItem objScheduleHistoryItem)
        {
            this.ScheduleHistoryItem = objScheduleHistoryItem;
        }


        public override void DoWork()
        {
            try
            {
                this.Progressing() ;
                
                this.ScheduleHistoryItem.Succeeded = true ;
                this.ScheduleHistoryItem.AddLogNote("GaliNeo Events - Notify User was successfully") ;

            }
            catch(Exception exc)
            {
                this.ScheduleHistoryItem.Succeeded = false ;
                this.ScheduleHistoryItem.AddLogNote("EXCEPTION: " + exc.ToString()) ;
                this.Errored( ref exc) ;
                Exceptions.LogException(exc) ;
            }
        }

    }
}

 

Das Geheimnis ist eigentlich ganz einfach.

  1. Man erstellt eine Klasse und leitet diese von DotNetNuke.Services.Scheduling.SchedulerClient ab
  2. Es muss eine Methode (DoWork()) definiert werden, die von der DotNetNuke Engine aufgerufen wird
  3. Ganz wichtig ist, den Konstruktur nicht zu vergessen. Das ist mir zunächst passiert und ich wunderte mich, warum der Tast nicht ausgeführt wurde.

Innerhalb der Methode DoWork() kann man nun auf die Business-Logik eines Modules zugreifen, um z.B. Daten zu lesen, zu verändern und wieder zu speichern.

Es gibt wohl eine Einschränkung: Auf die MemberRole - Implementierung kann von einem Scheduler aus nicht zugegriffen werden, da der dafür erforderliche Kontext fehlt! 

Pingbacks and trackbacks (3)+

Kommentar schreiben