Autor Thema: Dokumentenzugriffszähler  (Gelesen 2804 mal)

Offline mleussner

  • Frischling
  • *
  • Beiträge: 26
  • Geschlecht: Männlich
  • Gegenseitige Hilfe macht selbst arme Leute reich.
Dokumentenzugriffszähler
« am: 22.07.08 - 08:36:45 »
 :)

Hallo an alle,

vielleicht habe ich ja mit dieser Frage mehr Glück. Ich versuche für eine Info-DB einen Dokumentenzugriffszähler zu bauen, der sowohl im Intra- als auch im Internet funzt.

Also hab ich mir einen Agenten geschrieben, der mit Adminberechtigung im Queryopen-Event ein Zählerfeld im Dokument hochzählt. Das funzt auch schon im Notes.

Übers Internet soll der Agent im WebQueryOpen gestartet werden.

@URLOpen("http://N-02/TestWebZugriff/schulunt.nsf/counter?openAgent")

Das klappt gar nicht.  :(

Das Feld wird in keinster Weise editiert.

Zusätzlich tauchen im Serverlog die folgenden Meldungen auf:

22.07.2008 08:26:14   HTTP: Missing resource stringHTTP: Missing resource stringHTTP: Missing resource stringHTTP: Missing resource stringFile does not exist [/notes-apps/VGH-Infocenter/vghinfocenter.nsf/infocenter_forms.css?openPage]
22.07.2008 08:26:14   HTTP: Missing resource stringHTTP: Missing resource stringHTTP: Missing resource stringHTTP: Missing resource stringFile does not exist [/notes-apps/VGH-Infocenter/vghinfocenter.nsf/btn_print.gif?OpenImageResource]
22.07.2008 08:26:14   HTTP: Missing resource stringHTTP: Missing resource stringHTTP: Missing resource stringHTTP: Missing resource stringFile does not exist [/notes-apps/VGH-Infocenter/vghinfocenter.nsf/btn_closewin.gif?OpenImageResource]

Welchen Fehler mache ich denn da? Ich finds einfach nicht.
« Letzte Änderung: 22.07.08 - 08:44:10 von mleussner »
Ein gutes Gedächtnis ist nicht so gut wie ein bisschen Tinte.

SunOS 5.10 & Server 2003
Release 8.5.2FP2HF232
Notes Release 8.5.2FP2

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokumentenzugriffszähler
« Antwort #1 am: 22.07.08 - 08:55:43 »
Hm, habe zwar keine Ahnung von dem Webgedingse, aber die angemaulten Ressourcen sind auch da und für das Web angehakt?
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Dokumentenzugriffszähler
« Antwort #2 am: 22.07.08 - 09:14:05 »
Vielleicht bin ich ja blöde, aber das sind doch alles Bildressourcen, die da angemeckert werden?
Die haben doch wahrscheinlich nichts mit der Ausführung des Agenten zu tun, sondern mit dem Öffnen der Maske?
Gib dem Agenten einen (selbstgeschriebenen) Log mit bzw. lass ihn irgendetwas wegschreiben, damit du siehst, ob der Agent überhaupt anspringt.

grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline mleussner

  • Frischling
  • *
  • Beiträge: 26
  • Geschlecht: Männlich
  • Gegenseitige Hilfe macht selbst arme Leute reich.
Re: Dokumentenzugriffszähler
« Antwort #3 am: 22.07.08 - 16:11:52 »
@Dau-In: Ja, hast Recht. Das Problem war nicht dort zu suchen.

Der Agent bringt, glaub ich, lediglich die Meldungen

22.07.2008 11:09:59   33:78
22.07.2008 11:10:07   33:7A

bzw.

22.07.2008 10:56:21   33:32
22.07.2008 10:56:21   33:33
Was immer das zu bedeuten hat?!?

Ich habe jetzt noch mal rumprobiert und einiges geändert.
Jetzt krieg ich Ausgaben ins Serverlog:

22.07.2008 14:15:49   HTTP JVM: gestartet
22.07.2008 14:15:49   HTTP JVM: Count = 9
22.07.2008 14:15:49   HTTP JVM: NotesException: Notes error 4323
22.07.2008 14:15:49   HTTP JVM:    at lotus.domino.local.Database.NgetDocumentByID(Native Method)
22.07.2008 14:15:49   HTTP JVM:    at lotus.domino.local.Database.getDocumentByID(Unknown Source)
22.07.2008 14:15:49   HTTP JVM:    at JavaAgent.NotesMain(JavaAgent.java:19)
22.07.2008 14:15:49   HTTP JVM:    at lotus.domino.AgentBase.runNotes(Unknown Source)
22.07.2008 14:15:49   HTTP JVM:    at lotus.domino.NotesThread.run(NotesThread.java:249)

Soweit so gut.
Und nun?
Ein gutes Gedächtnis ist nicht so gut wie ein bisschen Tinte.

SunOS 5.10 & Server 2003
Release 8.5.2FP2HF232
Notes Release 8.5.2FP2

Offline WernerMo

  • @Notes Preisträger
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.050
  • Geschlecht: Männlich
Re: Dokumentenzugriffszähler
« Antwort #4 am: 22.07.08 - 16:27:47 »
Hallo

eine Datenbank mit allen Noteserrrorcodes gibts u.a. hier:
http://www.konfabulieren.com/2004/12/09/database-of-all-notes-error-codes/

Gruß Werner
Gruß Werner
  o                                                  o   
 /@\  Nächster @Notes-Stammtisch  /@\  online Sept. 2020?
_/_\__________________________/_\_ Details folgen.

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokumentenzugriffszähler
« Antwort #5 am: 22.07.08 - 16:28:20 »
Ist das Richtig:

NgetDocumentByID ??
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline mleussner

  • Frischling
  • *
  • Beiträge: 26
  • Geschlecht: Männlich
  • Gegenseitige Hilfe macht selbst arme Leute reich.
Re: Dokumentenzugriffszähler
« Antwort #6 am: 22.07.08 - 16:34:30 »
@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();
        }
    }
}
Ein gutes Gedächtnis ist nicht so gut wie ein bisschen Tinte.

