SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Timejob auf Workflow heraus generieren

Geprüfte Antwort Dieser Beitrag hat 6 Antworten

Ohne Rang
152 Beiträge
Michael Hoffmann erstellt 12 Juni 2012 16:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,

ich suche nach eine Möglichkeit einen Custom Timejob aus einem Workflow heraus zu generieren.
Allerdings scheitere ich wohl an den Sicherheitsrichtlinien.

Hier mal eine Ausschnit des Codes:

 ListTimerJob listLoggerJob = new ListTimerJob(jobName, site.WebApplication);
               SPMinuteSchedule schedule = new SPMinuteSchedule();
               schedule.BeginSecond = 0;
               schedule.EndSecond = 59;
               schedule.Interval = 1;
               listLoggerJob.Schedule = schedule;
               SPSecurity.RunWithElevatedPrivileges(delegate()
               {
                   listLoggerJob.Update(false); //Hier scheitert das ganze an einer Access Denied meldung
               });

Auch der Versuch SPWebService.ContentService.RemoteAdministratorAccessDenied auf false zu setzen hat nichts gebracht.

Kann mir jemand einen Tipp geben woran es liegt?

Danke und Gruß
Michael

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Juni 2012 17:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

SPSecurity.RunWithElevatedPriviledges funktioniert nicht so. Man muß innerhalb immer alle Objekte ausgehend von SPSite neu erzeugen.

Hier ist es so, daß Du im Konstruktor des Jobs eine SPWebApplication aus einer bereits bestehenden SPSite-Instanz mitgibst.

Ob das bei Workflows überhaupt funktioniert kann ich aber nicht sagen. Ich schätze, daß es von den Umständen abhängt: Workflow gerade neu gestartet: funktioniert, weil der Application Pool Account verwendet wird. Workflow nach Pause neu gestartet: läuft entweder ebenfalls unter einem Application Pool oder unter dem Account des SP-Timerdienstes (je nachdem, was den Workflow wieder gestartet hat).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 12 Juni 2012 17:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es sollte bei einem sauber installierten SharePoint nicht funktionieren, denn ein Workflow in einer Content Webanwendung sollte nicht in die Config DB der  Farm schreib dürfen. Der System Account müsste ebenfalls der der Webanwendung sein und dieser ist im Normalfall anders, als der von der Zentraladministration und somit kein Schreibzugriff!!!!!!!!!

Ohne Rang
152 Beiträge
Michael Hoffmann Als Antwort am 13 Juni 2012 13:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Funktioniert! Vielen Dank!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 13 Juni 2012 13:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du solltest allerdings Thomas Warnung durchaus ernstnehmen. Er hat nämlich völlig Recht damit, daß es eigentlich nicht funktionieren dürfte.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
152 Beiträge
Michael Hoffmann Als Antwort am 16 Juni 2012 19:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK Danke.
Ich werd schauen das ich das Problem behebe.

Wird denn der TimeJob selbst unter dem Farmkonto ausgeführt bzw. könnte ich innerhalb eines TimeJobs einen neuen Timejob erstellen?

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 17 Juni 2012 20:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Michael Hoffmann"] könnte ich innerhalb eines TimeJobs einen neuen Timejob erstellen?[/quote]

Ich würde sagen ja, da du ja auch ConfigDaten ändern kannst.