import lotus.domino.*;
public class JavaAgent extends AgentBase {
    public void NotesMain() {
     try {
       Session session = getSession();
       AgentContext agentContext = session.getAgentContext();
       // (Your code goes here) 
       Database db = agentContext.getCurrentDatabase();
       // Create document containing data to be passed
       Document doc = db.createDocument();
       doc.appendItemValue("TriggerUserName", 
             session.getUserName());
       doc.save(true, false);
       // Start agent and pass NoteID of document
       Agent agent = db.getAgent
             ("Agent to be run parameter Java");
       if (agent.runOnServer(doc.getNoteID()) == 0)
            System.out.println("Agent ran");
       else
            System.out.println("Agent did not run");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
This is "Agent to be run parameter Java." It accesses the passed NoteID through getParameterDocID, accesses the referenced document, and removes it.
import lotus.domino.*;
public class JavaAgent extends AgentBase {
    public void NotesMain() {
     try {
       Session session = getSession();
       AgentContext agentContext = session.getAgentContext();
       // (Your code goes here) 
       Database db = agentContext.getCurrentDatabase();
       Agent agent = agentContext.getCurrentAgent();
       // Get document used for passing data
       Document doc = 
          db.getDocumentByID(agent.getParameterDocID());
       // Send mail containing passed data
       Document memo = db.createDocument();
       memo.appendItemValue("Form", "Memo");
       memo.appendItemValue("Subject", 
            "Message from Java agent");
       memo.appendItemValue("Body", 
            "The agent was started by " +
            doc.getItemValueString("TriggerUserName"));
       memo.send(session.getUserName());
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}