Autor Thema: Agent funktioniert nicht ?!?  (Gelesen 13637 mal)

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Agent funktioniert nicht ?!?
« am: 04.03.09 - 18:28:15 »
Hallo zusammen,

ich habe nachfolgenden Agenten geschrieben der Daten zwischen zwei Datenbanken abgleichen soll.
Er schaut nach ob neue Tickets über die Datenbank A geschrieben wurden und gleicht die Daten dann mit Datenbank B ab.
Sollte vom Prinzip funktionieren, denke ich...
Tut es aber leider nicht.
Und ich erkenne den Fehler nicht.

Laut Agent-Log ist es ein unbekannter Fehler.
Es gibt auch keine Ausgabe auf der console.

Ich hoffe mir kann jemand von euch helfen?!?



Code
Sub Initialize
	Dim session As New NotesSession
	
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	Dim dbDirectory As NotesDirectory
	
	Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
	Dim selection As String
	Dim collection As NotesDocumentCollection
	Dim ViewCollection As NotesViewEntryCollection
	Dim ViewEntry As NotesViewEntry
	
	Dim SupportView As NotesView
	Dim TicketView As NotesView
	
	Dim TicketDoc As NotesDocument
	Dim SupportDoc As NotesDocument
	
	Dim SupportID As String
	Dim TicketID As String
	
	
	Set SupportDB = session.CurrentDatabase
	Set SupportView = SupportDB.GetView("(v_ReqNumber)")	
	Set SupportDoc = SupportView.GetFirstDocument
	
	iCounter = SupportView.AllEntries.Count
	Print iCounter + " Tickets zum abgleich mit der Ticket-DB in der Support-DB gefunden"
	
	Set TicketDB = session.GetDatabase("Notes","troubticket.nsf",False)
	Set TicketView = TicketDB.GetView("(v_ReqNumber)")
	
	On Error Goto ErrHandler
	
	iCounterX = 0
	While Not (SupportDoc Is Nothing)
		SupportID = SupportDoc.ReqNumber(0)
		selection = |@Contains( ReqNumber; "| + SupportID+ |" )|
		Print "Suche in der Ticket-DB nach dem Ticket " + SupportID
		Set collection = TicketDB.Search( selection, dateTime, 0 )		
		Set TicketDoc = collection.GetFirstDocument()
		
		If (TicketDoc Is Nothing) Then
			Print "Ticket " + SupportID + " wurde nicht in der Ticket-DB gefunden! Nächstes Dokument (" + iCounterX + " / "+iCounter+")"
			Goto EndeIf
		End If
		
		While Not TicketDoc Is Nothing
			TicketID = TicketDoc.ReqNumber(0)
			If (SupportID = TicketID) Then
				tmpString=TicketDoc.GetItemValue("solution")
				Call SupportDoc.ReplaceItemValue("solution", tmpString)
				
				tmpString=TicketDoc.GetItemValue("tx_usercomment")
				Call SupportDoc.ReplaceItemValue("tx_usercomment", tmpString)
				
				tmpString=TicketDoc.GetItemValue("Status")
				Call SupportDoc.ReplaceItemValue("Status", tmpString)
				
				tmpString=TicketDoc.GetItemValue("supporter")
				Call SupportDoc.ReplaceItemValue("supporter",tmpString)
				
				Call SupportDoc.Save(True, True)				
				Goto EndeIf
			End If			
		Wend
EndeIf:	
		Set SupportDoc = SupportView.GetNextDocument(SupportDoc)
		iCounterX = iCounterX +1
	Wend
	
	Print "Alle Tickets (" + iCounterX +" / " + iCounter + ") bearbeitet. ENDE"
ErrHandler:                 ' Error-handling routine
	Print "Error " & Err & " at line number " &Erl
	Resume Next
Ende:
End Sub
Gruß, Marc

s_Old

  • Gast
