Autor Thema: Unterschiedliches Verhalten von Agenten  (Gelesen 3098 mal)

Offline basile

  • Frischling
  • *
  • Beiträge: 41
Unterschiedliches Verhalten von Agenten
« am: 13.12.13 - 13:58:45 »
Liebe Mitforisten,

ich habe ein eigenartiges Verhalten von Agenten, je nachdem, woher sie gestartet werden:
Der Plan ist, Dokumente (zeitgesteuert) von einem Ordner in einen anderen zu verschieben. Dafür gibt es einen Agenten, der den Ordner durchgeht (Entrycollection), die Dokumente überprüft, und diejenigen, auf die die Kriterien zutreffen in einen anderen Ordner verschiebt (doc.RemoveFromFolder() und doc. PutInFolder()).
wird der Agent von Hand gestartet, tut er das was er soll, im zitgesteuerten Modus funktioniert weder das RemoveFromFolder, noch das PutInFolder.
Ich habe es auch schon versucht, die docs einer Documentcollection zuzuordnen und diese dann mit RemoveAllFromFolder() / PutAllInFolder zu behandeln mit dem gleichen Ergebnis. auch view.autoupdate = false bringt nix.
Ich habe keine UI-Klassen im Agenten.
So langsam gehen mir die Ideen aus.

Viele Grüße

Udo

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Unterschiedliches Verhalten von Agenten
« Antwort #1 am: 13.12.13 - 14:27:17 »
Kann es sein, dass es sich um persönliche Ordner handelt? Wer ist der Unterzeichner des Agenten, kann der die Ordner sehen?

Offline basile

  • Frischling
  • *
  • Beiträge: 41
Re: Unterschiedliches Verhalten von Agenten
« Antwort #2 am: 13.12.13 - 14:40:28 »
Hallo Peter,

der Ordner ist nicht persönlich, sondern öffentlich. Ich bin der Unterzeichner, beim Starten auf Knopfdruck mache das natürlich ich, der Zeitgesteuerte Task läuft auf meinem Rechner mit meiner ID. Das Script läuft ja auch durch ohne Fehler (nach lokalem log)

Viele Grüße

Udo

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Unterschiedliches Verhalten von Agenten
« Antwort #3 am: 13.12.13 - 14:47:07 »
Moin
Läuft der Agent im Client oder im auf dem Server.
Falls auf dem Client, ist aktiviert dass zeitgesteuerte Agenten laufen dürfen?
Falls auf dem Server, hast Du rechte den Agenten auszuführen?
Wird der Agent überhaupt gestartet?

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline basile

  • Frischling
  • *
  • Beiträge: 41
Re: Unterschiedliches Verhalten von Agenten
« Antwort #4 am: 13.12.13 - 15:00:41 »
Hallo umi,

der Agent läuft auf dem Client, der läuft auch durch (nach log) und meldet keine Fehler.

hier mal der Code:

Option Public
Option Declare

Sub Initialize

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim entrycoll As NotesViewEntryCollection
   Dim entry As NotesViewEntry
   Dim doc As NotesDocument
   Dim tempdoc As NotesDocument
   
   Const OrdnerName = "IrgendeinOrdner"
   Const OrdnerSentName ="IMAPSent"   
   
   Dim RemoveIt As Boolean
   RemoveIt = False
   
   Set db = session.Currentdatabase
   db.FolderReferencesEnabled = True   
   
   Set view = db.Getview(OrdnerName)
   view.Autoupdate = False

   
   Set entrycoll = view.Allentries   
   Set entry = entrycoll.Getfirstentry()

   
   While Not(entry Is Nothing)
      Set doc = entry.Document   
               
                /* hier wird das Dokument untersucht */
                if (irgendwelche Bedingungen) then
   
                  
           Call doc.Send(False)
           Print "Mail versandt"
           RemoveIt = True   
           Call doc.save(True,False,False)
      end If
   
      If RemoveIt = True Then
         Set tempdoc = doc
      End If      
      Set entry = entrycoll.Getnextentry(entry)
      If RemoveIt = True Then
         Call tempdoc.Removefromfolder(OrdnerName)
         Call tempdoc.PutInFolder(OrdnerSentName, True)
         Call tempdoc.Save(true,False,true)
         RemoveIt = false
      End If
   Wend   
   view.Autoupdate = true
   
End Sub

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Unterschiedliches Verhalten von Agenten
« Antwort #5 am: 13.12.13 - 15:40:15 »
Zwei Dinge verstehe ich in Deinem Code nicht, auch wenn sie sicherlich nichts mit dem Problem zu tun haben, denn der Agent läuft ja von Hand.

1. Wozu speicherst Du das Dokument, nachdem Du es von einem Ordner in den anderen verschoben hast?

Die Information darüber, in welchem Ordner sich ein Dokument befindet, ist nicht im Dokument abgelegt.

2. Wozu verwendest Du tempdoc?

Du setzt tempdoc = doc und arbeitest danach mit tempdoc weiter, ohne dass Du doc irgendwie anderweitig benötigst oder neu setzt. Das ist m.E. überflüssig.

Welche Sicherheitseinstellung hast Du im Agenten? Vielleicht ist die zu scharf? In welchem Log steht, dass der Agent erfolgreich gelaufen sei? Ich würde mal ein separates Logging einbauen, bei dem klar erkennbar ist, was der Agent treibt.
Du könntest nach dem Agentenlauf die relevanten Dokumente ansehen, wann sind die zuletzt gespeichert worden? Da der Agent (wie gesagt unnötigerweise) die Dokumente speichert, kannst Du sehen, ob er die angefasst hat, oder nicht.


Offline basile

  • Frischling
  • *
  • Beiträge: 41
Re: Unterschiedliches Verhalten von Agenten
« Antwort #6 am: 13.12.13 - 16:23:48 »
Hallo Peter,

das mit dem Speichern habe ich auch weder in den Beispielen, noch in diversen codes im Netz gesehen, hatte das vorher auch nicht drin, aber
tempdoc ist aus dem Grund drin, weil ich ja das Doc, das vom Entry stammt verschiebe, das ist auch so ein Test, auf der Suche nach dem Grund des Problems. Sicherheitseinstellungen sind so, dass der erstmal alles darf.
Das Logging passiert auf meinem client. Im Notes-Data gibt es die Bank log.nsf. Die schreibt brav alles mit, was passiert. mit Print kann man da Meldungen ausgeben. Bei jedem Clientneustart wird ein neues Dokument da drin angelegt.
Habe dieses log auch erst heute gefunden. Manchmal sind doch solche hartnäckigen Fehler auch zu was nütze ;)^.
Der Agent fasst die Dokumente an, tut alles mögliche damit, speichern, items entfernen etc. nur halt nicht Verschieben.

Viele Grüße

Udo

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Unterschiedliches Verhalten von Agenten
« Antwort #7 am: 08.01.14 - 11:28:58 »
@basile
Bist Du Dir GANZ SICHER(!), daß Du im Script im "If RemoveIt = True" Bereich auch ankommst? Auch wenn das jetzt völlig abwegig ist... falls Du es noch nicht getan hast: bitte prüfen.

War's das? Wenn nicht... hast Du schon mal versucht, das Dokument zuerst in den Zielordner zu verschieben und dann aus dem Quellordner zu löschen?

Auch nicht? Ich hatte mal so ein ähnliches Problem, allerdings läuft mein Agent auf dem Server. Meine Lösung: nicht direkt mit dem Quell-Ordner arbeiten, sondern eine eigene Doc-Collection aufbauen. Damit mache ich auf jeden Fall einen Bogen um evtl. auftretende Refresh/Update Vorgänge im Quellordner, die dann wiederum evtl. die Viewnavigation (z.B. getNextDocument) durcheinanderbringen könnten.


Code
	' Dokumente in doc collection, view = Quell-Ordner 
	Call view.Refresh()
	Set doc = view.Getfirstdocument()
	If doc Is Nothing Then
		Print "EXIT: Toll - nichts zu tun."
		Exit Sub
	End If
	

	' Leere Collection bauen
	Set coll = view.Getalldocumentsbykey("%ganztoller!dummy#key*for&empty%collection", True)
	If coll.Count > 0 Then
		Print "EXIT: Hier ist was nicht in Ordnung."
		Exit Sub
	End If
	
	' Dokumente manuell in die Collection aufnehmen
	While Not doc Is Nothing
		Call coll.Adddocument(doc)
		Set doc = view.Getnextdocument(doc)
	Wend
	
		
	' Schleife für Bearbeiten der Dokumente aus Collection
	Set doc = coll.Getfirstdocument()
	count = 0
	While Not doc Is Nothing
		count = count + 1
		
		' *** hier was-auch-immer-mit-dem-doc-tun
		
		' Dokument in Zielordner verschieben
		Call doc.Putinfolder(ZIELORDNER, False)
		Call doc.Removefromfolder(QUELLORDNER)
		Set doc = coll.Getnextdocument(doc)
	Wend


Da Du ja nach Ideen gefragt hast - vielleicht versuchst Du es mal so?

Viel Glück,
Th.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz