Discussion:
[Lotus Notes] und Java ... Referenzen, API´s Tutorials und Erfahrungen?
(zu alt für eine Antwort)
Joachim Arrasz
2005-01-19 13:04:42 UTC
Permalink
Hallo,

ich versuche gerade in Erfahrung zu bringen, inwieweit Lotus Notes und
Java interagieren. IBM wirbt ja damit, dass Notes/Domino inzwischen J2EE
tauglich sind. Daher würde mich mal interessieren, ob hier jemand einen
Link zu einer API, einem Tutorial usw. hat?

Weiterhin wäre natürlich ein Erfahrungsbericht recht nützlich :)

Gruss Achim
Kai-Uwe Klavei
2005-01-20 10:51:23 UTC
Permalink
Post by Joachim Arrasz
ich versuche gerade in Erfahrung zu bringen, inwieweit Lotus Notes und
Java interagieren. IBM wirbt ja damit, dass Notes/Domino inzwischen J2EE
tauglich sind. Daher würde mich mal interessieren, ob hier jemand einen
Link zu einer API, einem Tutorial usw. hat?
Zur Orientierung: Lotus ist eine von IBMs fünf Marken (neben DB2,
Rational, WebSphere, Tivoli); darunter sind dann Produkte
zusammengefasst. Hier Notes, der Client, und Domino Server und andere.
Was die Produkte genau leisten können, in welcher Ausprägung
(Messaging-, Utility-, Enterprise-Server, Express Varianten), ist mir
nicht genau bekannt. Du kannst dich ja mal durch das IBM Material - das
gibt es reichlich - wühlen:

http://www.ibm.com/developerworks/lotus/
Bzw.
http://www.ibm.com/developerworks/lotus/products/notesdomino/
Vielleicht hier:
http://www.lotus.com/products/product4.nsf/wdocs/appdevhomepage
Post by Joachim Arrasz
Weiterhin wäre natürlich ein Erfahrungsbericht recht nützlich :)
Zum einen ist Java eine Alternative - zu LotusScript oder Notes
Formelsprache - bei der Agent Entwicklung. Und ein Domino Server kann
AFAIK mindestens auch Webserver bzw. Webapplicationserver sein, d.h.
Applets, Servlets und JSPs sind möglich. Domino Designer ist da eine
Entwicklungsumgebung:
http://www.lotus.com/products/product4.nsf/wdocs/dominodesignerhome

Gruß Kai-Uwe
Joachim Arrasz
2005-01-20 12:19:45 UTC
Permalink
Hi,
Post by Kai-Uwe Klavei
Zur Orientierung: Lotus ist eine von IBMs fünf Marken (neben DB2,
Rational, WebSphere, Tivoli); darunter sind dann Produkte
zusammengefasst. Hier Notes, der Client, und Domino Server und andere.
ja, das ist soweit klar, darum habe ich auch geschrieben Lotus Notes.
Was ich hier aber nicht verstehe, ist das seit R5 bei IBM immer
Notes/Domino dabei steht.
Post by Kai-Uwe Klavei
Zum einen ist Java eine Alternative - zu LotusScript oder Notes
Formelsprache - bei der Agent Entwicklung. Und ein Domino Server kann
AFAIK mindestens auch Webserver bzw. Webapplicationserver sein, d.h.
Applets, Servlets und JSPs sind möglich. Domino Designer ist da eine
http://www.lotus.com/products/product4.nsf/wdocs/dominodesignerhome
ok, hier habe ich nun das Problem, das ich natürlich gerne als Java
Entwickler mit der Java-API arbeiten will, die es aber erst seit Version
R5 (ist das richtig) zu den Programmen Notes/Domino gibt.

Weiterhin suche ich einfach mal Tutorial, wie man z.B einen Agenten
schreibt, der meinetwegen Kalenderdaten updated, ausliesst oder
einträgt. Aber sowas ist einfach nicht zu finden. Ist das so eine
eingeschworene Gemeinde? Oder ist das Geraffel einfach derart am
aussterben?

Gruss Achim
Kai-Uwe Klavei
2005-01-20 13:31:36 UTC
Permalink
Post by Joachim Arrasz
Post by Kai-Uwe Klavei
Zur Orientierung: Lotus ist eine von IBMs fünf Marken (neben DB2,
Rational, WebSphere, Tivoli); darunter sind dann Produkte
zusammengefasst. Hier Notes, der Client, und Domino Server und andere.
ja, das ist soweit klar, darum habe ich auch geschrieben Lotus Notes.
Was ich hier aber nicht verstehe, ist das seit R5 bei IBM immer
Notes/Domino dabei steht.
Und ich verstehe deine Frage nicht. Üblicherweise werden die Produkte ja
doch in Kombination (Messaging Server und Client) verwendet.
Post by Joachim Arrasz
Post by Kai-Uwe Klavei
Zum einen ist Java eine Alternative - zu LotusScript oder Notes
Formelsprache - bei der Agent Entwicklung. Und ein Domino Server kann
AFAIK mindestens auch Webserver bzw. Webapplicationserver sein, d.h.
Applets, Servlets und JSPs sind möglich. Domino Designer ist da eine
http://www.lotus.com/products/product4.nsf/wdocs/dominodesignerhome
ok, hier habe ich nun das Problem, das ich natürlich gerne als Java
Entwickler mit der Java-API arbeiten will, die es aber erst seit Version
R5 (ist das richtig) zu den Programmen Notes/Domino gibt.
War R5 vor 6.5 und war davor 4.6 - bin selber verwirrt. Ich meine aber,
bereits bei 4.6 war Java möglich.
Post by Joachim Arrasz
Weiterhin suche ich einfach mal Tutorial, wie man z.B einen Agenten
schreibt, der meinetwegen Kalenderdaten updated, ausliesst oder
einträgt. Aber sowas ist einfach nicht zu finden. Ist das so eine
eingeschworene Gemeinde? Oder ist das Geraffel einfach derart am
aussterben?
IBM stellt gewöhnlich eine Menge gutes Material zur Verfügung:
http://www.lotus.com/ldd/notesua.nsf

Dort "documentation by product" wählen, dann "Domino Designer" - da
findest du einiges.

Die Domino Designer Hilfe entält genügend Beispiele zur Java API:
http://www-12.lotus.com/ldd/doc/domino_notes/6.5.1/help65_designer.nsf/Main?OpenFrameSet

Das ist ein Agent, man benötigt die Datei Notes.jar, ich meine ein 1.3
JDK und ... extends DebugAgentBase ermöglicht debuggen in z.B. Eclipse -
steht alles in der Hilfe.

import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
} catch (Exception e) {
e.printStackTrace();
}
}
}

Oder IBM Redbooks wählen und z.B:
Domino Designer 6: A Developer's Handbook - Chapter 14.12.
Als PDF oder Online hier:
http://www.redbooks.ibm.com/redbooks/SG246854.html

Und die developerWorks Lotus Artikel mal nach Java durchsuchen:
http://www.ibm.com/developerworks/views/lotus/articles.jsp

Ich denke der klassische Notes Entwickler verwendet LotusScript und
Formelsprache - aber geheim und eingeschworen ist auch bzgl. Java nichts.

Gruß Kai-Uwe
Daniel Wieneck
2005-01-20 18:24:31 UTC
Permalink
Hallole,
Post by Joachim Arrasz
Weiterhin suche ich einfach mal Tutorial, wie man z.B einen Agenten
schreibt, der meinetwegen Kalenderdaten updated, ausliesst oder
einträgt. Aber sowas ist einfach nicht zu finden. Ist das so eine
eingeschworene Gemeinde? Oder ist das Geraffel einfach derart am
aussterben?
Die Java-API kannst du "normal" benutzen (JDK 1.3 glaub ich).

Die Java-API für Notes findest du in der Designer Hilfe unter dem
Stichwort "java classes" (sufu).
Das sind eigentlich die gängigen wie in Script.

Allerdings ist es nicht so sonderlich interessant einen Java (-Web-)
Agenten zu schreiben.
Interessanter wird es z.B. ein Zusatztool zu entwickeln, welches über
CORBA einen Dominoserver anspricht.

Das sind eigentlich so meine Erfahrungen.

Ach ja auch noch intressant ist, dass wenn du Swing benutzen willst, es
nur im eigentlich Notesclient funktioniert aber nicht im Web (wenn
dieser auf einem Dominoserver liegt). ;)

Gruß,

Daniel
Kai-Uwe Klavei
2005-01-20 19:17:28 UTC
Permalink
Post by Joachim Arrasz
Weiterhin suche ich einfach mal Tutorial, wie man z.B einen Agenten
schreibt, der meinetwegen Kalenderdaten updated, ausliesst oder
einträgt.
Die Kalenderdaten sind in der persönlichen Mail Datenbank; innerhalb
dieser würdest du einen Agenten erstellen. Du öffnest deine Mail
Datenbank im Domino Designer; dort kannst du direkt einen Java Agenten
programmieren oder auch importieren (falls du außerhalb des Designers
entwickelst). Ein Datensatz/Record/Zeile ist in einer Notes DB ein
Document, wobei dieses wiederum Items - Spalten/Felder/Eigenschaften -
enthält. Nicht jedes Dokument enthält alle Felder, wie das klassisch
tabellarisch der Fall wäre - in der DB sind eben auch andere Dokumente,
E-Mails z.B. Was jetzt einen Kalendertermin ausmacht, kann ich nicht
genau sagen - schau dir dazu die Eigenschaften eines Dokuments an. Z.B
hat eine Einladung zu einem Termin andere Dokument Eigenschaften.

Anbei häßlich formatierter Beispielcode, der alle Dokumente anfasst.

import lotus.domino.*;

public class DemoAgent extends DebugAgentBase {
/**
* The code in NotesMain() executes when the agent is launched.
*
* @see lotus.domino.AgentBase#NotesMain()
*/
public void NotesMain() {
try {

// your code start
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database db = agentContext.getCurrentDatabase();
//DocumentCollection dc = agentContext.getUnprocessedDocuments();
DocumentCollection dc = db.getAllDocuments();
Document doc = dc.getFirstDocument();
while (doc != null) {
String form = doc.getItemValueString("Form");
if ("Appointment".equals(form)) {
System.out.println("Dies ist womöglich ein Kalendertermin.")
}
doc = dc.getNextDocument();
}
// your code end

} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Runs the agent with Domino AgentRunner tool. (Notes will not use
* the <code>main</code> method.)
*
* @param args the command line arguments.
*/
public static void main(String[] args) throws Exception {
lotus.domino.AgentRunner.main(new String[] { "DemoAgent",
"C:\\Programme\\lotus\\notes\\data\\dev\\devmail.nsf",
"Local" });
}
}

Gruß Kai-Uwe
Joachim Arrasz
2005-01-21 08:18:32 UTC
Permalink
Hi,

erstmal super vielen Dank an Kai und Co. für die ausführliche
Einstiegshilfe. Es scheint doch nicht so dramatisch zu sein, wie ich mir
das vorgestellt habe.
Post by Kai-Uwe Klavei
Die Kalenderdaten sind in der persönlichen Mail Datenbank; innerhalb
dieser würdest du einen Agenten erstellen. Du öffnest deine Mail
Datenbank im Domino Designer; dort kannst du direkt einen Java Agenten
programmieren oder auch importieren (falls du außerhalb des Designers
entwickelst). Ein Datensatz/Record/Zeile ist in einer Notes DB ein
Document, wobei dieses wiederum Items - Spalten/Felder/Eigenschaften -
enthält. Nicht jedes Dokument enthält alle Felder, wie das klassisch
tabellarisch der Fall wäre - in der DB sind eben auch andere Dokumente,
E-Mails z.B. Was jetzt einen Kalendertermin ausmacht, kann ich nicht
genau sagen - schau dir dazu die Eigenschaften eines Dokuments an. Z.B
hat eine Einladung zu einem Termin andere Dokument Eigenschaften.
ok, das bedeutet aber, das es kein JDBC braucht, sondern Agenten die auf
dem Server wirklich abstrahierte Kalender-, eMail- usw Objekte auslesen
und die dann verarbeitet werden können! Klingt eigentlich recht komfortabel!
Post by Kai-Uwe Klavei
Anbei häßlich formatierter Beispielcode, der alle Dokumente anfasst.
import lotus.domino.*;
public class DemoAgent extends DebugAgentBase {
/**
* The code in NotesMain() executes when the agent is launched.
*
*/
public void NotesMain() {
try {
// your code start
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database db = agentContext.getCurrentDatabase();
//DocumentCollection dc = agentContext.getUnprocessedDocuments();
DocumentCollection dc = db.getAllDocuments();
Document doc = dc.getFirstDocument();
while (doc != null) {
String form = doc.getItemValueString("Form");
if ("Appointment".equals(form)) {
System.out.println("Dies ist womöglich ein Kalendertermin.")
}
doc = dc.getNextDocument();
}
// your code end
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Runs the agent with Domino AgentRunner tool. (Notes will not use
* the <code>main</code> method.)
*
*/
public static void main(String[] args) throws Exception {
lotus.domino.AgentRunner.main(new String[] { "DemoAgent",
"C:\\Programme\\lotus\\notes\\data\\dev\\devmail.nsf",
"Local" });
}
}
das schaut eigentlich recht simpel aus, ich denke ich muss mir den
Designer schleunigst organisieren. Sind die API´s eigentlich frei
erhältlich, oder nur mit einer Lizenz?

Oje, da lass ich mich auf was ein :)

Danke euch nochmals!!

Gruss Achim
Kai-Uwe Klavei
2005-01-21 10:18:08 UTC
Permalink
Post by Joachim Arrasz
erstmal super vielen Dank an Kai und Co. für die ausführliche
Einstiegshilfe. Es scheint doch nicht so dramatisch zu sein, wie ich mir
das vorgestellt habe.
Dramatisch ist das auch nicht.
Post by Joachim Arrasz
ok, das bedeutet aber, das es kein JDBC braucht, sondern Agenten die auf
dem Server wirklich abstrahierte Kalender-, eMail- usw Objekte auslesen
und die dann verarbeitet werden können! Klingt eigentlich recht komfortabel!
Also, Agent habe ich nur als Beispiel gebracht. Was Agenten sind, wie
die Zeit-, Menü- oder Event-gesteuert ausgeführt werden, steht alles in
der Designer Hilfe ausführlich beschrieben. Applikationen, die den
Domino Server über CORBA ansprechen, wie Daniel schrieb, sind auch möglich.
Und, es gibt keine Kalender, E-Mail u.ä Objekte, es gibt nur Document
und Item (entspr. Datensätze und ihre Felder) - und noch ein paar andere
Klassen.
JDBC wird nicht verwendet, sondern die beiliegende API. Dann existiert
da noch NotesSQL - nur für Domino Server auf Win; damit und mit der
JDBC-ODBC bridge ginge evtl. auch was.
Post by Joachim Arrasz
das schaut eigentlich recht simpel aus, ich denke ich muss mir den
Designer schleunigst organisieren. Sind die API´s eigentlich frei
erhältlich, oder nur mit einer Lizenz?
Das weiß ich nicht - Trial Versionen der Softwaren kann man bekommen:
http://www.ibm.com/developerworks/lotus/downloads/
http://www.ibm.com/developerworks/lotus/toolkits/

Gruß Kai-Uwe
Hans Wurst
2005-01-21 23:05:57 UTC
Permalink
Joachim Arrasz schrieb:

[...]
Post by Joachim Arrasz
Weiterhin wäre natürlich ein Erfahrungsbericht recht nützlich :)
Java und Notes/Domino ist Hexenwerk ;-)
Nicht nur das die IBM eine eigene JVM unterlegt hat (in R5 eine alte
1.1.8, in 6.x die 1.3), auch das altbekannte main gibt es nicht.
Dies erschwert das Entwickeln in einer richtigen IDE mit anschließendem
Übertrag ins Domino.
Prinzipiell hast Du bei der Java-Integration 3 Ansatzmöglichkeiten:

1) Dein Code läuft auf dem Notes-Client, was m.E. keinen Sinn macht, da
nur Backend-Klassen unterstützt werden und die Stärken des Clients eher
im Frontend liegen.
2) Dein Code läuft auf dem Domino-Server und wird von Notes getriggert.
Hier hat man Probleme in der Prozesskommunikation.
3) Du entwickelst eine Standalone-Applikation und greifst auf den
Domino-Server zu. Hier muss man allerdings daas Frontend selber erstellen.

In jedem Fall bieten alle 3 Varianten genügend Stoff für schlaflose
Nächte, zumal die Debug-Möglichkeiten gegen 0 gehen.
Mit Version 7 soll sich das allerdings deutlich verbessern und für 8 ist
die RCP in Aussicht gestellt.

Es hört sich zwar nicht danach an, aber Notes/Domino ist in meinen Augen
eine der besten Anwendungen auf dem Markt und man kann unglaubliche
Dinge damit machen.

Dirk

Loading...