Autor Thema: Rückgabe von Java nach LS  (Gelesen 1463 mal)

Offline seal

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
Rückgabe von Java nach LS
« am: 27.02.12 - 17:23:26 »
Hallo zusammen,

ich habe ein kleines Problem bei dem ihr mir bestimmt helfen könnt.
Es geht um folgendes:

Ich habe mit Java einen Taschenrechner gebaut, und will jetzt per Button das Ergebnis in ein Feld des geöffnete NotesDocument schreiben.
Ich starte den Java Agenten mit einem LS-Notes Agenten, da ich dachte, das ich so besser die Rückgabe kontrollieren und weiter verarbeiten kann.

Hier der Auszug aus meinem Java Agent:

Code
public class JavaAgent extends AgentBase {

	private Calculator calc = null;
	
	public void NotesMain() {
		
		//Aufruf des Rechners
		calc = new Calculator(this);
		while(calc != null) {			
			try {
				//einfachmal ein wenig schlafen, so lange Eingabemaske offen
				Thread.sleep(1000 * 10);
				System.out.println("snoozing...");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	
	public void callBack(double callBackResult) {
		try {
			NotesThread.sinitThread();
			Session session = this.getSession();
			AgentContext agentContext = session.getAgentContext();
			Database db = agentContext.getCurrentDatabase();
			Agent ag = agentContext.getCurrentAgent();
			Document doc = db.getDocumentByID(ag.getParameterDocID());
			
			// Ausgaben der DOC ID
			System.out.println("Doc in JEE:" + doc.getNoteID());
			
			//schreib in das Feld Test den Wert aus CallBackresult
			doc.replaceItemValue("test", ""+callBackResult);
			
			//Mal schauen was drin steht	
			System.out.println("Doc test:" + doc.getItemValueString("test"));

			doc.save();
			
			//Rechnerfesnter schließen
			calc.window.dispose();
			calc = null;
			NotesThread.stermThread();
		} catch (NotesException e) {
			e.printStackTrace();
		}
	}

Hier der LS-Agent:

Code
	Set uiDoc = ws.currentDocument
	Set db = session.CurrentDatabase
	Set doc = db.Createdocument()
	Call doc.save(True, true)
	Set agent = db.GetAgent( "(Calculator)")
	
	'Java agenten aufrufen und Doc übergeben
	Call agent.run(doc.NoteID)
	
	'Hier erwarte ich eigentlich die Rückgabe aus dem Testfeld, das ich in Java schreibe
	MsgBox "Ich bin das Ergebnis:" + CStr(Doc.test(0))

Was mach ich den falsch? vermutlich recht viel :-) Aber ich denke mir doch wenn ich mir das neu erstellte Dokument hole, in Java ein Wert in ein Testfeld schreibe, was ja auch funktioniert und es mir vorne auslesen will, das der Wert dann da sein sollte. Ich bekomme aber eine leere Messagebox. Kann ich das überhaupt so machen?

Vielen lieben Dank,
seal

Warum passieren mir ständig Dinge, die nur dämlichen Menschen passieren - Homer J. Simpson

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Rückgabe von Java nach LS
« Antwort #1 am: 27.02.12 - 17:27:37 »
Du musst doc verwerfen und neu holen

Dim id As String
id = doc.UniversalID
Call agent.run(doc.NoteID)
Delete doc
Set doc = db.GetDocumentByUnid (id)

dann kannst Du den Wert auslesen (ungetestet, wird aber klappen)

Offline seal

  • Frischling
  • *
  • Beiträge: 18
  • Geschlecht: Männlich
Re: Rückgabe von Java nach LS
« Antwort #2 am: 27.02.12 - 17:34:15 »
ES FUNKTIONIERT :-)

Vielen Vielen DANK.
Warum passieren mir ständig Dinge, die nur dämlichen Menschen passieren - Homer J. Simpson

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Re: Rückgabe von Java nach LS
« Antwort #3 am: 28.02.12 - 15:04:37 »
Ab 8.5.2 sollte das auch mit einem "In-Memory Document" funktionieren:
NotesAgent.RunWithDocumentContext(doc As NotesDocument, noteID As String) As Integer

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz