Autor Thema: Agent RunOnServer Verständnisproblem  (Gelesen 5504 mal)

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Agent RunOnServer Verständnisproblem
« am: 26.06.13 - 14:32:12 »
Hallo,
in einer DB starte ich (manuell) einen Agenten der mir eine Datei liest und daraus neue Dokumente in der DB generiert. Leider ist mein Client blockiert bis der Agent durchgelaufen ist. Der Agent darf nur manuell gestartet werden.

Kann ich das Problem über den RunOnServer lösen? Verstehe leider diese Methode nicht.

Für eine Erklärung wäre ich sehr dankbar. In der Forumsuche oder in der Hilfe steht leider nichts genaues.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Agent RunOnServer Verständnisproblem
« Antwort #1 am: 26.06.13 - 14:43:47 »
RunOnServer blockiert genauso, weil das Script auf den Rückgabewert des Agenten wartet.

Dir hilft die Eigenschaft "Im Hintergrundthread des Clients ausführen" (englisch: "run in background client thread") weiter... Ein Agent, der so gestartet ist, blockiert den Client nicht.
Du kannst auch hier zusätzlich noch ein RunOnServer und einen zweiten Agenten benutzen, damit der eigentliche AgentenCode lokal am Server läuft und keine Netzwerkaktivitäten das ganze ausbremsen...

EDIT: ACHTUNG !!! Ein Agent, der per "RunOnServer" gestartet wird, kann nicht mehr beendet werden. Der läuft im Server- Thread ausserhalb des AgentenManagers und auch ausserhalb dessen Beschränkungen. Produzierst Du eine Endlosschleife, dann läuft der Agent, bis es zu einem Overflow kommt oder Du alternativ den Server neu startest... Das gilt auch, wenn man den aufrufenden Agenten im Client per Strg + C abbricht..
« Letzte Änderung: 26.06.13 - 14:47:09 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Agent RunOnServer Verständnisproblem
« Antwort #2 am: 26.06.13 - 15:29:37 »
Vielen, vielen Dank !

Noch eine Kleinigkeit, kann ein Teil des Scripts auch in einer ScriptBibliothek ausgelagert sein oder darf sich das ganze nur innerhalb der Agenten abspielen?

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Agent RunOnServer Verständnisproblem
« Antwort #3 am: 26.06.13 - 17:21:10 »
Klar, ich arbeite NUR mit Script- Bibliotheken
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: Agent RunOnServer Verständnisproblem
« Antwort #4 am: 20.12.16 - 12:02:38 »
Hallo Tode,

ich möchte ebenfalls einen Agenten am Server laufen lassen, ohne dass mein Client blockiert wird.

Ich habe dazu diesen alten Threat gefunden:

RunOnServer blockiert genauso, weil das Script auf den Rückgabewert des Agenten wartet.

Dir hilft die Eigenschaft "Im Hintergrundthread des Clients ausführen" (englisch: "run in background client thread") weiter... Ein Agent, der so gestartet ist, blockiert den Client nicht.
Du kannst auch hier zusätzlich noch ein RunOnServer und einen zweiten Agenten benutzen, damit der eigentliche AgentenCode lokal am Server läuft und keine Netzwerkaktivitäten das ganze ausbremsen...

Wenn ich dich richtig verstehe schlägst du ja einen Agenten vor, für den "Im Hintergrundthread des Clients ausführen" gewählt ist. In diesem Agenten erfolgt dann der eigentliche Aufruf "Agent.RunOnServer".

Ist das dann nicht doch ein wenig unsauber, wenn ich z.B. meinen Notes-Client neu starte während im Hintergrund noch ein Threat läuft, der auf die Rückmeldung des anderen Agenten wartet?

Wenn ich keine Rückmeldung benötige, wäre es doch "sauberer", über session.SendConsoleCommand einen "tell amgr run" am Server abzusetzen?

Grüße,
Gregor

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Agent RunOnServer Verständnisproblem
« Antwort #5 am: 20.12.16 - 15:47:52 »
Moin

Nur, dass da evtl. die Rechte im Weg stehen, da nicht jeder Consolen Command schicken kann.....
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: Agent RunOnServer Verständnisproblem
« Antwort #6 am: 20.12.16 - 15:52:53 »
Moin

Nur, dass da evtl. die Rechte im Weg stehen, da nicht jeder Consolen Command schicken kann.....

Das kann man ja auch wieder über einen zweiten Agenten machen. User ruft Agent 1 auf, dieser hat die entsprechenden Ausführungsrechte und setzt dann den Konsolenbefehl ab. Habe das heute hier so gemacht und das scheint zu laufen.

Offline Pyewacket

  • Senior Mitglied
  • ****
  • Beiträge: 310
  • Geschlecht: Männlich
Re: Agent RunOnServer Verständnisproblem
« Antwort #7 am: 22.12.16 - 07:05:01 »
Kleiner Praxistip.
Da eine Rückmeldung fehlt muss man programmtechnisch verhindern dass der
Agent auf dem Server mehrfach gestartet wird und parallel läuft. Das geht
z.B. mit Semaphorfiles oder den Lock-Funktionen von Lotusscript. Je nachdem
was der Agent macht kann das sonst sehr schnell zum Desaster führen.

Peter
ATOS.org - Feel the music!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz