Autor Thema: Agent (UpdateProcessedDoc)  (Gelesen 5047 mal)

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Agent (UpdateProcessedDoc)
« am: 28.02.07 - 13:47:58 »
Hallo ihr lieben,

kurze Frage zum Verständnis:
Wie sollte sich ein Agent in bezug auf mit "UpdateProcessedDoc" gekennzeichnete dokumente verhalten, wenn er deaktiviert und wieder aktiviert bzw. durch ein Schablonenupdate erneuert wurde? Behällt er diese Dokumente im "Gedächtnis" oder bearbeitet er dann wieder alle Dokumente?

Thanks for your brain.
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #1 am: 28.02.07 - 14:03:29 »
Genauso wie in der Doku ausführlich beschrieben: UpdateProcessedDocs sorgt dafür, dass eine NotesDocumentCollection auf Basis UnprocessedDocs nur aus bisher nicht bearbeiteten Dokumenten besteht. Auch wenn der Agent zwischendurch aus- und angeschaltet wird.

Bernhard

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #2 am: 28.02.07 - 14:06:44 »
Das mit dem ein- und ausschalten war mir wichtig. Das wird in der Doku nämlich nicht explizit angesprochen. Und mit dem Agent nach einem Schablonen Update verhält es sich gleichermaßen, oder?

Merci



Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #3 am: 28.02.07 - 14:10:38 »
Man hätte da besser den Text der 5er Version der DesignerHelp für R6 übernommen:
Zitat
UpdateProcessedDoc ensures that a document gets processed by an agent only once. For example, when an agent runs a script to process all new and modified documents since last run, the script can use UnprocessedDocuments, UnprocessedFTSearch, or UnprocessedSearch (all in NotesDatabase) to get the newly-created and newly-modified documents. The script must use UpdateProcessedDoc to mark the documents that it has already processed.
Without UpdateProcessedDoc, the UnprocessedDocuments property returns all the documents in the database, and the UnprocessedFTSearch and UnprocessedSearch methods return all the documents in the database that meet their respective criteria, regardless of whether the documents have already been searched in a previous invocation of the agent.

Bernhard

Glombi

  • Gast
Re: Agent (UpdateProcessedDoc)
« Antwort #4 am: 28.02.07 - 14:16:38 »
Meine (leidvolle) Erfahrung:
Wenn ein Agent deaktiviert und neu aktiviert wird, hat er alles bis dahin gemachte vergessen. Er fängt ein neues Leben an und bearbeitet ALLE Dokumente, auch die er in seinem alten Leben bereits bearbeitet hat.

Also was tun: Ich lasse durch den Agenten immer ein Feld in die bearbeiteten Dokumente schreiben. Das frage ich im Code ab.
Nur so bist Du auf der sicheren Seite!

Andreas

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #5 am: 28.02.07 - 14:19:02 »
@Bernhard: Klingt schon besser die Beschreibung. Auf Notes 5 hab ich nur zu meiner Anfangszeit gearbeitet und diese Funktion noch nicht benutzt.

Gibt's denn irgendeinen Grund warum das nicht funktionieren könnte? Ich habe immerwieder das Problem, dass ein Agent nach einem Schablonen Update wieder erst alle Dokumente bearbeitet, obwohl diese mit "UpdateProcessedDoc" gekennzeichnet sind. Man muss dass Dokument nicht erst nach dem Befehl speichern, oder? Wo ist denn die Information für gekennzeichnete Dokumente eigentlich hinterlegt?

@Glombi: Die Erfahrung mache ich eben auch immerwieder, wie oben beschrieben. Das problem ist nur: Wie prüfe ich dann neue und bearbeitete dokumente ab?


Gruß Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Glombi

  • Gast
Re: Agent (UpdateProcessedDoc)
« Antwort #6 am: 28.02.07 - 14:22:26 »
Wie gesagt:
Also was tun: Ich lasse durch den Agenten immer ein Feld in die bearbeiteten Dokumente schreiben. Das frage ich im Code ab.
Nur so bist Du auf der sicheren Seite!

Sowas in der Art:

if doc.HasItem("doc.AgentXYZFlag") then
if doc.AgentXYZFlag(0) = "1" then goto NextDocument
end if


'hier dann der eigentliche Code...

doc.AgentXYZFlag = "1"
call doc.Save( false, false )

NextDocument:
set doc = dc.GetNextDocument(doc)


Andreas

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #7 am: 28.02.07 - 14:26:09 »
So ungefähr läuft das bei mir auch bereits. Nach der bearbeitung erfüllt das Dokument nicht mehr die Kriterien einer Abfrage im Agenten und es wird zum nächsten Dokument gesprungen. Nur Durchlaufen bei jedem Update ne ganze Menge Dokumente (30.000-40.000) diese Abfrage und das dauert dann schon mal.


Gruß Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #8 am: 28.02.07 - 14:29:36 »
Ausser in unkritischen Situationen verlasse ich mich auch nicht auf UpdateProcessedDocs.
Wo möglich, arbeite ich mit einem CutOffDate, oder ich schreibe einen Zeitstempel in das Dokument oder - wo das denn im Zusammenhang mit UnprocessedDocs machbar ist - ein simples Flag (wie Andreas) in das Dokument.

Variante 1 hat immer den Charme, dass man das Datum auch mal zurückdrehen kann  ;)

Bernhard

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #9 am: 28.02.07 - 14:32:13 »
Zeitstempel benutz ich auch extra noch, stimmt. Aber wie bereits erwähnt kostet die Abfrage aller Dokumente jedes mal beim Schablonen Update Zeit "ohne Ende".


Also dies zu umgehen scheint hier nicht möglich.


Gruß Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #10 am: 28.02.07 - 14:33:58 »
Wie machst Du denn die Abfrage?

Bernhard

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #11 am: 28.02.07 - 14:40:53 »
Agent durchläuft alle neuen und bearbeiteten Dokumente.

Im Agenten wird für jedes Dokument abgefragt, ob es in dieser DB schon bearbeitet wurde (Flag mit Name: "memoDBName"), da Das Dokument theoretisch aus einer Anderen DB (gleiche Applikation) kopiert worden sein könnte und hier nochmal bearbeitet werden muss. Grund: In dieser DB müssen evtl andere Anpassungen durch den Agenten getätigt werden.


If doc.HasItem("memoDBName") Then
    If doc.memoDBName(0)=moduleNumber Then
       If intPrint Then   Goto nextDocument
    End If
End If
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #12 am: 28.02.07 - 14:43:59 »
Vorher kommt noch eine Abfrage ob Dokument gelöscht oder not valid ist und eine Maskenabfrage für nicht zu bearbeitende Dokumente und einige Veriablen werden bei jedem Dokument zurückgesetzt (Das könnte man noch ans Ende der Bearbeitung setzen).
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #13 am: 28.02.07 - 14:49:13 »
Warum arbeitest Du dann nicht mit einem CutOffDate?

Bernhard

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #14 am: 28.02.07 - 14:54:31 »
CutOffDate? Was genau meinst du damit? Das Bearbeitungsdatum? Ich könnte das direkt in die Agentenabfrage reinsetzen, das wäre evtl eine Möglichkeit, oder spricht etwas dagegen?
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #15 am: 28.02.07 - 14:56:43 »
Du arbeitest einfach mit dbSearch. Dein Agent schreibt den Start seiner Aktion in ein Setup-Dokument ...

Bernhard

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #16 am: 28.02.07 - 15:00:38 »
Wie sieht's denn da mit Performance aus, wenn jedes mal diese Suche getätigt wird?



Gruß Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent (UpdateProcessedDoc)
« Antwort #17 am: 28.02.07 - 15:02:19 »
Besser als Deine Schleife  ;)

Du kannst ja unterscheiden: Wenige UnprocessedDocuments -> OK. Viele -> dbSearch.

Bernhard

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Agent (UpdateProcessedDoc)
« Antwort #18 am: 28.02.07 - 15:03:25 »
 ;D Das hört sich gut an.



Merci Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz