Autor Thema: Lotus Script Agent periodisch ausführen und debuggen  (Gelesen 1713 mal)

Offline Rütten

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Mir stellt sich folgendes Problem:
Ich habe mit Lotus Script einen Agenten geschrieben, der aus einem Ordner alle dort liegenden memos durchsucht und auf ein bestimmtes Subject hin, Antwortmails generiert und versendet.
Gut - das klappt soweit.

Wenn ich diesen Agenten nun periodisch (alle 30 Min. z.B.) ausführen lasse, dann funktioniert er nicht. Das Protokoll behauptet zwar, dass er ausgeführt wurde, aber er tat einfach nichts.

Wenn ich den Agenten direkt starte (mit oder ohne Debugger), dann funktioniert er einwandfrei.

Gibt es da Tricks oder Dinge die zu beachten wären bei periodischer Ausführung von Agenten?

Ratlos ..... Andreas

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Lotus Script Agent periodisch ausführen und debuggen
« Antwort #1 am: 03.04.03 - 17:39:19 »
Poste mal den Code hier; meistens liegt es daran, daß du versuchst Frontend Methoden im Backend auszuführen.

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Rütten

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Lotus Script Agent periodisch ausführen und debuggen
« Antwort #2 am: 03.04.03 - 17:42:57 »
here comes the sun ... ähh...code:

Sub Initialize
   
   Const SuchSubject="Bestellung Normen per Autorequest"
   Const FolderBearbeiten="AutoAnforderung"
   Const FolderErledigt="AutoAnforderung\Erledigt"
   
   Dim dateTime As New NotesDateTime( "01/01/90" )       'notwendig für selection-Methode
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim doc3 As NotesDocument
   Dim reply As NotesDocument
   Dim item As NotesItem
   Dim uidoc As notesuidocument
   Set db = session.CurrentDatabase
   Set doc3 = db.CreateDocument
   Set uidoc=workspace.currentdocument
   Set View  = db.GetView( FolderBearbeiten)
   Set doc = view.GetFirstDocument
'If doc.HasItem("Subject") Then
   While Not(doc Is Nothing)
      titel=doc.subject(0)
      If titel<>SuchSubject Then Exit Sub
      wer$=doc.from(0)
      MyBody=doc.body
      wo=Instr(1,MyBody,":")
      Dok1$=Left(MyBody,wo-1)
      Dok2$=Right(MyBody,Len(MyBody)-wo)
      Dim db2 As New NotesDatabase( "", "" )
'         If Not db2.OpenByReplicaID( "LN02", "41256C2300376F24" ) Then
      If Not db2.OpenByReplicaID( "", "C1256CF3004BC5C4" ) Then
         Messagebox  "Datenbank Normen auf LN02 konnte nicht geöffnet werden!"
         Exit Sub
      End If
      Print "Agent 'DokumentAnfrageNorm': Angeforderte Normen "& Dok1$ & Dok2$ & " werden gesucht"
      searchFormula$ = "SELECT @Contains(Dokumentnummer;" & """" &  Dok1$ & """" &  ") & " & " Dokumentnummer_1 = " &"""" & Dok2$ & """"
      Set collection2 = db2.Search( searchFormula$, dateTime, 0 )
      Anzahl=collection2.Count
      Dim  Doc2 As NotesDocument
      Set doc2 = collection2.GetNthDocument( 1 )
      Call doc2.CopyAllItems( doc3, True )
      Call doc3.ReplaceItemValue( "SendTo", wer$)
      Call doc3.Send( True )
      Print "Agent 'DokumentAnfrageNorm': Angefordete Normen versandt."
      Call doc.PutInFolder(FolderErledigt)
      Call doc.RemoveFromFolder( FolderBearbeiten)
      Print "Agent 'DokumentAnfrageNorm': Dokument nach " & FolderErledigt & " verschoben."
      Set doc = view.GetNextDocument(doc)
   Wend
'End If   
End Sub

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Lotus Script Agent periodisch ausführen und debuggen
« Antwort #3 am: 03.04.03 - 18:06:20 »
wie ich vermutet habe:

   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim doc3 As NotesDocument
   Dim reply As NotesDocument
   Dim item As NotesItem
   Dim uidoc As notesuidocument
   Set db = session.CurrentDatabase
   Set doc3 = db.CreateDocument
   Set uidoc=workspace.currentdocument

bei den fett gedruckten Zeilen verwendest du Frontend gedönse

dann verwendest du noch

collection2

die aber nirgendwo deklariert wird.
Lasse dann auch noch die Print Statements und die MsgBox weg; dann sollte das funzen.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Rütten

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Lotus Script Agent periodisch ausführen und debuggen
« Antwort #4 am: 03.04.03 - 18:22:37 »
Jou, danke, nach dem Posten sah ich auch, was für Altlasten ich da mitschleppe ....

Ich werde es morgen ausprobieren.

Print geht auch nicht in periodischen Scripts? Oder ist das nur vorsorglich?

Wenn die Hilfe so nützlich wie prompt ist (was ich vermute), sei überschüttet mit Dank.

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:Lotus Script Agent periodisch ausführen und debuggen
« Antwort #5 am: 03.04.03 - 18:40:50 »
Hi,

das Print-Statement kannst du in periodischen Agenten benutzen. Die Ausgaben von Print siehst du in der Log.nsf unter verschiedene Ereignisse.

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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz