daniel_philippi
Occasional Collector

Schedule Task anderen user wählen

Hallo zusammen.

In einem Script Task prüfe ich den Import eines Features, der im vorigen Task läuft. Wenn alles ok, gebe ich bestimmte Medien frei.

Dazu war es nötig einen technischen User zu nutzen und diesen bei der "eigenen Verbindung" des Script Tasks zu hinterlegen.

Nun möchte ich zusätzlich eine Info in die Description des Projekts schreiben. Dabei erhalte ich nun korrekterweise eine already locked exception.

Gibt es eine Möglichkeit die eigene Verbindung des Script Tasks zu beenden oder dass ich die ursprüngliche Connection verwenden kann?

Gruß,

Daniel

0 Kudos
3 Replies
mbergmann
Crownpeak employee

Hallo Daniel,

wie startest du denn den Auftrag? Aus dem ServerManager heraus?

Wenn du von Description des Projekts sprichst, meinst du wirklich das Project-Objekt, richtig?

Ist der Code dazu im selben ScriptTask oder einem separaten?

Viele Grüße

Michael

0 Kudos

Hallo Michael.

Letztendlich muss es funktionieren egal von wo der Auftrag ausgeführt wird. Ich verstehe schon, dass es klappen könnte, wenn ich den Auftrag aus dem SiteArchitect starten würde da ich dort nicht gleichzeitig das Projekt geöffnet habe wie im Servermanager.

Genau, ich will die Description des Projekts ändern.

Der Code ist in einem ScrptTask.

Gruß,

Daniel

0 Kudos

Hallo Daniel,

das Problem ist hier, dass durch das Öffnen der Projektoptionen im ServerManager das Project-Objekt von der ServerManager-Session "gelockt" wird. Da Aufträge aber auf dem Server und damit gezwungenermaßen mit einer eigenen Connection (heißt: Nicht in der ServerManager-Session) laufen, wüsste ich keine direkte Möglichkeit, das hinzubekommen - also wie man dem Auftrag quasi die "ServerManager-Connection" mitgeben könnte. Auch wenn man das "Eigene Verbindung" in Script-Tasks nicht nutzt, wird ja eine eigene (SYSTEM-readonly) Connection erzeugt. Die Aufträge sind technisch bewusst von den Clients "abgekoppelt" und werden nur von dort angetriggert.

Mir fällt hier höchstens noch folgendes ein:

a) Einen Server(!)-Auftrag mit einem Skript-Task erstellen, der dann den Auftrag im Projekt startet

b) Eine "Warteschleife" im Skript einbauen, die bei einem fehlgeschlagenen Lock eine Zeit wartet und dann erneut versucht (mit einer begrenzten Zahl von Versuchen)

Wobei das letztlich auch nicht besser ist, als einen SA zu öffnen und den Auftrag von dort zu starten...

Um zu verhindern, dass der Auftrag aus dem ServerManager gestartet wird, könntest du höchstens einen Skript-Task an den Anfang setzen, der "testweise" ein project.lock() macht und bei einer Exception den Auftrag mit einer entsprechenden Fehlermeldung im Log abbricht.

Viele Grüße

Michael

0 Kudos