Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Rütten am 03.04.03 - 17:29:33
-
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
-
Poste mal den Code hier; meistens liegt es daran, daß du versuchst Frontend Methoden im Backend auszuführen.
eknori
-
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
-
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.
-
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.
-
Hi,
das Print-Statement kannst du in periodischen Agenten benutzen. Die Ausgaben von Print siehst du in der Log.nsf unter verschiedene Ereignisse.
Axel