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.
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