SunOS 5.10 & Server 2003
Release 8.5.2FP2HF232
Notes Release 8.5.2FP2

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Dokumentenzugriffszähler
« Antwort #7 am: 22.07.08 - 17:28:54 »
Code
if (doc.isValid())
                System.out.print( doc.getItemValueString("Beitrag"));
             
             String numStr = doc.getItemValueString("Access_counter");

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.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dokumentenzugriffszähler
« Antwort #8 am: 22.07.08 - 17:41:49 »
... Weiter kannst Du mit isValid nicht prüfen, ob doc überhaupt auf ein NotesDocument Objekt zeigt oder nicht ...

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?

Offline mleussner

  • Frischling
  • *
  • Beiträge: 26
  • Geschlecht: Männlich
  • Gegenseitige Hilfe macht selbst arme Leute reich.
Re: Dokumentenzugriffszähler
« Antwort #9 am: 23.07.08 - 07:43:47 »
@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.
Ein gutes Gedächtnis ist nicht so gut wie ein bisschen Tinte.

SunOS 5.10 & Server 2003
Release 8.5.2FP2HF232
Notes Release 8.5.2FP2

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Dokumentenzugriffszähler
« Antwort #10 am: 23.07.08 - 07:52:49 »
Gucke dir einmal den Audit Manager an. http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Audit%20Manager

In der Beschreibung steht, daß man damit Changes dokumentieren kann. Bin mir aber ziemlich sicher, daß es auch einen READ Event gibt.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline mleussner

  • Frischling
  • *
  • Beiträge: 26
  • Geschlecht: Männlich
  • Gegenseitige Hilfe macht selbst arme Leute reich.
Re: Dokumentenzugriffszähler
« Antwort #11 am: 24.07.08 - 13:43:28 »
Ja, scheint ne Super Anwendung zu sein.

Nur leider für Windows.
Das wars denn für mich.

Trotzdem Danke.
Ein gutes Gedächtnis ist nicht so gut wie ein bisschen Tinte.

SunOS 5.10 & Server 2003
Release 8.5.2FP2HF232
Notes Release 8.5.2FP2

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Dokumentenzugriffszähler
« Antwort #12 am: 24.07.08 - 13:53:24 »
@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?
Das if fällt schon auf die Dchnautze, wenn doc kein vernüftiger Wert zugewiesen wurde. isValid prüft nicht. ob Dokument vorhanden ist, sondern, ob es sich bei dem Dokument um ein "normales" Dokument, oder ein Deletion-Stub handelt (siehe Designer-Hilfe).

Was mich irritiert ist, dass Du, wenn das IF (wenn es denn mal richtig wäre) ergäbe, dass es kein dokument gibt, zwar eine Meldung ausgibst, dann aber fröhlich mit dem doc weiter arbeitest.

Aber Du wirst schon wissen, was Du tust.  ;D
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz