Utilizzare Eclipse per scrivere agenti Notes: Parte 2 – Scrittura dell’agente
Ora che Eclipse può usare le classi di domino, procediamo con la scrittura dell’agente. Un agente Java deve estendere la classe lotus.domino.AgentBase, per cui avremo:
package testdomino;
import lotus.domino.AgentBase;
public class AgenteJava extends AgentBase {}
Ora, non possiamo fare finta di non sapere che non siamo nel Designer di Notes, dove abbiamo accesso ad una cosa fondamentale: la sessione. Il succo è: scriviamo un agente che possa girare sotto Eclipse, e che copiato/incollato sul designer giri senza dover modificare una riga di codice.
Forniamo alla classe due costruttori, uno vuoto e uno che accetta in ingresso la sessione:
private Session session = null;
public AgenteJava(){}
public AgenteJava(Session s)
{
this.session = s;
}
Ora definiamo il punto di ingresso per l’applicazione domino, il metodo NotesMain:
public void NotesMain() {Session s;/
/ Se la session è gia presente siamo in ambiente debug,
// altrimenti siamo in ambiente domino
try {
if (this.session != null){
s = this.session;
}
else {
s = this.getSession();
AgentContext ac = s.getAgentContext();
}
}
catch (Exception e)
{
e.printStackTrace();
return;
}
//Da questo punto il codice è il medesimo per l'ambiente di debug
//e l'ambiente domino
try {
JOptionPane.showMessageDialog(null, "Ciao, sono un agente Notes scritto in Java con Eclipse");
}
catch(Exception e) {
e.printStackTrace();
}
}
Il primo blocco try/catch è quello che mi permette di avere sempre comunque una sessione Notes valida da cui partire per l’elaborazione del mio agente. Se siamo in Eclipse, è il metodo main della classe (o chiunque la instanzierà) che deve preoccuparsi di fornire una sessione valida, se siamo in Designer è il metodo getSession() che ce la fornisce.
Nel secondo try/catch si implementa la logica dell’Agente. Tutto qui. Ovviamente, tutte le librerie che verranno usate dovranno essere importate in Domino.
Il metodo main dovrà preoccuparsi di creare una session Domino:
public static void main(String[] args) {lotus.domino.Session s = null;
try {
s = NotesFactory.createSession(<serverdomino>, <utente>, <password>);
AgenteJava a = new AgenteJava(s);
a.NotesMain();
}
catch (Exception e) { e.printStackTrace(); }
finally {
try { if (s != null) s.recycle(); }
catch (Exception x) {}
}
}
Da ricordare che il diiop sul server deve essere attivo.
Leave a Reply