Re: Agent funktioniert nicht ?!?
« Antwort #1 am: 04.03.09 - 19:23:58 »
An welcher Stelle haut´s ihn denn aus den Latschen -> sollte das nicht durch die Fehlerbehandlung ersichtlich sein: DEBUGGER!

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #2 am: 04.03.09 - 19:49:43 »
Das ist es ja.
Lasse ich den Debugger laufen und starte den Agent über das Menü gibt es keine Probleme.
Ich weiß es also nicht, wo das Problem liegt =(
Gruß, Marc

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Agent funktioniert nicht ?!?
« Antwort #3 am: 04.03.09 - 20:15:38 »
Zitat
Das ist es ja.
Lasse ich den Debugger laufen und starte den Agent über das Menü gibt es keine Probleme.
Ich weiß es also nicht, wo das Problem liegt =(
Wie läßt du den Agenten sonst starten? Zeitgesteuert oder so.
Schau auf die Serverkonsole  oder ins Log.nsf. Da könnten sich Meldungen finden.
Vielleicht fehlen dem Server irgendwelche Rechte. Z.B. auf die Ticket-Datenbank.

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent funktioniert nicht ?!?
« Antwort #4 am: 04.03.09 - 21:14:10 »
... Tut es aber leider nicht ...
... Laut Agent-Log ist es ein unbekannter Fehler ...

Na, das sind alle tolle Hinweise, die Du für die hilfebereite Community bereit stellst.

Aus Deinen unklaren Angaben postuliere ich jetzt mal:
- Der Agent tut, was er soll, wenn er über den Client ausgeführt wird.
- Er tut nicht, wenn er scheduled läuft.

Du instantiierst da alle mögliche Objekte, ohne deren Verfügbarkeit zu prüfen: Das ist schon mal extrem schlecht. Allein, wenn Du das mal protokollieren würdest, kämst Du auch erheblich näher an die Stelle heran, die den Fehler wirft.

Wenn Du nähere Informationen hast, die nur Du beibringen kannst, dann wirst Du vermutlich schon selbst den Fehler finden, ansonsten gibt es hier schnelle Hilfe.

Bernhard

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #5 am: 05.03.09 - 07:07:52 »
Guten Morgen,

ich habe mal das Logging erweitert.
Nun erhalte ich folgenden Fehler: Unknown trigger and search type; agent may be corrupt.

Beide Datenbanken sind mit der Server-ID signiert.
Der Agent läuft "on behalf of" Notes.
Die Security habe ich schon von 0 auf 2 gestellt
Somit sind Zugriffsrechte ausgeschlossen, denke ich.

Zumal es einen anderen Agenten gibt, der läuft mit denselben Rechten, nur ohne behalf of mit Security 0.
Er kopiert Dokumente von A nach B.
Dieser scheduled Agent läuft ohne Probleme.

Im Agent-Log wird mir auch keine Fehlerzeile angezeigt.

Hier nochmals der komplette Code:

Code
Sub Initialize
	Dim session As New NotesSession
	Dim agentLog As New NotesLog("Agent log")
	
	Call agentLog.OpenAgentLog
	Call agentLog.LogAction( "Variablendeklaration")
	
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	
	Dim dbDirectory As NotesDirectory
	
	Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
	Dim selection As String
	Dim collection As NotesDocumentCollection
	Dim ViewCollection As NotesViewEntryCollection
	Dim ViewEntry As NotesViewEntry
	
	Dim SupportView As NotesView
	Dim TicketView As NotesView
	
	Dim TicketDoc As NotesDocument
	Dim SupportDoc As NotesDocument
	
	Dim SupportID As String
	Dim TicketID As String
	
	Call agentLog.LogAction( "SupportDB zuweisen")
	Set SupportDB = session.CurrentDatabase
	Call agentLog.LogAction( "View aus der Support DB holen")
	Set SupportView = SupportDB.GetView("(v_ReqNumber)")	
	Call agentLog.LogAction( "Erstes Dok der View aus der Support DB holen")	
	Set SupportDoc = SupportView.GetFirstDocument
	
	Call agentLog.LogAction( "Max Count der View")
	iCounter = SupportView.AllEntries.Count
	Print iCounter + " Tickets zum abgleich mit der Ticket-DB in der Support-DB gefunden"
	
	Call agentLog.LogAction( "Ticket-DB holen")
	Set TicketDB = session.GetDatabase("Maria_Notes","it-troubticket.nsf",False)
	Call agentLog.LogAction( "View aus der Ticket-DB holen")	
	Set TicketView = TicketDB.GetView("(v_ReqNumber)")
	
	On Error Goto ErrHandler
	
	iCounterX = 0
	Call agentLog.LogAction( "Solange SupportDocs vorhanden sind (WEND Eintritt)")
	While Not (SupportDoc Is Nothing)
		Call agentLog.LogAction( "Support-ID holen")
		SupportID = SupportDoc.ReqNumber(0)
		Call agentLog.LogAction( "Support-ID: " + SupoortID)
		Call agentLog.LogAction( "Selektion zusammensetzen")
		selection = |@Contains( ReqNumber; "| + SupportID+ |" )|
		Print "Suche in der Ticket-DB nach dem Ticket " + SupportID
		
		Call agentLog.LogAction( "Collection bilden indem Selection in der TicketDB gesucht wird")
		Set collection = TicketDB.Search( selection, dateTime, 0 )		
		Call agentLog.LogAction( "Erstes (und einziges) Dokument aus der Collection holen")
		Set TicketDoc = collection.GetFirstDocument()
		
		Call agentLog.LogAction( "Prüfung ob Dokument in TicketDB vorhanden")
		If (TicketDoc Is Nothing) Then
			Call agentLog.LogAction( "Ticket mit der Support-ID " + SupportID + " in der TIcketDB nicht gefunden!")
			Print "Ticket " + SupportID + " wurde nicht in der Ticket-DB gefunden! Nächstes Dokument (" + iCounterX + " / "+iCounter+")"
			Call agentLog.LogAction( "Nächstes Dokument nehmen")
			Goto EndeIf
		End If
		
		Call agentLog.LogAction( "While TicketDoc is not nothing")
		While Not TicketDoc Is Nothing
			Call agentLog.LogAction( "Ticket-ID holen")
			TicketID = TicketDoc.ReqNumber(0)
			Call agentLog.LogAction( "Ticket-ID mit Support-ID vergleichen")
			If (SupportID = TicketID) Then
				Call agentLog.LogAction( "Ticket-ID == Support-ID")
				Call agentLog.LogAction( "Solution holen")
				tmpString=TicketDoc.GetItemValue("solution")
				Call agentLog.LogAction( "Solution in Dok schreiben")
				Call SupportDoc.ReplaceItemValue("solution", tmpString)
				
				Call agentLog.LogAction( "Kommentar für den Benutzer holen")
				tmpString=TicketDoc.GetItemValue("tx_usercomment")
				Call agentLog.LogAction( "Kommentar für den Benutzer schreiben")
				Call SupportDoc.ReplaceItemValue("tx_usercomment", tmpString)
				
				Call agentLog.LogAction( "Status holen")
				tmpString=TicketDoc.GetItemValue("Status")
				Call agentLog.LogAction( "Status schreiben")
				Call SupportDoc.ReplaceItemValue("Status", tmpString)
				
				Call agentLog.LogAction( "Supporter holen")
				tmpString=TicketDoc.GetItemValue("supporter")
				Call agentLog.LogAction( "Supporter schreiben")
				Call SupportDoc.ReplaceItemValue("supporter",tmpString)
				
				Call agentLog.LogAction( "Dok speichern")
				Call SupportDoc.Save(True, True)				
				Goto EndeIf
			End If			
		Wend
EndeIf:	
		Call agentLog.LogAction( "Nächstes SupportDoc")
		Set SupportDoc = SupportView.GetNextDocument(SupportDoc)
		iCounterX = iCounterX +1
	Wend
	
	Print "Alle Tickets (" + iCounterX +" / " + iCounter + ") bearbeitet. ENDE"
ErrHandler:                 ' Error-handling routine
	Call agentLog.LogAction( "Fehler in Zeile " & Erl)
	Print "Error " & Err & " at line number " &Erl
	Resume Next
Ende:
	Call agentLog.Close
End Sub
Gruß, Marc

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Agent funktioniert nicht ?!?
« Antwort #6 am: 05.03.09 - 07:43:20 »
Was ist denn als Ziel des Agenten eingestellt?
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #7 am: 05.03.09 - 08:03:52 »
Als Ziel ist "All Documents" eingestellt. Aber auch none oder "changed Documents" ndert meines Erachtens nichts daran!
Gruß, Marc

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Agent funktioniert nicht ?!?
« Antwort #8 am: 05.03.09 - 08:21:50 »
Code
Der Agent läuft "on behalf of" Notes.

??? Wer ist "Notes" - wozu das - das macht man, wenn man die ID eines bestimmten Users für die Ausführung verwenden will. Ist das so?

Toni
« Letzte Änderung: 05.03.09 - 08:23:50 von ata »
Grüßle Toni :)

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #9 am: 05.03.09 - 08:34:31 »
Notes ist der Name unseres Servers. Den habe ich angegeben weil er sebst die meisten Rechte hat
Gruß, Marc

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Agent funktioniert nicht ?!?
« Antwort #10 am: 05.03.09 - 09:27:28 »
... und der heißt tatsächlich nur "Notes"?

Toni
Grüßle Toni :)

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #11 am: 05.03.09 - 09:42:49 »
Nein, "Maria_Notes". Ich habe das gerade mal angepasst!War mein Fehler! Aber trotz allem laeuft es nicht
Gruß, Marc

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Agent funktioniert nicht ?!?
« Antwort #12 am: 05.03.09 - 14:31:39 »
... kein hierarchischer Name???

Toni
Grüßle Toni :)

Offline mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #13 am: 05.03.09 - 15:05:22 »
Doch, hatte es nur weg gelassen: Maria_Notes/Maria-Hilf GmbH.  Das ist er komplett. Bislang habe ich nur immer "Maria_Notes" eingegeben. Die Datenbanken hat er trotz allem gefunden!
Gruß, Marc

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Agent funktioniert nicht ?!?
« Antwort #14 am: 05.03.09 - 15:27:15 »
Schön das wir jetzt wissen wo Du Arbeitest...


Kontrollier bitte nochmal, wer die DB signiert hat.
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 mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #15 am: 05.03.09 - 15:36:55 »
Die Datenbank habe ich mit der Server-ID signieren lassen.
Der Server selbst hat ja die meisten Rechte.
Ich habe im Agentlog.nsf auch keine Fehlereinträge stehen...
Und das obwohl die angelegt werden sollten!
Gruß, Marc

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Agent funktioniert nicht ?!?
« Antwort #16 am: 05.03.09 - 15:44:13 »
Der Agent muss erstmal starten, bevor er etwas tun kann.
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 mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #17 am: 05.03.09 - 15:48:21 »
wenn ich mir den nachfolgenden code anschaue, dann passt das doch:

Code
Sub Initialize
	Dim session As New NotesSession
	Dim agentLog As New NotesLog("Agent log")
	
	Call agentLog.OpenAgentLog
	Call agentLog.LogAction( "Variablendeklaration")
	
	Dim TicketDB  As NotesDatabase
	Dim SupportDB As NotesDatabase
	
	Dim dbDirectory As NotesDirectory
	
	Dim dateTime As New NotesDateTime( Datenumber(1995, 3, 14) )
	Dim selection As String

Zuerst sage ich Ihm das er das Agent Log öffnen soll und dann das er dort reinschreiben soll...
Oder sehe ich das falsch?!?
Gruß, Marc

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Agent funktioniert nicht ?!?
« Antwort #18 am: 05.03.09 - 15:54:32 »
Was habe ich gesagt? Der Agent startet ganrnicht erst!!

Die Laufbedingungen des Agenten dürften nicht stimmen.

Also:

Wie soll der Agent aufgerufen werden?

Ein kleines Beispiel

So ich mach jetzt Feierabend...
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 mgubler

  • Aktives Mitglied
  • ***
  • Beiträge: 160
  • Geschlecht: Männlich
  • Ich war's nicht!!!
Re: Agent funktioniert nicht ?!?
« Antwort #19 am: 05.03.09 - 15:56:17 »
Der Agent soll alle 15 Minuten laufen.
Er kann im Prinzip auf alle Dokumente in der DB zugreifen, da der Rest ja über eine View und eine Collection gemacht wird.
Gruß, Marc

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz