Autor Thema: Agent-Ausführung auf ein akt. Dok.  (Gelesen 2148 mal)

Offline Hugi23

  • Frischling
  • *
  • Beiträge: 30
  • Geschlecht: Männlich
  • Dietmar
Agent-Ausführung auf ein akt. Dok.
« am: 27.09.06 - 08:51:15 »
vorab: Ich hab wirklich gesucht, aber ich war wahrscheinlich zu blöd, die entscheidenden Keywords in die Suchzeile einzutragen. Und bei derzeit 6928 Themen mit 47019 Beiträgen in dieser Rubrik wäre es absurd, seitenweise zu suchen. In der Hoffnung, dass noch jemand auf diesem Planeten mit Notes / Domino R5 arbeitet, hier mein Problem:
In einer Datenbank (DB1) wird ein Nur-Lese-Dokument (SaveOptions=0) erstellt. Dort werden durch den Nutzer Vorgaben gemacht und dann klickt er auf eine Schaltfläche, wodurch zwei Agenten abgearbeitet werden und das Dokument inhaltlich aktualisiert wird. Soweit, so schön - klappt alles, nix dran änderbar.
Den Zwischenschritt mit dem "Vorgaben-machen" möchte ich überspringen, da schon beim Öffnen faktisch feststeht, welche Vorgaben verwendet werden sollen. Dies soll in einer anderen Datenbank (DB2) erfolgen. Durch den Aufruf sollen folgende Aktionen in LotusScript ausgeführt sollen:
- öffne oben genannte Datenbank DB2
- erstelle besagtes Nur-Lese-Dokument als Backend-Dok.
- befülle die Vorgaben
- mache das Nur-Lese-Dokument zum Frontend-Dok. (UI)
- führe die zwei Agenten aus
- aktualisiere das Nur-Lese-Dokument
Ich habe mich in zwei Etappen vorgearbeitet. Erstmal wurden die Aktionen bis zum "mache das Nur-Lese-Dokument zum Frontend-Dok." ausgeführt. Alles erfolgreich. Das Dokument wird genauso angezeigt wie gewünscht, die Vorgaben sind allesamt ausgefüllt. Der Klick auf die Schaltfläche führt zur gewünschen Anzeige.
In der zweiten Etappe bin ich an der Ausführung der Agenten gescheitert. Hier der ScriptCode.
' setze DB-Instanz
Set db1 = New Notesdatabase (servername, filename)
' erstelle "Nur-Lese-Dok." als Backend-Dok. in der Datenbank
Set doc = New NotesDocument (db1)
' Vorgaben im Backend setzen
' verborgene Felder berechnen (die sich sonst beim Erstellen des Dok. automatisch ergeben)
doc.ComputeWithForm False, True
' öffne die DB1 im Frontend
uiws.Opendatabase servername, filename, viewname
' mache das Backend-Dok. zum Frontend-Dok.
Set uidoc = uiws.EditDocument (True, doc)
uidoc.Refresh
' Ende erste Etappe
' zum Test: Exit Function
'
' Instanziieren des ersten Agenten und Ausführung
Set agent = db1.GetAgent (agentname1)
agent.Run
uidoc.Refresh
' Instanziieren des zweiten Agenten und Ausführung
Set agent = db1.GetAgent (agentname2)
agent.Run ' sorry - diese Zeile fehlte beim ersten Posten - Danke @ DerAndre
uidoc.Refresh

Wo liegt mein Denkfehler? So wie sich das Frontend darstellt, wird der erste Agent ausgeführt, der zweite Agent nicht, denn letzterer liefert Ausschriften in der Statuszeile - genau die erfolgen aber nicht. Dennoch - weil ja der erste Agent läuft - sollte die Art und Weise des Instanziierens und des Aufrufs nicht total verkehrt sein. Beide Agenten sind Script-Agenten vom Typ "einmal ausführen".
Ich partizipiere eher still an diesem Super-Forum und finde fast immer eine Lösung ohne zu posten. Meine Bitte: Wenn ich also schon mal was poste, möchte ich dann aber nicht - wie beim letzten Mal - seitenweise Rechtfertigungen nachliefern, warum ich so und nicht anders an die Sache herangegangen bin (bzw. herangehen konnte / durfte etc. pp.).
« Letzte Änderung: 27.09.06 - 09:33:26 von Hugi23 »
Dietmar
Es gibt nichts, was mit Lotus Notes nicht geht.
(nicht von mir, aber wahr)

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #1 am: 27.09.06 - 09:01:44 »
da fehlt ein agent.run...

Nach dem zweiten Agenten
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Hugi23

  • Frischling
  • *
  • Beiträge: 30
  • Geschlecht: Männlich
  • Dietmar
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #2 am: 27.09.06 - 09:32:23 »
Sorry, "DerAndre" hat natürlich Recht. Aber im Original-Code ist das zweite "Agent.Run" drin. Ich korrigiere das Thema. Danke!
« Letzte Änderung: 27.09.06 - 09:34:22 von Hugi23 »
Dietmar
Es gibt nichts, was mit Lotus Notes nicht geht.
(nicht von mir, aber wahr)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #3 am: 27.09.06 - 20:09:44 »
... hast du schon mal versucht den 2. Agenten durch den ersten Agenten zu starten?
... hast du im Log eventuelle deine Print-Anweisungen?

