hi axel_janssen_,
danke für deine antwort. im moment weiß ich noch nicht so richtig was ich hier tue. g*
hab den code meines notes-agenten mal kopiert...
irgendwie funktioniert er noch nicht so wie ich mir das vorstelle.
Hallo CN=Anja Schröbel/OU=active-logistics/O=rzsc, Ihr Betreff: 55555555
Er schreibt alles in eine Zeile und das "From" gefällt mir nicht so richtig. Außerdem hatte ich eher daran gedacht das dort der richtige Name steht oder der erste Teil der absender email adresse...
Geht das?
Wenn ja, kann mir jemand einen Tip geben.
Über gute Notes Javabuchtipps würde ich mich auch freuen.
vielen dank!
ans
/*
import lotus.domino.*; //Java Packet importieren
public class Colliinfo extends AgentBase { //abgeleitete Agentenklasse
public void NotesMain() { //Hauptmethode
try
{ //Fehlerschutzblock
Session mySession = getSession(); //Hole Session
AgentContext myAgentContext = mySession.getAgentContext(); //Hole Ausführungsumgebung
Database myDatabase = myAgentContext.getCurrentDatabase();
DocumentCollection myDocCollection = myAgentContext.getUnprocessedDocuments();
Document myDocument = myDocCollection.getFirstDocument();
Document myMailDocument;
//RichTextItem rti;
String myMailSubjectFrom, myMailSubject, myMailSenderName, myMailBody, myMailRecipient, tmp_MyName ;
while (myDocument != null) {
myMailSenderName = myDocument.getItemValueString("From");
myMailSubjectFrom = myDocument.getItemValueString("Subject");
myMailRecipient = myDocument.getItemValueString("INetFrom");
myMailSubject = "Antwort vom ColliInfoAgenten";
myMailBody = "Hallo " + myMailSenderName + ", \n" + "Ihr Betreff: \n" + myMailSubjectFrom;
//RichTextItem myBody = myDocument.createRichTextItem(myMailBody);
myMailDocument = myDatabase.createDocument(); //Mail-Nachricht anlegen
myMailDocument.replaceItemValue("From","Memo"); //Form Feld anlegen
myMailDocument.replaceItemValue("Subject",myMailSubject); //Subject Feld anlegen
myMailDocument.replaceItemValue("Body",myMailBody); //Body Feld anlegen
myMailDocument.send(myMailRecipient); //an Empfänger senden
System.out.println("Nachricht " + myMailSubject + "weitergeleitet an " + myMailRecipient); //Log Eintrag machen
myAgentContext.updateProcessedDoc(myDocument); //Dokument als bearbeitet markieren
myDocument = myDocCollection.getNextDocument(myDocument); //hole nächstes Document
}
} catch(Exception e) { //evtl. Exceptions auffangen
e.printStackTrace(); //Meldungsstack ausgeben
}
}
}
Hi,
für solche Agenten-Aufgaben ist Java sicherlich z.Zt. kein first class citizen von Lotus-Notes.
Die Nachteile gegenüber Lotus-Script sind:
- kein Debugger
- keine Frontend - Klassen
- um sicher zu sein, dass die Objekte wirklich aufgeräumt werden, mußt du eigentlich auf die richtigen Objekte .recycle() aufrufen. Später mehr dazu in diesem Theater. Der Java-default-Objekt Entsorgungs Mechanismus namens Garbage Collector läuft immer noch nicht richtig. Hat was damit zu tun, dass die Java-Objekte ein JNI-Wrapper um Lotus-RPC code ist und IBM hat immer noch keine Lösung, die entsprechenden RPC-stubs konkret zu entsorgen. (angeblich gilt das auch für Eclipse3 basierte Workplace-Clients, was ich für langsam echt albern halte...) :-X
Java in Notes Bücher? Manning hat einen alten Titel im Angebot.
http://www.manning.com/patton2
Ich hab ehrlichgesagt noch nicht mal das, obwohl ich von den sonstigen Manning Java Sachen ca. 30% besitze.
Eine Menge gibts bei notes.net. Die ersten 40 Artikel könnten ganz interessant sein:
206 hits (http://www-10.lotus.com/ldd/today.nsf/62F62847467A8F78052568A80055B380?SearchView&Query=Java&Start=1&Count=206&SearchOrder=1&SearchWV=FALSE&SearchFuzzy=FALSE&SearchMax=1000)
Vielleicht 06/30/2000 Java mail forwarding agent für deinen speziellen Fall. Auf jeden Fall:
08/04/2003 Java access to the Domino Objects, Part 1 und 2
Da dürften aber noch andere interessante Sachen sein.
Gute Notes-Entwicklungs-Bücher wie das von Rocky Oliver haben ein Java-Kapitel, dass vermutlich brauchbar ist.
Java in Notes wird vornehmlich für eng eingegrenzte Spezialaufgaben benutzt: Va.: Integration zu anderen Daten-Sourcen. Hier beliebt: URL Connection + xml-stream. Manche setzen auch gerne Swing-Applets ein. Wir selbst haben erfolgreich eine eigene asynchrone Webservice Integration mit Tomcat geschrieben (ehrlichgesagt, nicht so schwierig).
Das gute an Java ist, dass man dadurch unabhängig von Notes wird (Tomcat, Websphere, Weblogic, etc.).
Außerdem macht OO-Programmierung sowieso mehr Spaß.
... und es ist als Java Programmierer sehr einfach .net Konzepte zu verstehen, weil das in weiten Bereichen ein Java clone ist.
... und es gibt eine sehr große open Source community.
... und konkurrierende Anbieter
... und nicht so viele Spinner, die sich als Experten verkaufen, aber nur ein bischen an der Oberfläche gekrazt haben und ständig durch eine ziemlich generische agressiv-neurotische Verhaltensstruktur langweilen und nerven.
... und moderne IDEs (www.eclipse.org)
Für die Zukunft ist eine stärkere Integration von Java und Notes zu erwarten. So arbeitet IBM an einer neuen Version des Notes Clients, die auf einer abgespeckten Version der open Source IDE Eclipse basieren wird.
zu deinem konkreten Problem:
Du kannst den kannonischen Namen, den du über
myMailSenderName = myDocument.getItemValueString("From");
erhälst, mit Hilfe der Klasse lotus.domino.Name auslesen.
try {
Name notesName = mySession.createUserName(myMailSender);
myMailSenderName = notesName.getCommon();
} catch (NotesException e) {}
Das extrem unschöne catch für Fälle, in denen sich der Wert des from Feldes nicht in einen Notes-Namen konvertieren lässt. Vermute ich zum Beispiel bei Mails, die aus dem Internet kommen. Habs aber nicht ausprobiert.
Zur Stärkung unserer kollektiven OO-Durchschlagskraft hab ich aus Quatsch angefangen eine Lösung mit late-Binding Polymorphismus und einer Art abstract Factory zu schreiben. Ist aber noch nicht fertig und ein bischen overdesign.
korrigiert mich, wo ich falsch liege
Axel