Autor Thema: Agenten und Ihr Gültigkeitsbereich  (Gelesen 1819 mal)

Offline JD

  • Junior Mitglied
  • **
  • Beiträge: 94
Agenten und Ihr Gültigkeitsbereich
« am: 28.11.02 - 15:03:46 »
Hallo Alle, hier meine kurze Frage:
Wie verhält es sich mit dem Gültigkeitsbereich von (Java)agenten in bezug auf die Dokumente einer DB?
Man hat ja die möglichkeit anzugeben wann er laufen soll und auf welche dokumente er sich beziehen soll.
Wenn ich jetzt an dieser Stelle angebe "Ausgewählte Dokumente" nach nem bestimmten Kriterium und im Sourcecode des Agenten database.getAllDocuments verwende, werden dann ALLE dokumente der Datenbank bearbeitet oder nur ALLE die auch der Selectklausel entsprechen??????

2. Wie verhält es sich mit der searchmethode von database??

In der Hilfe steht db.search(auswahlformel, optional auch noch zwei andere parameter)

Meine Frage nun wie ist die Syntax dieser asuwahlformel??

die Hilfe sagt : A Notes @function formula that specifies the selection criteria.

Das Beispiel gibt dieser her:
db.search("Subject = \"" + agent.getComment() + "\"");

Das den Inhalt des Subjectfeldes mit dem Inhalt des Agentenkommentars vergleichen.

Ich verstehe hierbei nicht was die Backshlases bedeuten und wie die Syntax der Klammersetzung zu verstehen ist.
Kann mir da jemand helfen???

Die beiden Dinge interessieren mich, weil ich einen Agenten schreiben will der bestimnmte Aktion mit Dokumenten ausführt die in einem bestimmten Feld ein und die selbe Sache stehen haben.
Wie geh ich am besten vor unter Einbezug des 1. Punktes von mir??
Die Dokumente schon im Agent selektieren lassen?Oder alle Dokumente selektieren und von der Search methode filtern lassen???

Danke schonmal im voraus...
In a world without walls and fences who needs windows and gates?

Offline RedFox

  • Frischling
  • *
  • Beiträge: 33
  • Geschlecht: Männlich
  • Notes? Du mußt es lieben!
    • Elmar Fuchs
Re:Agenten und Ihr Gültigkeitsbereich
« Antwort #1 am: 28.11.02 - 16:01:44 »
Hallo
zu 1.
wenn Du über database.getAllDocuments() gehst, bekommst Du meines Erachtens alle Dok der DB, aber über  agentContext.getUnprocessedDocuments() nur die, die Deinen Selektionskriterien entsprechen
zu 2.
db.search wird ein berechneter String übergeben, die Backslashes brauchst Du, wenn Du innerhalb von Hochkommat nochmal Hochkommata verwenden willst,
wenn agent.Comment() z.B. Kommentar zurückgibt haben wir ja Subject ="Kommentar" und wenn Du das an db.Search übergibst mit db.Search("Subject ="Kommentar"") kommt er nicht klar, deshalb db.Search("Subject =\"Kommentar\"")

Wie Du vorgehst, hängt meines Erachtens auch davon ab, wie oft der Agnet laufen soll. Einmalig? Ereignisgesteuert? Periodisch?
Grüße

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Agenten und Ihr Gültigkeitsbereich
« Antwort #2 am: 28.11.02 - 17:34:20 »
... um das Problem mit den Hochkommas aus dem Weg zu gehen, kann man zum Beispiel auch geschweifte Klasmmern verwenden - bei dem Beispiel sieht das dann so aus:

db.Search({Subject ="Kommentar"})

... man kann auch die Pipe | verwenden, nur die braucht man ab und zu im String...

ata
Grüßle Toni :)

Offline JD

  • Junior Mitglied
  • **
  • Beiträge: 94
Re:Agenten und Ihr Gültigkeitsbereich
« Antwort #3 am: 29.11.02 - 09:08:58 »
Hallo
zu 1.
wenn Du über database.getAllDocuments() gehst, bekommst Du meines Erachtens alle Dok der DB, aber über  agentContext.getUnprocessedDocuments() nur die, die Deinen Selektionskriterien entsprechen

Habe hier mal nen Beispiel aus der Hilfe. der fette Text macht mich etwas stutzig, weil ich auf keinen Fall alle Dokumente der DB bearbeiten will sondern nur welche die im Feld Subject etwas bestimmtes stehen haben, wenn ich nun die auswahl per select im agentbuilder verwende habe ich doch dann ne nette Performance einbuße oder?


This program is for an agent that runs on newly created and modified documents since the last run. The program gets the unprocessed documents, prints each Subject item, and marks each document as processed. The first time the agent runs, getUnprocessedDocuments returns all of the documents in the database. Thereafter, getUnprocessedDocuments returns those documents that updateProcessedDoc has not touched.

Code
import lotus.domino.*;
public class JavaAgent extends AgentBase {
  public void NotesMain() {
    try {
      Session session = getSession();
      AgentContext agentContext = 
          session.getAgentContext();
      // (Your code goes here) 
      DocumentCollection dc = 
          agentContext.getUnprocessedDocuments();
      Document doc = dc.getFirstDocument();
      while (doc != null) {
        System.out.println(
              doc.getItemValueString("Subject"));
        agentContext.updateProcessedDoc(doc);
        doc = dc.getNextDocument();
        }
    } catch(Exception e) {
      e.printStackTrace();
    }
  }
}

« Letzte Änderung: 29.11.02 - 09:10:09 von JD »
In a world without walls and fences who needs windows and gates?

Offline RedFox

  • Frischling
  • *
  • Beiträge: 33
  • Geschlecht: Männlich
  • Notes? Du mußt es lieben!
    • Elmar Fuchs
Re:Agenten und Ihr Gültigkeitsbereich
« Antwort #4 am: 29.11.02 - 10:08:20 »
Hallo,
tja, beim ersten Mal da tuts noch weh  ;)

Das ist die Frage wie oft Du den Agenten ausführen willst. Wenn dies, wie in dem Hilfe Beispiel, bei allen neuen und geänderten Dokumenten der Fall sein soll, sind beim ersten Mal halt alle Dok neu und ungeändert. Wenn er nur einmal laufen soll, könntest Du doch ein anderes Startkriterium verwenden, oder?

Grüße

Offline JD

  • Junior Mitglied
  • **
  • Beiträge: 94
Re:Agenten und Ihr Gültigkeitsbereich
« Antwort #5 am: 29.11.02 - 10:18:31 »
Jo stimmt!! Habe das auch mal probiert, ist nicht allzu heftig von der Zeit her, ich eine Notes User sind da ja eh nicht allzu verwöhnt *gg*
In a world without walls and fences who needs windows and gates?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz