Profildokument aktualisieren

  • Hallo alle zusammen,


    ich greife über einen Java-Agenten auf ein Profildokument zu und ändere dort einen Wert. Das klappt auch soweit alles einwandfrei.


    Code
    import lotus.domino.*;public class JavaAgent extends AgentBase {    public void NotesMain() {        try {            Session session = getSession();            AgentContext agentContext = session.getAgentContext();            Document profileDoc = agentContext.getCurrentDatabase().getProfileDocument("Profile", "");            System.out.println("Bisheriger Wert in Profildokument: " + profileDoc.getItemValueString("testfeld"));            System.out.println("Wert wird geaendert auf \"neuer Wert\"");            profileDoc.replaceItemValue("testfeld","neuer Wert");            profileDoc.save();            System.out.println("Neuer Wert in Profildokument: " + profileDoc.getItemValueString("testfeld"));        } catch(Exception e) {            e.printStackTrace();        }    }}


    Über einen zweiten Agenten, welcher aus einer einfachen Formel besteht, rufe ich das Profildokument in Notes auf um mir dort den enthaltenen Wert anzusehen und ihn ggf. zu ändern.


    Code
    @Command([EditProfile];"Profile")


    Klappt ebenfalls problemlos.


    Nun das eigentliche Problem: Ich starte Notes, öffne die Datenbank welche die beiden Agenten und das Profildokument beinhaltet. Dann starte den Formel-Agent. (Ich rufe also das Profildokument auf.) In das Feld "testfeld" trage ich nun "alter Wert" ein und speichere. Der Inhalt des Feldes wurde erfolgreich aktuallisiert und in das Profildokument geschrieben. Ich schließe also die Maske wieder.


    Nun rufe den Java-Agenten auf, welcher folgende Ausgabe erzeugt:


    Zitat

    Bisheriger Wert in Profildokument: alter Wert
    Wert wird geaendert auf "neuer Wert"
    "Neuer Wert in Profildokument: neuer Wert


    Das feld wurde wiederum erfolgreich aktualisiert und das Profildokument gespeichert. Rufe ich nun jedoch wieder den Formel-Agenten auf, steht dort im Feld immer noch "alter Wert". Erst wenn ich Notes vollständig beende, wieder starte und dann den Formel-Agent erneut aufrufe, sieht man dort den neuen Wert drin stehen.


    Frage: Was muss ich tun, damit ich nach dem Ändern des Werts mit dem Java-Agenten sofort den neuen (aktuellen) Wert angezeigt bekomme, wenn ich mir das Profildokument mit dem Formel-Agenten anzeigen lasse ?


    MfG


    Leon

  • Profildokumente werden beim Öffnen der Datenbank gecacht, da diese dazu gedacht sind Werte einmalig aufzunehmen und dann nur noch zu lesen und seltene Änderungen gemacht werden.
    Das Verhalten daß du hier hast ist soweit bekannt und durch das Caching auch gewollt.


    Entweder du lebst damit, daß du zumindest mal die Datenbank im Client und Designer schliessen musst oder du verwendest dafür normale Dokumente

  • Hallo taurec und danke für Deine Antwort.


    Okay, ich denke damit kann ich leben. Ich war nur etwas verwundert über das Verhalten. In dem Profildokument möchte ich die Konfiguration für einen Agenten speichern. Zusätzlich soll der Agent dort die Möglichkeit haben Werte abzulegen. Diese Werte sollen zwar in der Endphase nicht mehr vom User gesehen bzw. geändert werden können, aber in der Entwicklungsphase wollte ich mir diese einfach mal mit anzeigen lassen. Da ist mir das aufgefallen. Hätte ja sein können, dass ich vergesse etwas zu aktualisieren.


    Also, nochmals danke für die Aufklärung. :)


    MfG


    Leon


    PS: Gibt es denn einen Weg, ein Dokument (bsp. dieses Profildokument) gezielt im Cache zu löschen bevor man es wieder öffnet ? Wenn nicht ist auch nicht schlimm. Wäre nur gut zu wissen.