Notes/Domino エージェントは AgentBase から派生して、その関数コードのエントリポイントとして NotesMain() を使用する必要があります。Session オブジェクトを取得するには getSession() を使用します。Notes クライアント (Java™ デバッグコンソール) だけでなくブラウザにも出力するには、getAgentOutput() を使用して PrintWriter オブジェクトを作成します。
Java エージェントを作成すると、Domino Designer は次のスケルトンコードを生成します。エージェントをインポートする場合は、これに似たコードを手動で供給する必要があります。最低限、AgentBase から派生したクラスを作成し、NotesMain() という関数を提供し、AgentBase.getSession() を呼び出して Session オブジェクトを作成する必要があります。NotesMain() 内のコードは、エージェントの起動時に実行されます。
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();
}
}
}
NotesException 例外を特別に処理するために、このスケルトンの修正が必要となる場合もあります。以下に例を示します。
} catch(NotesException ne) {
System.out.println(ne.id + " " + ne.text);
} catch(Exception e) {
E.printStackTrace();
次のようにはしないでください。
} catch(Exception e) {
E.printStackTrace();
Notes クライアントでは、フォアグラウンドエージェントの System.out と System.err は、Java のデバッグコンソールに出力されます。[ツール] - [Java デバッグコンソールの表示] を選択すると、この出力結果に対し、個別のタスクとしてアクセスできます。バックグラウンドエージェントは、Domino ログに出力します。
OpenAgent URL コマンドによって起動したエージェントからブラウザに出力するには、AgentBase.getAgentOutput() を呼び出して java.io.PrintWriter オブジェクトを取得する必要があります。このオブジェクトの出力結果は、Notes クライアントだけでなく、ブラウザにも出力されます。
次の部分コードは、URL コマンドをブラウザに出力することで、現在のデータベースのビューを開く方法を示します。このコードは、円記号をスラッシュに、スペースを + 記号にそれぞれ置き換え、URL コマンドはカッコで囲みます。
import java.io.PrintWriter;
PrintWriter pw = getAgentOutput();
Database db = agentContext.getCurrentDatabase();
String n = db.getFileName();
n = n.replace('¥¥', '/').replace(' ', '+');
pw.println("[/" + n + "/Main+View?OpenView]");
AgentBase クラスの仕様 (public メソッド) は、次のとおりです。
public class AgentBase extends NotesThread {
protected Session m_session;
public AgentBase();
public final void startup(AgentInfo info);
public final void runNotes() throws NotesException;
public void NotesMain();
public Session getSession();
public boolean isRestricted();
public PrintWriter getAgentOutput();
public void setDebug(boolean debug);
public void setTrace(boolean trace);
public void dbgMsg(String msg, PrintStream ps);
public void dbgMsg(String msg, PrintWriter pw);
public void dbgMsg(String msg);
}