Toni
Grüßle Toni :)

Offline Hugi23

  • Frischling
  • *
  • Beiträge: 30
  • Geschlecht: Männlich
  • Dietmar
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #4 am: 28.09.06 - 07:57:58 »
Wie gesagt funktioniert die Abarbeitung der beiden Agenten im direkten Umfeld der DB. Grundsätzlich habe ich auch Einfluss auf das Design dieser DB1. Aber ich wollt es erstmal unangetastet lassen. Die Idee, den zweiten Agenten durch den ersten Agenten zu starten, habe ich "gespeichert".
Die Print-Anweisungen habe ich nicht im Log, weil ich noch mit R5 arbeite. Da ist es bei Frontend-Agents leider noch nicht möglich, den Statuszeilen-Inhalt im Log des Clients abzulegen (es sei denn, man forciert das entsprechend im Agent-Code :-).
Dietmar
Es gibt nichts, was mit Lotus Notes nicht geht.
(nicht von mir, aber wahr)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #5 am: 28.09.06 - 08:11:54 »
Die Print-Anweisungen habe ich nicht im Log, weil ich noch mit R5 arbeite. Da ist es bei Frontend-Agents leider noch nicht möglich, den Statuszeilen-Inhalt im Log des Clients abzulegen (es sei denn, man forciert das entsprechend im Agent-Code :-).

Genau das hat Toni auch gemeint. Print - Statements innerhalb des Agenten.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Hugi23

  • Frischling
  • *
  • Beiträge: 30
  • Geschlecht: Männlich
  • Dietmar
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #6 am: 28.09.06 - 08:28:39 »
Der erste Agent besitzt keine Prints. Der zweite Agent besitzt mehrere Prints. Wenn ich im direkten Umfeld der DB1 die Agenten durch Klick auf die Schaltfläche starte, erfolgen für den zweiten Agenten die Prints in der Statuszeile.
Fragt mich jetzt nicht, woher ich denn dann weiß, dass der erste gelaufen ist :-). Ich sehe es am Inhalt des Nur-Lese-Dokuments. Dort werden Inhalte angezeigt, die ohne die Abarbeitung nicht da wären.
Zum Einbringen von Ausschriften in den ersten Agenten bzw. um generell die Ausschriften in das Log zu verlagern, müsste ich ja auch ins Agent-Design eingreifen. Eben das wollte ich ja erstmal nicht tun...
Dietmar
Es gibt nichts, was mit Lotus Notes nicht geht.
(nicht von mir, aber wahr)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #7 am: 28.09.06 - 08:34:43 »
Zum Einbringen von Ausschriften in den ersten Agenten bzw. um generell die Ausschriften in das Log zu verlagern, müsste ich ja auch ins Agent-Design eingreifen. Eben das wollte ich ja erstmal nicht tun...

Ohne das wird's wohl nicht gehen. Wo liegt denn das Problem im ersten Agenten an der relevanten Stellen Prints einzubauen? Du tust dich mit der Fehleranalyse dann erheblich leichter.

Ich habe allerdings immer noch nicht so ganz verstanden wo jetzt dein eigentliches Problem liegt.

Das Problem, dass der zweite Agent nicht läuft, ist ja anscheinend mit der Zeile agent.run gelöst.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Hugi23

  • Frischling
  • *
  • Beiträge: 30
  • Geschlecht: Männlich
  • Dietmar
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #8 am: 28.09.06 - 09:13:54 »
Der hier gepostete Script-Code ist logo nicht der originale Code. Die Variablen usw. sind alle zur Verständlichkeit vereinfacht. Beim "Übertragen" hatte ich das zweite Agent.Run vergessen. Im originalen Script ist das zweite Agent.Run von Anfang an drin gewesen. War also nur 'ne Irritation, aber nicht die Lösung.

Wenn's denn nur mit Anpassen der Agents geht, dann brauch ich ja nicht erst mit Ausschriften zu jonglieren, dann könnte ich ja gleich die Idee vom Toni (ata) umsetzen und das Script des ersten Agents so ändern, dass dieser den zweiten Agent aufruft.

Ich hatte "gehofft", dass hier generelle Bedenken über mein Script geäußert werden, so nach dem Motto: "Auf diese Art und Weise geht es nicht..." Zum Beispiel hätte es ja sein können, dass es generell nicht geht, einen Agent über die Backend-Klasse ("Set agent = db1.GetAgent ...") zu instanziieren und dann im per Script gesetzten Frontend-Umfeld eines Dokuments zu starten. Klar: dass genau das doch geht, habe ich mir ja "selbst" bewiesen, indem eben der erste Agent läuft.

Okay, dann werde ich mal in sauren Apfel beißen und die Agenten korrigieren. Das ist nur nicht so einfach, wie es hier den Anschein hat. Man kennt das ja: "Design ist ausgeliefert" und "Designer war jemand anderes" und "Korrektur bedarf erst Absprache" und "Wieso soll denn das nun geändert werden?" und und und.
Dietmar
Es gibt nichts, was mit Lotus Notes nicht geht.
(nicht von mir, aber wahr)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Agent-Ausführung auf ein akt. Dok.
« Antwort #9 am: 29.09.06 - 13:05:42 »
... eben ganz aus dem Leben gegriffen...

Toni  ;D ;D ;D
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz