Autor Thema: Zeitgesteuerter Agent funktioniert nicht, bei manuellem Aufruf schon  (Gelesen 3000 mal)

Offline mark_us

  • Frischling
  • *
  • Beiträge: 7
Hallo zusammen,

ich habe folgendes Skript welches die Dokumente in meiner DB durchsucht ob für den morgigen Tag ein Kontrolltermin ansteht:

Code
Option Public
Option Declare
Use "SendMailDocLink"

Sub Initialize
End Sub
%REM
	Sub check_deadline
	Description: check documents for new deadlines and generate mail
%END REM
Public Sub check_deadline
	'global vars
	Dim session As New NotesSession
	Dim dDoc As NotesDocument
	Dim rtitem As NotesRichTextItem
	Dim colAll As NotesDocumentCollection
	Dim sSearch As String, sRec As string
	Dim sTopic As String, sBearb As String, sIssue As String, sSubject As String
	Dim iY As Integer, iM As integer, iD As Integer
	Dim sDatTom As String
	
	Set db = session.CurrentDatabase
	
	iY = Year(Date$)
	iM = Month(Date$)
	iD = Day(Date$) + 1
	sDatTom = DateNumber(iY,iM,iD)
	
	sSearch = {SELECT A_Kontrolle=(@Date(} & iY & ";" & iM & ";" & iD & {))}	
	Set colAll = db.Search(sSearch,Nothing,0)
	print "Gefundene Dokumente: " & colAll.Count
	
	Set dDoc = colAll.GetFirstDocument()
	While Not (dDoc Is Nothing)
		sTopic = "Es steht ein Kontrolltermin für ein Teilprojekt an am " + sDatTom
		sIssue = "Thema ist " + (dDoc.GetItemValue("A_Bez")(0))
		sSubject = "Kontrolltermin steht morgen an!"
		sRec = (dDoc.Getitemvalue("A_Verantwortl")(0))
		SendNotice sTopic, sIssue, sRec, sRec,  sSubject, dDoc
		Set dDoc = colAll.GetNextDocument(dDoc)
	Wend
	
	
End Sub

Dieses Skript ruft ein Agent zeitgesteuert auf, laut Protokoll läuft er auch brav jeden Morgen um 6. Eine Mail wird jedoch nicht versendet. Rufe ich den Agent manuell auf, bekomme ich meine Benachrichtigung.

Jemand eine Idee woran es liegen könnte?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Was gibt denn

Code
print "Gefundene Dokumente: " & colAll.Count

auf der Console aus?

Wenn > 0, dann solltest Du dir mal Deine "SendNotice" routine ansehen.

** ein bisschen error handling ist sicher auch nicht falsch ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Ralf_B

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
Bitte auch beachten, dass der Signer eine Mailbox haben muss wenn nicht entsprechend ein Notes.ini Parameter gesetzt ist.

Offline mark_us

  • Frischling
  • *
  • Beiträge: 7
Was gibt denn

Code
print "Gefundene Dokumente: " & colAll.Count

auf der Console aus?

Wenn > 0, dann solltest Du dir mal Deine "SendNotice" routine ansehen.

** ein bisschen error handling ist sicher auch nicht falsch ...

Meinst du die Serverkonsole? Am Client jedenfalls werden die gefundenen Dokumente angezeigt, aber da funktioniert ja auch der Mailversand.

Offline mark_us

  • Frischling
  • *
  • Beiträge: 7
Bitte auch beachten, dass der Signer eine Mailbox haben muss wenn nicht entsprechend ein Notes.ini Parameter gesetzt ist.

Der Signer bin momentan ich selber, also sollte das kein Problem sein!

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Bau mal ein Meldungen für den Agenten ein:

'DE steht für DesignElement   
Dim dtDEStart As NotesDateTime
Dim dtDEEnde As NotesDateTime
Dim strDEName As String
   
strDEName = "So heisst der Agent"
Set dtDEStart = New NotesDateTime(Now)   
Print "Start " & strDEName + " " & Format(Now, "yyyy-mm-dd hh:nn:ss")

Hier kommen dann weitere Ausgaben   

ende:
Set dtDEEnde = New NotesDateTime(Now)
Print "Laufzeit: " & CStr(dtDEEnde.TimeDifferenceDouble(dtDEStart))
Print "Ende " & strDEName & "  "  & Format(Now, "yyyy-mm-dd hh:nn:ss")
Exit Sub

Die "Print"-Ausgaben siehst du dann im Serverlog.
Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline maxritti

  • Senior Mitglied
  • ****
  • Beiträge: 490
Was gibt denn

Code
print "Gefundene Dokumente: " & colAll.Count

auf der Console aus?

Wenn > 0, dann solltest Du dir mal Deine "SendNotice" routine ansehen.

** ein bisschen error handling ist sicher auch nicht falsch ...

Meinst du die Serverkonsole? Am Client jedenfalls werden die gefundenen Dokumente angezeigt, aber da funktioniert ja auch der Mailversand.

Genau das meint eknori. Denn da besteht ja auch das Problem oder?
Zumindest das Print ... sollte auf der Konsole auftauchen. Wenn nicht, hast du eventuell ein anderes Problem dass der Agent gar nicht startet.
„Irgendetwas“ sollte zumindest auf der Konsole vom Server zu sehen sein, zu dem Zeitpunkt, wo der Agent rennen soll.
Da solltest du mal schauen.

Offline mark_us

  • Frischling
  • *
  • Beiträge: 7
Also da hab ich wieder was gelernt, an die Serverkonsole hat ich gar nicht gedacht. Der relevante Teil sieht nun so aus:

Code
[15C0:0002-15C4] 20.12.2019 14:10:34   AMgr: Start executing agent 'check_schedule' in '***\PKMF.nsf' by Executive '3'
[15C0:0002-15C4] 20.12.2019 14:10:34   AMgr: 'Markus ***/***/**' is the agent signer of agent 'check_schedule' in '***\PKMF.nsf'
[15C0:0002-15C4] 20.12.2019 14:10:34   AMgr: 'Agent 'check_schedule' in '***\PKMF.nsf' will run on behalf of 'Markus ***/***/**'
[15C0:0002-15C4] 20.12.2019 14:10:34   AMgr: Agent ('check_schedule' in '***\PKMF.nsf') error message: Error creating product object

Ich habe in einem Skript einige Verweise auf ui Elemente drin, die muss ich nun noch eleminieren. Dann sollte es laufen, hoffe ich.........
Ansonsten melde ich mich  nochmal  ;)

Vielen Dank!

Offline maxritti

  • Senior Mitglied
  • ****
  • Beiträge: 490
Genau.
Wenn die weg sind klappt es.
Ui geht halt nicht im Hintergrund.

Offline mark_us

  • Frischling
  • *
  • Beiträge: 7
Genau.
Wenn die weg sind klappt es.
Ui geht halt nicht im Hintergrund.

So ist es  ;D

Gerade ein Mail bekommen  :)

Vielen Dank an alle!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz