AgentBase (Java)

Notes/Domino エージェントは AgentBase から派生して、その関数コードのエントリポイントとして NotesMain() を使用する必要があります。Session オブジェクトを取得するには getSession() を使用します。Notes クライアント (Java™ デバッグコンソール) だけでなくブラウザにも出力するには、getAgentOutput() を使用して PrintWriter オブジェクトを作成します。

Java エージェントのスケルトン

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 の仕様

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);
    
}