Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Klafu am 28.04.09 - 10:19:24

Titel: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Klafu am 28.04.09 - 10:19:24
Hallo zusammen,
ich habe einen Agenten, der nach Eingang neuer Mail das Attachment (pdf) aus der Mail entfernen soll und auf einem Fileserver ablegt.

Wenn ich den Agenten manuell starte, dann funktioniert es. Nur nach Eingang einer neuen Mail gibt er kein Lebenszeichen von sich.
Woran kann das liegen ?

Agent wurde mit der ServerID signiert und wird im Administrator unter Server > Status > Agenten aufgeführt

Code
Sub Initialize
	Dim session As NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim dc As NotesDocumentCollection
	Dim fpath As String
	
	Set session = New NotesSession
	Set db = session.CurrentDatabase
	fpath = "\\Server\eingangsrechnungen$\"
	Set dc = db.UnprocessedDocuments
	Set doc =dc.GetFirstDocument()
	While Not(doc Is Nothing)	
		Set rtitem = doc.GetFirstItem( "Body" )
		If (rtitem.Type = RICHTEXT) Then
		Forall o In rtitem.EmbeddedObjects	
			Call o.ExtractFile(fpath & o.Source)
			Call session.UpdateProcessedDoc( doc )
		End Forall
		Set doc=dc.GetNextDocument(doc)
	End If	
	Wend
End Sub

Edit: Gehen sollte es ja
http://atnotes.de/index.php/topic,39788.msg253088.html#msg253088 (http://atnotes.de/index.php/topic,39788.msg253088.html#msg253088)

gruß Chris
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Steffen am 28.04.09 - 10:23:40
meine Vermutung:
du wirst wahrscheinlich das problem haben, dass kein Netzwerkzugriff erlaubt ist (für die Server.id)
-> lokal auf dem SErver oder mit einem gemappten Laufwerk wirds funktionieren
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Klafu am 30.04.09 - 11:41:34
Eigentlich sollten diese i.O. sein.

Kann man nicht irgendwie die Funktion des Agenten prüfen ?
Also, ob er wirklich startet ?

Gruß Chris
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Demian am 30.04.09 - 11:45:53
du kannst im Designer mit der rechten Maustaste das Protokoll öffnen. Da sieht man, wann oder ob der Agent gelaufen ist. Ansonsten guck dir die Klasse Noteslog mal an.
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: ascabg am 30.04.09 - 11:46:45
Logfile des Servers

und den Agenten um eine Zeile "Print "Agent ist gestartet" erweitern

Hilft zumindest bei mir immer wieder


Andreas
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Lancelot am 30.04.09 - 13:05:21
Wer ist in den Benutzervorgaben als Owner eingetragen?

Ich habe die Erfahrung gemacht, wenn ich den Agent mit dieser ID speicher, dann läuft der Agent ohne Probleme an.
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Klafu am 30.04.09 - 15:05:43
Okay, also Laut Agentenprotokoll läuft der Agent. Aber nur wenn in der MailDB ich als Owner hinterlegt bin und der Agent ebenfalls von mir signiert ist.

Ein Print wird mir jedoch nicht ausgegeben. Und der Anhang auch nicht exportiert
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Lancelot am 30.04.09 - 15:11:55
Wie sieht es mit Deinen Berechtigungen auf dem Fileserver bzw. auch auf dem Ordner
wo Du das File ablegen möchtest aus?
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: ascabg am 30.04.09 - 15:21:45
Nochmals zu den Logs.

Was hat der Agent denn in die Log.nsf des Servers geschrieben?
Und auch nur hier wuerden eventuelle Meldungen die mit print ausgegeben werden auch auftauchen.

Somit haettest du zumindest die moeglichkeit herauszubekommen, an welcher Stelle der Agent die Probleme verursacht, sofern er denn auch laeuft.


Andreas
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Klafu am 30.04.09 - 16:06:02
Hallo.
Mittlerweile bekomme ich ein Notes error: Access to data denied.
Wenn ich den Pfad auf einen lokal Ordner änder klappts.
Dann liegts wohl an der Schnittstelle zwischen dem Notes Server und dem File-Server.
Der Notes-Server ist aber mit dem 'Maschinenname' auf den File-Server mit Lese und Schreib Rechte ausgestattet
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Klafu am 05.05.09 - 13:17:26
Nun klappt alles, danke für eure Tipps.

Ich würde gerne explizit bei dem Call o.ExtractFile(fpath & o.Source) ein Errorhandling einbauen, falls das Exportieren nicht klappen sollte, das die Mail in einen Error Ordner verschoben wird.
Reicht es wenn ich dahinter ein On Error hinsetz ?

Gruß
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: koehlerbv am 05.05.09 - 13:19:54
Hinter der Sprungmarke von On Error Goto sollte dann aber auch passender Code stehen  ;)

Bernhard
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: ascabg am 05.05.09 - 13:20:21
Dahinter wird nicht allzuviel bringen (da ist es ja schon zu spät).

Andreas

Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: koehlerbv am 05.05.09 - 13:50:19
Nö, dahinter ist schon richtig (hinter der Sprungmarke!) - erst wenn der Fehleraufgetreten ist, soll ja die Reaktion erfolgen.

Bernhard
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: ascabg am 05.05.09 - 13:59:25

@Bernhard
Ich denke es soll so gehen

Code
On Error GoTo ErrorHandler1

Code
(wenn hier Fehler im Code auftreten => gehe zu ErrorHandler1

On Error GoTo ErrorHandler2

Code
(wenn hier Fehler im Code auftreten => gehezu ErrorHandler2)

ErrorHandler1:
  Code

ErrorHandler2:
  Code

Liege ich damit etwa falsch?

Dann haette ich in den letzten Jahren der Programmierung (nicht nur LN)
alles in Bezug auf eine Fehlerbehandlung falsch gemacht.

Andreas
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Lancelot am 05.05.09 - 14:05:52
Hi Andreas,

Deine Methode ist natürlich eine Ecke besser, weil so die Fehler vor und danach behandelt werden.
Da hat Bernhard bestimmt nichts dagegen.

Ich würde es ebenso machen wie Du, außerdem hat man das wie Du schon sagtest ja mal so gelernt.  ;)
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: koehlerbv am 05.05.09 - 14:08:01
Code
On Error GoTo ErrorHandler1

Code
(wenn hier Fehler im Code auftreten => gehe zu ErrorHandler1

ErrorHandler1:
  Code

ErrorHandler1 samt Code steht - wie ich ja auch schon schrieb - hinter der Sprungmarke ("ErrorHandler1") von On Error Goto. Ich verstehe also Dein (Verständnis-)Problem nicht, Andreas.

Bernhard
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: ascabg am 05.05.09 - 14:13:48

Zitat
ErrorHandler1 samt Code steht - wie ich ja auch schon schrieb - hinter der Sprungmarke ("ErrorHandler1") von On Error Goto. Ich verstehe also Dein (Verständnis-)Problem nicht

Wahrscheinlich kommt dieses daher, das ich den Text von Chris (Klafu) so interpretiere, dass er die Zeile

Code
On Error GoTo ...

hinter die Zeile

Code
Call o.ExtractFile(fpath & o.Source)

Zitat
Reicht es wenn ich dahinter ein On Error hinsetz ?

einfuegen moechte.


Andreas
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Lancelot am 05.05.09 - 14:17:16
Ich möchte Dir ja nicht wiedersprechen Bernhard dafür hast Du mir schon zu oft geholfen.
Aber wenn man vor und nach dem Ablegen der Files eine in "On Error" benützt, fange ich die Fehler vor und die Fehler nach der Ablage ab.

Mit Deiner Methode fange ich die Fehler welche zuvor auftauchen, die z.b. Falscher Pfad nicht rechtzeitig ab.

On Error GoTo ErrorHandler1

Ablagecode des Files

Dann...

On Error GoTo ErrorHandler2
.
.
.

ErrorHandler1:
  Code

ErrorHandle2:
Code
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: koehlerbv am 05.05.09 - 14:20:08
Okay, wenn Ihr (durchaus nachvollziehbar) das "dahinter" auf "On-Error-Statement nach der möglichen Fehlerstelle" bezieht, dann habt Ihr beide natürlich vollkommen Recht.

By the way: Wenn man eine bestimmte Fehlernummer erwartet, kann man auch zwei On Error (eins mit Bezug auf die spezielle Fehlernummer, ein "allgemeines") parallel verwenden.

Bernhard
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: ascabg am 05.05.09 - 14:22:06

Zitat
Wenn man eine bestimmte Fehlernummer erwartet, kann man auch zwei On Error (eins mit Bezug auf die spezielle Fehlernummer, ein "allgemeines") parallel verwenden

Hierzu kein Einwand.

Andreas
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Klafu am 05.05.09 - 14:31:46
Ihr könnt ja schneller antworten als ich es überhaupt mitverfolgen kann  ;D

Ich war da wohl gedanklich zu stark auf eine Abfrage eingestellt, drum hab ich geschrieben, ob es reicht wenn ich es dahinter setze.
Nun werde ich prüfen ob das File abgelegt ist und ein On Error goto kurz vor dem Extract starten.

Danke für die Antworten ;)

Gruß Chris
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: koehlerbv am 05.05.09 - 14:50:09
Chris, ein On Error brauchst Du ja bereits vor der allerersten Zeile Code. Du musst also ein spezielles vor Deinem ExtractFile einbauen oder im sowieso vorhandenen ErrorHandler auch auf die spezielle Fehlernummer prüfen (und dort dann entsprechend speziell reagieren).

Bernhard
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: Lancelot am 05.05.09 - 14:54:45
Aber nicht desto trotz wieder ein Notesentwickler der sich um eine Fehlerroutine kümmert.
Hab im Laufe der Jahre schon genügend anderer Notesentwickler gesehen die sich um keinerlei Fehlerroutinen kümmern.
Man verschwendet in deren Augen nur unnötig Zeit.

Weiter so Chris.   ;)
Titel: Re: Agent nach Eingang neuer Mail läuft nicht
Beitrag von: koehlerbv am 05.05.09 - 15:12:18
Zustimmung, Gerry. Habe gerade selber einen solchen "Fall" auf dem Tisch. Da auch sonst wenige der üblichsten Standards eingehalten wurde, muss jetzt nahezu die gesamte (Riesen-)Applikation neu gemacht werden, da der Code mit der Zeit einfach unbeherrschbar wurde.

Bernhard