Autor Thema: Agent durchläuft Docs ungewollt oft  (Gelesen 966 mal)

Offline JD

  • Junior Mitglied
  • **
  • Beiträge: 94
Agent durchläuft Docs ungewollt oft
« am: 14.01.03 - 09:42:27 »
Hallo Ihr, habe das Problem das mein Agent die zu bearbeitenden Dokumente ganz eigenartig bearbeitet, er tut dies mehrmals pro Dokument und völlig durcheinander. Das erste Dokument wird z.B. 7-8 mal bearbeitet das zweite auch so oft und die anderen dann gemixt nach lust und Laune.

Der Agent ist ein Javaagent bei dem als angegeben ist, dass er alle Dokumente der Datenbank bearbeiten soll mit einem Suchkriterium nämlich einem Feldwert. Das scheint gut zu funktionieren, es bearbeitet ausschließlich diese Docs!

Die Dokumente werde dann im Code über den Agentcontext mit getUnprocessedDocuments() geholt. Ich dachte zuerst das liegt daran, dass ich die Methode updateProcessedDoc(doc) nicht angewendet habe, doch das war es auch nicht.

Hier der Code, vielleicht kann mir ja jemand helfen.

Code
 import lotus.domino.*;

public class JavaAgent extends AgentBase {

   public static final String form = new String("NameOfForm"); //Const. for the specific form
     public static final String shownName = new String("Daswirdangezeigt");  //Name that is shown in view later  
     public static final String nameOfView = new String("Notes documents by topic");   //Const for the name of view where to get document from
     
        
       public void NotesMain() {

      
             try {
         Session session = getSession(); 
         AgentContext agentContext = session.getAgentContext(); // get the Context of actual Agent
         
         Database database = agentContext.getCurrentDatabase(); //get the database from the above context
               DocumentCollection docCollection = agentContext.getUnprocessedDocuments(); //get all documents belonging to the actual context
               Document doc = docCollection.getFirstDocument(); //get the first document of the whole collection
 
               View view = database.getView(nameOfView); // get view by name of the defined constant
               Document searchdoc = view.getDocumentByKey(shownName); //try to get document by the name of topic
               
               
               if (searchdoc != null) // checks if document exists
               {
                  searchdoc.replaceItemValue("display", ""); //Cleans the old field values for the display
                  RichTextItem docfield = (RichTextItem)searchdoc.getFirstItem("docfield");  //Instance for the field docfield                
                  RichTextItem olddisplay = (RichTextItem)searchdoc.getFirstItem("display"); //Instance for the field display
                 
                  while (doc != null) { // Loop while documents are in collection
                       doc.renderToRTItem(docfield); //Render each document into docfield
                         olddisplay.appendRTItem(docfield); // Append docfield to the instance of the displayfield in document
                         agentContext.updateProcessedDoc(doc);
                         doc = docCollection.getNextDocument(doc); //Iterates the documentcollection
                    
                  } //End of while loop  
                 
                 
                 searchdoc.save(true, false); //save old document with new values
               } //Ende If
     
               else {  // if no old document exists create a new one
                   createNewDoc();
               }                                  
          
                         
      } catch(Exception e) {
         e.printStackTrace();
      }
   }

   public void createNewDoc() 
   {
         try {
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();
         
         Database database = agentContext.getCurrentDatabase();
               DocumentCollection docCollection = agentContext.getUnprocessedDocuments();
               Document doc = docCollection.getFirstDocument();
               
               Document joineddoc = database.createDocument(); //Hier wird das neue Dokument erstellt
               joineddoc.appendItemValue("JoinName", shownName);
               joineddoc.appendItemValue("Form", form); 
               RichTextItem display = joineddoc.createRichTextItem("display");
               RichTextItem rti = joineddoc.createRichTextItem("docfield");        
    
               while (doc != null) {
                  doc.renderToRTItem(rti);
                    display.appendRTItem(rti);
                    agentContext.updateProcessedDoc(doc);
                    doc = docCollection.getNextDocument(doc);
               }  
               joineddoc.save(true, false);
    
               } catch(Exception e) {
         e.printStackTrace();
           }

      } //End of method createNewDoc      

} //End of class
In a world without walls and fences who needs windows and gates?

Offline JD

  • Junior Mitglied
  • **
  • Beiträge: 94
Re:Agent durchläuft Docs ungewollt oft
« Antwort #1 am: 16.01.03 - 08:48:25 »
So hat sich alles geklärt, war nen semantisches Problem in den Schleifen!!
In a world without walls and fences who needs windows and gates?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz