Domino 9 und frühere Versionen > ND6: Entwicklung
Dokumentenzugriffszähler
DerAndre:
Ist das Richtig:
NgetDocumentByID ??
mleussner:
@DerAndre: steht so im Log aber nicht im Agent.
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
Database db;
AgentContext agentContext = session.getAgentContext();
db = agentContext.getCurrentDatabase();
Agent ag1 = agentContext.getCurrentAgent();
String paramid = ag1.getParameterDocID();
System.out.println("gestartet");
// (Your code goes here)
DocumentCollection dc = agentContext.getUnprocessedDocuments();
System.out.println("Count = " + dc.getCount());
Document doc = dc.getFirstDocument();
if (doc.isValid())
System.out.print( doc.getItemValueString("Beitrag"));
String numStr = doc.getItemValueString("Access_counter");
System.out.println("Counter steht auf: " + numStr );
String numStr2;
if (numStr.equals(" ") || numStr.equals("")) {
numStr2 = new String("1");
}
else {
Integer numInt = new Integer(numStr);
int num = numInt.intValue() + 1;
Integer numInt2 = new Integer(num);
numStr2 = new String(numInt2.toString());
}
doc.replaceItemValue("Access_counter", numStr2);
doc.save(false, false);
} catch(Exception e) {
e.printStackTrace();
}
}
}
m3:
--- Code: ---if (doc.isValid())
System.out.print( doc.getItemValueString("Beitrag"));
String numStr = doc.getItemValueString("Access_counter");
--- Ende Code ---
Du machst den check, ob doc valid ist, wenn dem nicht so ist, machst Du mit doc.getItemValueString weiter? Ob das gescheit ist?
Weiter kannst Du mit iSvalid nicht prüfen, ob doc überhaupt auf ein NotesDocument Objekt zeigt oder nicht (was vermutlich Deine Intention ist). Aus der Designer-Hilfe:
--- Zitat --- Indicates whether a Document object represents an existing document (not a deletion stub) initially.
--- Ende Zitat ---
koehlerbv:
--- Zitat von: m3 am 22.07.08 - 17:28:54 ---... Weiter kannst Du mit isValid nicht prüfen, ob doc überhaupt auf ein NotesDocument Objekt zeigt oder nicht ...
--- Ende Zitat ---
Korrekt - wirkliche "Geisterdokumente" (wegen defekten internen Tables) bekommt man so nicht zu fassen, die werden trotzdem mit IsValid quittiert. Das müsste man dann mit .HasItems kombiniert werden.
Ich kann mir aber nicht vorstellen, dass das das eigentliche Problem ist.
Bernhard
PS: Was sich mir nicht erschliesst - warum wird überhaupt eine unterschiedliche Routine im Notes und für den HTTP-Task verwendet? Einmal LS und einmal Java? Ob das noooot tut?
mleussner:
@m3: ich bin der Meinung, ich prüfe auf das Vorhandensein des docs und gebe im positiven Falle eine Meldung aus? Oder fehlen da irgendwelche Klammern?
@Bernhard: Tuuut wahrscheinlich nicht not. Aber ich bin mir bei dem HTTP-Geraffel eben nicht so sicher.
Mittlerweile bin ich auch weiter gekommen. Die Fehlermeldung im Javateil hat mich auf die Spur gebracht.
Ich habe da nämlich bei der Collection nur noch ein Doc zurückbekommen.
Das habe ich mit getfirstdoc geholt und da hat dann auch das hochsetzen des Zählers geklappt.
Insgesamt bin ich mir auch nicht sicher, ob das der richtige Weg ist. Aber der Kunde möchte wissen, welche Dokumente wie oft geöffnet werden, um überhaupt einen Überblick über die Nutzung dieser Info-DB zu bekommen.
Die DB domcount.nsf aus dem Sandbox-Download scheint ja ähnliches zu machen.
Aber wohl nur auf DB-Ebene und nicht für jedes Doc einzeln.
Ich bedanke mich schon mal für die Hilfe. Vielleicht weiß ja der eine oder andere, wie man die domcount.nsf sinnvoll verwendet und konfiguriert.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln