Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: FRANKI am 09.12.02 - 12:05:39

Titel: Java-Agenten
Beitrag von: FRANKI am 09.12.02 - 12:05:39
Hallo,
ich möchte einen Agenten aus einer Maske heraus aufrufen.
Der Agent ist in JAVA geschrieben.
Der Aufruf erfolgt nach dem abspeichern des Dokument's.
Beim Aufruf möchte ich die DocUID dem Agenten mitgeben.

Kann mir je erklären, wie ich dem Agenten Parameter mitgeben kann (hier die DocID)

Danke
FRANKI
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 10:35:56
Hi,

ist zwar schon ewig her, seit das Thema erstellt wurde... Aber ich habe mir bereits die gleiche Frage gestellt!
Ich habe genau das gleich vor - hast bzw. wie hast Du das gelöst?

Gruß
Titel: Re: Java-Agenten
Beitrag von: MadMetzger am 04.11.08 - 10:55:13
Einem Agenten kann man optional eine DocId beim Aufruf der run-Methode via Script oder auch Java mitgeben:
notesAgent.Run( [ noteID$ ] )

Das steht alles in der Desingerhelp beschrieben.
Titel: Re: Java-Agenten
Beitrag von: FRANKI am 04.11.08 - 11:01:18
Hi,

ich mach es mittlerweile immer so, dass ich dem Aufruf des Agenten Parameter mitgebe
(so in der Art: datenbank+"/Agentenname?OpenAgent&action="+action )

Die URL werte ich dann im Agenten mit session.evaluate  aus.

Aufrufen kannst Du den Agenten durch ein Ereignis, z.B. onSubmit o.ä.)

Gruß
FRANKI
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 11:51:48
Mh, ich präzisiere mal mein Vorhaben:

Ich möchte aus einer Maske per Buttonklick einen Java-Agent aufrufen. Dieser Agent sollte aus der Maske einige Feldinhalte als Übergabeparameter erhalten und diese dann intern weiterverarbeiten.

1. Wie übergebe ich solche Feldinhalte an einen Java-Agent?
2. Wie würde der Aufruf des Agent mittels @Command dann aussehen?

Danke und Gruß
Titel: Re: Java-Agenten
Beitrag von: FRANKI am 04.11.08 - 11:58:47
also:

Du erstellst in Deiner Maske einen Button.
Die "Click"-Eigenschaften des Button könnten in Formelsprache so aussehen:

@Command([ReloadWindow] );
@Command([FileCloseWindow]);

@URLOpen(datenbank + "/Agentenname?OpenAgent&ID=" + @Text(@DocumentUniqueID))


Im Agenten holst Du Dir über session.evaluate die DocID und list dann z.B. per dok.getItemValueString("Feldname") die Feldwerte aus.

Gruß
Frank
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 12:06:03
Danke erstmal... ich meine aber keinen Browser Client, sondern den Notes-Client, an dem das mittels eines importierten Java-Agent realisiert werden soll! Nur zur Info... weil mich der @URLOpen-Aufruf hierbei stutzig macht.  ???
Titel: Re: Java-Agenten
Beitrag von: MadMetzger am 04.11.08 - 12:10:29
Wenn du das mit der Maske geöffnete Dokument gespeichert hast, kannst du den Agent via Button und den oben von mir erwähnten Methodenaufrufen samt Parametern aufrufen. Und lies mal in der Designerhilfe nach. Mit dem Parameter DocId hast du das Dokument in dem aufgerufenen Agent im Kontext und kannst dir die benötigten Werte über die Methoden der Klasse Notesdocument auslesen.
Titel: Re: Java-Agenten
Beitrag von: FRANKI am 04.11.08 - 13:06:11
genau so .....

Viel Erfolg!
Gruß
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 13:18:27
Ok, danke. Hier mal ein simples Beispiel, ob ich´s denn auch wirklich verstanden habe:  ::)

importierten Java-Agent bei Buttonklick aufrufen:
Zitat
@Command([ToolsRunMacro]; myAgent)

myAgent sieht dann so aus (liest bspw. einen Feldwert des aktuell geöffneten Dokuments aus):
Zitat
public class JavaAgent extends AgentBase {

  public void NotesMain() {
    try{
      Session session = getSession();
      AgentContext ac = session.getAgentContext();
      Database db = ac.getCurrentDatabase();

      // über DocID an geöffnetes Dokument bei Agent-Ausführung gelangen und dann evtl. Dokumentwerte auslesen
      Agent ag = ac.getCurrentAgent();
      Document curDoc = db.getDocumentByID(ag.getParameterDocID());
      // bspw. StringValue vom Feld "Subject" auslesen
      String sSubject = curDoc.getItemValueString("Subject");
     
    }catch(Exception e){
      e.printStackTrace();
    }
  }

War das so gemeint... konnte es leider noch nicht testen, da ich im Vorfeld erst abklären muß, wie einige Sachen in Notes funktionieren.  ;)

Danke und Gruß
Titel: Re: Java-Agenten
Beitrag von: MadMetzger am 04.11.08 - 13:22:54
Liest du auch, was wir schreiben? Bei uns war bisher nicht von einem @Command die Rede. So wie du es da jetzt hast, meinte ich es zumindest nicht. Ich weiß nämlich nicht, ob der Agent da das aktuelle Dokument mitbekommen hat.
Titel: Re: Java-Agenten
Beitrag von: FRANKI am 04.11.08 - 13:28:23
ich kann auch nicht sagen, ob das so funktioniert.

verscuhe doch mal folgendes:

1. Dokument abspeichern mit @Command([FileSave]);
2. Agent aufrunfen mit @URLOpen(datenbank + "/Agentenname?OpenAgent&ID=" + @Text(@DocumentUniqueID))
3. Im Agenten mit session.evaluate die DOCID aus der URL lesen.
4. Felder mit getItemValueString vom Agenten lesen.

so ungefähr sollte es klappen.
melde Dich wieder, wenn Du das mal ausprobiert hast.

Gruß
Frank
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 13:49:13
Ok, danke... ich melde mich.
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 14:09:32
Sorry, aber ich glaube, wir haben uns grundsätzlich falsch verstanden, was den Aufruf und die Verwendung des Agent anbelangt!
Der Java-Agent soll kein WebAgent sein und auch nicht aus dem Browser aufgerufen werden!
Es soll ein Java-Agent sein, der von einem Notes-Client aus aufgerufen wird.

@URLOpen([...]) habe ich bisher nur in Zusammenhang mit Websites und Notes gelesen!  ???
DominoDesigner Hilfe meint dazu:
Zitat
Retrieves a World Wide Web page specified by its URL.

Hab ich da bisher was falsch verstanden?!
Titel: Re: Java-Agenten
Beitrag von: MadMetzger am 04.11.08 - 14:35:31
Hast du meine Postings genau gelesen? Da habe ich dir schon eine Antwort gegeben.
Titel: Re: Java-Agenten
Beitrag von: m3 am 04.11.08 - 14:45:19
Markus, er will/kann/darf aber nicht LotusScript, sondern nur @-Formulas und Java (und das alles am Besten, ohne mit Notes überhaupt nur in Berührung zu kommen). Da is er mit 5 Zeilen Lotusscript überfordert!
Titel: Re: Java-Agenten
Beitrag von: magic_halli am 04.11.08 - 15:20:11
...Sorry, wenn ich anscheinend ein geistiger Spätzünder oder Nullchecker bin!
Ich setze mich halt leider erst seit paar Tagen mit Notes, Agents usw. auseinander und bekomme immer neue Inputs wie man was machen kann.  :-:

Zitat
Wenn du das mit der Maske geöffnete Dokument gespeichert hast, kannst du den Agent via Button und den oben von mir erwähnten Methodenaufrufen samt Parametern aufrufen. ... Mit dem Parameter DocId hast du das Dokument in dem aufgerufenen Agent im Kontext und kannst dir die benötigten Werte über die Methoden der Klasse Notesdocument auslesen.
OK...
1. Ich weiß nunmal leider (noch) nicht, wie der Agentaufruf mit mit 'notesAgent.Run( [ noteID$ ] )' hinter einem Button aussehen soll, da ich bisher immer nur was von @Command gelesen habe.
2. Ist mein Java-Quellcode denn nun falsch, oder nur mein AgentAufruf (siehe mein obiges Posting)?
3. Die Klasse 'Notesdocument' existiert (bei mir) im Notes.jar nicht?! Edit: Ahh, gibts nur in LotusScript!

Zitat
Markus, er will/kann/darf aber nicht LotusScript, sondern nur @-Formulas und Java (und das alles am Besten, ohne mit Notes überhaupt nur in Berührung zu kommen). Da is er mit 5 Zeilen Lotusscript überfordert!
...ich möchte einfach soviel wie möglich durch Java realisieren, um relativ unabhängig von Eingriffen in Notes zu sein, wenn´s später mal irgendwie auf einem noch jungfräulichen Notes analog realisiert werden soll.

Gruß

PS: Ich hoffe, ich lag nun nicht wieder meilenweit mit meinen Gedanken daneben...
Titel: Re: Java-Agenten
Beitrag von: Ralf_M_Petter am 04.11.08 - 16:22:05
Notesdocument ist in Java Document

Grüße

Ralf
Titel: Re: Java-Agenten
Beitrag von: eknori am 04.11.08 - 16:25:32
Zitat
Ich setze mich halt leider erst seit paar Tagen mit Notes, Agents usw. auseinander und bekomme immer neue Inputs wie man was machen kann.

OK, aber ohne sich mal hinzusetzen, den Designer zu starten und einfach mal ein paar Sachen ausprobieren wird das nie und nimmer was.
Titel: Re: Java-Agenten
Beitrag von: koehlerbv am 04.11.08 - 16:34:17
...ich möchte einfach soviel wie möglich durch Java realisieren, um relativ unabhängig von Eingriffen in Notes zu sein, wenn´s später mal irgendwie auf einem noch jungfräulichen Notes analog realisiert werden soll.

Dieses Argument greift hinsichtlich Notes / Domino auch vollkommen daneben. Entweder, die Java-Elemente stecken a) sowieso in den Notes-Anwendungen (Datenbanken) oder sind b) komplett extern. In Fall a) ergibt sich keinerlei Unterschied zwischen den Programmiersprachen, in Fall b) erhöht sich der Aufwand sogar.

Zwei prinzipielle Ratschläge:
- Zuerst die Auseinandersetzung mit der Middleware Notes / Domino - dann die Details
- Auf jeden Fall die jeweils adäquaten / einfachen (und einfach zu portierenden) Mittel zur Erreichung des Ziels einsetzen und sich nicht auf eine Art der Programmierung stürzen und die anderen ausser Acht zu lassen.

Bernhard
Titel: Re: Java-Agenten
Beitrag von: m3 am 04.11.08 - 16:44:29
...Sorry, wenn ich anscheinend ein geistiger Spätzünder oder Nullchecker bin!
Ich setze mich halt leider erst seit paar Tagen mit Notes, Agents usw. auseinander und bekomme immer neue Inputs wie man was machen kann.  :-:

2) Du solltest Dir von einem Notes-Entwickler im Haus einen Crashkurs über Notesentwicklung im Backend geben lassen.

ad 2) Dann holt Euch zumindest einen externen, der euch ein wenig Coached, sonst wird das nix.

Es geht nicht ums "heftig", das bekommt ein guter Java-Coder schon gebacken, aber der muss zuerst mal die Notes/Domino Welt verstehen.