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

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>