Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: fritandr am 26.04.05 - 08:26:20

Titel: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: fritandr am 26.04.05 - 08:26:20
Hallo,

ich habe im Moment keinen konkreten Bedarf. Aber seit einigen Tagen geht mir immer mal wieder eine Frage durch den Kopf, die ich gerne mal an Euch weiterreichen möchte.

Ich kann ja seit ND6 einen lokalen Agenten auf dem Client im Hintergrund ablaufen lassen. Vorteil für mich ist dabei, daß ich noch mit dem Client weiterarbeiten kann, während der Agent läuft.
Dabei muß der Agent einige Bedingungen erfüllen (keine Interaktion mit dem User, ...). Mal vorausgesetzt, ich habe diese Bedingungen erfüllt, funktioniert das Prima.

Und jetzt stelle ich mir folgende Situation vor.
Ich möchte meinem Benutzer die Möglichkeit geben, einen Agenten auf seinem Client mal im Hintergrund auszuführen und mal im Vordergrund. Kann ich das irgendwie steuern (evtl. durch einen anderen Agenten, der meinen ursprünglichen mal so und mal so aufruft) oder brauche ich dann zwei, im Prinzip identische Agenten, mit unterschiedlichen Eigenschaften?

Bin schon auf Eure Antworten gespannt.

Viele Grüße
Andreas
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: Lossa am 26.04.05 - 09:36:29
Hi,

es gibt mehrer Möglichkeiten:

1. In den Eigenschaften des Agents wird festgelegt, das dieser im Background laufen soll, dann macht er das immer => 2 Agenten sind notwendig, 1x vordergrund, 1x Hintergrund.

2. Der Agent wird z.B. per @Command aufgerufen:
@Command([ToolsRunMacros;"Agent")
@Command([[ToolsRunBackgroundMacros];"Agent")
=> Ein Agent zwei Auswahlmöglichkeiten.
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: Semeaphoros am 26.04.05 - 10:02:47
Das ist die technische Seite, die Andreas bestimmt auch wusste  ;)

Interessant werden die Ansätze, wie man einen solchen Dualismus sinnvoll nutzt. Vordergrund macht doch eigentlich nur dann richtig Sinn, wenn man dabei irgend eine Interaktion mit dem Nutzer mitliefert und sei es schon nur eine Fortschrittsanzeige. Und gerade so etwas macht es interessant, denn dann muss ein Mechanismus im Agenten drin sein, der den Vordergrund-Agenten feststellen lässt, wie weit der hintergrundfähige Agent schon ist, anders ausgedrückt, interesssant wäre, wie man eine solche Schnittstelle zwischen einem hintergrundfähigen Agenten und einem "vordergründigen" Steueragenten realisiert.
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: Lossa am 26.04.05 - 10:06:43
Hi,

leider werden die Hintergrundagent gekappselt ausgeführt, somit gibt es zumindest keine Client (Script, Formel) implementation um interaktionen zw. Hintergrundagents und Frontendagents durchzuführen. Der Umweg über "Kommunikations"Dokumente und entsprechenden Warteschleifen auf bestimmte Informationen des Hintergrund- oder Vordergrundagenten wäre ein denkbare Lösung.
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: fritandr am 26.04.05 - 11:09:19
2. Der Agent wird z.B. per @Command aufgerufen:
@Command([ToolsRunMacros;"Agent")
@Command([[ToolsRunBackgroundMacros];"Agent")
=> Ein Agent zwei Auswahlmöglichkeiten.

Hallo,

zuerst danke für die Antwort. Aber was das @Command([ToolsRunBackgroundMacros]) angeht, bin ich nicht so ganz einverstanden.
Meine Designerhilfe sagt mir dazu:
Zitat
Runs all of the database's scheduled agents, regardless of when they are scheduled to run. The agents will then run as usual at their regularly scheduled times.
Syntax
@Command( [ToolsRunBackgroundMacros] )
Usage
This command executes after all @functions. Use @Command([RunScheduledAgents]) to execute immediately.

Ich habe das so verstanden, daß ich durch das ToolsRunBackgroundMacros alle scheduled Agents in meiner DB starte. Nicht aber gezielt den einen, den ich gerade ausführen möchte. Auch sehe ich keine Beschreibung, wonach ich bei ToolsRunBackgoundMacros einen Agentennamen als zusätzlichen Parameter angeben kann.
Damit entspricht das nicht dem Ergebnis, wie wenn ich für einen einzelnen Agenten die Eigenschaft "läuft im Background" setze, oder.

Sichtlich verwirrt
Andreas
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: Semeaphoros am 26.04.05 - 11:11:40
Lossa:

Hm, das tönt mir eigentlich zu sehr hinter dem eigenen Rücken durch. Ich würde jetzt mal im Hauptagenten Userexits vorsehen, die dann je nach aufrufendem Agenten unterschiedlich übernommen werden.

Oder mit einer Klasse die Funktionalität implementieren und dann gewisse Methoden durch Ueberladen je nach Vorder- oder Hintergrund anders ausführen lassen.

In beiden Fällen gibt es zwei unterschiedliche Aufrufagenten für Vorder- und Hintergrund, die aber nix anderes machen als Steuerfunktionen zu übernhemen, also keine eigene Funktionalität implementieren.
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: fritandr am 26.04.05 - 13:34:20
In beiden Fällen gibt es zwei unterschiedliche Aufrufagenten für Vorder- und Hintergrund, die aber nix anderes machen als Steuerfunktionen zu übernhemen, also keine eigene Funktionalität implementieren.

Und wie sehen diese Agenten (bezüglich des Aufrufes des einen, auszuführenden Agenten) aus? Wie weiter oben (Antwort #4) schon geschrieben, funktioniert das ja über ToolsRunBackgroundMacros nicht. Oder doch? Finde ich nur den passenden Hinweis in der Hilfe nicht? Kann mal einer die Leitung wegnehmen, auf der ich anscheinend sitze?

Viele Grüße
Andreas
Titel: Re: lokale Agenten im Hintergrund/Vordergrund?
Beitrag von: Semeaphoros am 26.04.05 - 14:33:26
Ueber Script und die NotesAgent Klasse .... da muss ja wohl sowieso noch mehr gemacht werden .... allenfalls über @Command ToolsRunMacro, wenn nix anderes gemacht werden muss. Ob das jetzt Vord- oder Hint-ergrund ist, wird durch Aufruf des entsprechenden Steuer-Agenten bestimmt