Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: towo am 23.09.05 - 14:58:57

Titel: JavaAgent soll Files auf den Server schreiben
Beitrag von: towo am 23.09.05 - 14:58:57
Moin moin,

ich habe folgendes Problem:

in einer Notesdatenbank habe ich einen Javaagenten.
Dieser erzeugt Files und legt diese in einem relativen Pfad ab.
Wenn ich den Agenten lokal starte, erhalte ich die Files auch lokal. So weit, so gut, soll so auch sein.

Wenn ich die NSF dann aber mit dem Unixserver repliziere und den Agenten auf dem Server ausführe, erhalte ich die FIles (trotz relativer Pfadangabe und universeller Pfadtrenner - file.separator ...) auch lokal. Die sollen dann aber in einen definierten Ordner auf dem Server geschrieben werden.

In java und Notes bin ich noch etwas unsicher, ein Freund meinte, man müsse einen Agenten schreiben, der den Agenten dann auf dem Server selbst startet.

Kann mir jemand helfen bzw mir einen Rat geben? WIe mache ich das oder gibt es einen einfacheren Weg?

Danke! MfG TOWO
Titel: Re: JavaAgent soll Files auf den Server schreiben
Beitrag von: flaite am 23.09.05 - 15:06:39
Ein von der Workstation gestarter Agent läuft auf der Workstation.
Geschedulte Agenten oder Webagenten (von WebquerySaveaufgerufen) laufen auf dem Server.

Oder wie dein Freund gesagt hat: Agent.runOnServer

Titel: Re: JavaAgent soll Files auf den Server schreiben
Beitrag von: towo am 23.09.05 - 15:42:36
und wie implemtiere ich das?

Der aktuelle Code lautet bisher:

---------------------------------
import lotus.domino.*;
import java.io.*;

public class JavaAgent extends AgentBase {
   
   public static final String FILENAME="/notestmp/test4.txt";
   
   public void NotesMain() {

      try {
         File file = new File(FILENAME);
         if(file.getParentFile()!=null&&(! file.getParentFile().exists())){
            file.getParentFile().mkdirs();
         }   
         FileWriter writer = new FileWriter(file);
         
         writer.write("Test4");
         writer.close();
         
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();
         
      } catch(Exception e) {
         e.printStackTrace();
      }}
   }
-----------------------------

WIe muß denn heißen? Ich danke Euch sehr, falls mir jemand so explizit helfen kann! Danke!
Titel: Re: JavaAgent soll Files auf den Server schreiben
Beitrag von: flaite am 24.09.05 - 16:05:56
Es gibt verschiedene Möglichkeiten und die Auswahl hängt u.a. auch davon ab, welche Kontext Information du für den Prozess "Schreiben eines Files" des Agenten benötigst.
Die Wahrscheinlichkeit ist relativ hoch, dass der Agent Feldinhalte aus dem Dokument braucht aus dem der Anwender den Agenten startet.
Dafür muss dieses Dokument erst einmal gespeichert werden.

Grundsätzlich 2 Möglichkeiten:
1. Du schreibst einen Lotus Script Agenten der
a) das Dokument speichert.
b) über den geschilderten Mechanismus agent.runOnServer(docId) ->(try Hilfe, bei Problemen fragen) startest du den Java Agenten und übergibst ihm die DocId des Dokuments, das der LotusScript Agent gespeichert hat.

2.
a) Du speicherst das Dokument nur, setzt aber ein zweites Feld createFile (oder ein anderer beliebiger schöner Name).
b) du erstellst auf dem Server eine versteckte Ansicht (processFile). Mit einer Auswahlformel, die nach form und nach createFile="1" selektiert.
c) Du schreibst den Java Agenten als geschedulten Agenten. Dieser geschedulte Agent verarbeitet alle Dokumente, die in der versteckten Ansicht sind.

Versuchs einfach erst mal und frag weiter, falls du auf Probleme stösst.

Axel
Titel: Re: JavaAgent soll Files auf den Server schreiben
Beitrag von: towo am 10.10.05 - 10:21:01
Danke!