aVogt
Returning Creator

FS5: User aus Auftrag mit einer Executable

Hallo, ich habe eine Executable (die soll aus dem FileSystem u.a. Dateien importieren) erstellt. Der Aufruf klappt. Wenn ich den Auftrag (in dem die Executeable aufgerufen wird) manuell ausführe wird der Auftrag unter dem Nutzer System ausgeführt. Ich hatte erwartet, dass ich den Nutzer bekomme, der auch den Auftrag auführt. ScheduleContext context = (ScheduleContext) args.get("context"); ServerConnection connection = (ServerConnection) args.get("connection"); connection.getUser() => SYSTEM (SYSTEM) Wenn ich bei dem Auftrag eine eigene Verbindung angebe, erhalte ich auch den Nutzer, der angegeben wurde. Da der Auftrag auch manuell ausgeführt werden soll, benötige ich den User, der den Auftrag ausgeführt hat. Wie komme ich an diesen heran? FS: 5.0.210.55494 Grüße Andreas

0 Kudos
5 Replies
thmarx
I'm new here

Hallo,

an den von dir gewünchten User kommst du nur über eine Umweg:

user = context.getTask().getScheduleEntry().getRunningEntries().get(0).getUser();

Das hat zumindest in meinen Skript funktioniert.

Viele Grüße

Thorsten

0 Kudos
aVogt
Returning Creator

Hallo Torsten,

danke. Somit komme ich an den User.

Ich habe allerdings noch ein Problem:
Ich benötige noch den userService. Bei Aufträgen, die im Projekt etwas ändern sollen, hole ich mir den über die connection (connection.getProjectById(context.getProject().getId()).getUserService());).
Da über die connection der AdminUser kommt, bekomme ich von diesem den UserService. Der AdminUser hat keine Änderungsrechte. Somit können z.B. Medien nicht ausgetaucht werden.

Meldung: changes not allowed for current connection

Hole ich den userService über den Context (User System), erhalte ich bei der Änderung von Medien die Meldung: read only store. Der SystemUser hat natürlich auch keine Rechte in dem Projekt.

Wie komme ich an den richtigen UserService?

Grüße
Andreas

0 Kudos

Hallo Andreas,

konntest du das Problem schon lösen?

Ich glaube, es gibt keine Möglichkeit, die für eine User den entsprechenden UserService zu holen, ohne dich vorher als diese Benutzer beim System anzumelden.

D.h. du  musst vorher über den ConnectionManager mit genau diesemUser eine Verbindung zu FirstSpirit aufbauen.

Viele Grüße

Thorsten

0 Kudos
aVogt
Returning Creator

Hallo Torsten, ich habe erst mal andere Aufgaben, deswegen habe ich daran nicht mehr weitergearbeitet. Da der Auftrag manuell von mehreren Usern ausgeführt werden kann, sollte der Nutzer ja schon am FS angemeldet sein. Ich müsste, wenn ich es richtig verstehe, in dem Auftrag eine neue Verbindung zu FS aufbauen (mit dem Nutzer, der den Auftrag ausführt - geht dass ohne, dass ich das PW kenne? - habs noch nicht probiert) und dann die Executable mit der eben aufgebauten verbindung aufrufen? Grüße Andreas

0 Kudos

Hallo zusammen,

wir haben für solche Zwecke einen technischen User angelegt der in den Aufträgen (bspw. zeitgesteuerte Freigaben / Löschungen) als Benutzer über die Auftragseigene Verbindung eingerichtet ist. Dieser Benutzer muss nur alle benötigten Rechte in dem Projekt haben, bei uns ist dieser Benutzer in der Admin Gruppe des entsprechenden Projektes - fertig.

Somit würden Sie über  

  context.getTask().getScheduleEntry().getRunningEntries().get(0).getUser();

an den aufrufenden Benutzer kommen und über  

  context.get("connection").getProjectById(0815).getUserService();  

an den UserService mit den Rechten des technischem Benutzer.

Beste Grüße,

Hendrik

0 Kudos