Autor Thema: Java-Agenten  (Gelesen 11675 mal)

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Java-Agenten
« 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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #1 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ß
Lotus Notes 8.0.2

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Java-Agenten
« Antwort #2 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.

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Java-Agenten
« Antwort #3 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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #4 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ß
Lotus Notes 8.0.2

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Java-Agenten
« Antwort #5 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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #6 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.  ???
Lotus Notes 8.0.2

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Java-Agenten
« Antwort #7 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.

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Java-Agenten
« Antwort #8 am: 04.11.08 - 13:06:11 »
genau so .....

Viel Erfolg!
Gruß

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #9 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ß
Lotus Notes 8.0.2

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Java-Agenten
« Antwort #10 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.

Offline FRANKI

  • Senior Mitglied
  • ****
  • Beiträge: 346
  • Geschlecht: Männlich
  • vergiss nicht zu tanzen...
Re: Java-Agenten
« Antwort #11 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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #12 am: 04.11.08 - 13:49:13 »
Ok, danke... ich melde mich.
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #13 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?!
Lotus Notes 8.0.2

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Java-Agenten
« Antwort #14 am: 04.11.08 - 14:35:31 »
Hast du meine Postings genau gelesen? Da habe ich dir schon eine Antwort gegeben.

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: Java-Agenten
« Antwort #15 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!
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 magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #16 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...
« Letzte Änderung: 04.11.08 - 15:31:27 von magic_halli »
Lotus Notes 8.0.2

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Java-Agenten
« Antwort #17 am: 04.11.08 - 16:22:05 »
Notesdocument ist in Java Document

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #18 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.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Java-Agenten
« Antwort #19 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz