Autor Thema: Java-Aufruf in LotusScript  (Gelesen 2126 mal)

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Java-Aufruf in LotusScript
« am: 17.12.08 - 08:35:25 »
Hallo,

ich versuche bereits einige Zeit in Lotusscript (unter Zuhilfenahme von LS2J) einen Java-Aufruf nachzubilden. Das ganze fliegt mir aber bei meinen Versuchen immer um die Ohren mit den diversesten Meldungen...  :-:
Mein Java-Code sieht so aus:
Code
SucheGUIPosteingang guiPost;

if (fileNames.length() > 0) {
      guiPost = new SucheGUIPosteingang(server, serverport, user, pass, subject, sender, body, fileNames);
}else {
      guiPost = new SucheGUIPosteingang(server, serverport, user, pass, subject, sender, body);
}
// run-Methode gibt PosteingangAfps-Object zurück
PosteingangAfps postPost = guiPost.run();

String neueNr = postPost.getPosteingangNr();

Mein Ansatz in LotusScript sieht so aus:
Code
Dim jSession As JavaSession
Dim jClass_SucheGUIPosteingang As JAVACLASS
Dim jObject_SucheGUIPosteingang As JAVAOBJECT
Dim jMethod_SucheGUIPosteingang As JAVAMETHOD

Set jSession = New JavaSession()


Set jClass_SucheGUIPosteingang = jSession.GetClass("SucheGUIPosteingang")
		
If ( Len(fileArrayString) > 0 ) Then
   Set jObject_SucheGUIPosteingang = jClass_SucheGUIPosteingang.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;
            Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",server,serverport,user,pass,subj,sender,body,fileArrayString)	
Else
   Set jObject_SucheGUIPosteingang = jClass_SucheGUIPosteingang.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;
            Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",server,serverport,user,pass,subj,sender,body)

End If


Dim jClass_PosteingangAfps As JAVACLASS
Dim jObject_PosteingangAfps As JAVAOBJECT
Dim jMethod_PosteingangAfps As JAVAMETHOD
		
Set jClass_PosteingangAfps = jSession.GetClass("PosteingangAfps")
Set jObject_PosteingangAfps =  jClass_PosteingangAfps.CreateObject()
' ???

Ich weiß jetzt nicht so recht weiter, wie ich run-Methode aufrufe und mir das Object zurückgeben lassen kann - damit ich wie im Javacode, in LotusScript die 'neueNr' auslesen und verwerten kann.

Könnt ihr mir Hilfestellung geben? Ist mein LotusScript-Ansatz überhaupt richtig?

Vielen Dank.


PS: Die Hilfe ist hierbei natürlich mein ständiger Begleiter, doch auch mit dieser komme ich nicht recht weiter!
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Aufruf in LotusScript
« Antwort #1 am: 17.12.08 - 10:09:57 »
Ich habe es fast geschafft... Mein Programm arbeitet soweit erstmal korrekt ab, nur bekomme ich leider noch immer nicht die 'neueNr' am Schluß zurück. Irgendwo steckt noch ein Fehler drin und ich seh ihn nicht!
Hier mal mein jetziger LotusScript-Code:
Code
Set jClass_SucheGUIPosteingang = jSession.GetClass("SucheGUIPosteingang")
		
If ( Len(fileArrayString) > 0 ) Then
   Set jObject_SucheGUIPosteingang = jClass_SucheGUIPosteingang.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;
            Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",server,serverport,user,pass,subj,sender,body,fileArrayString)	
Else
   Set jObject_SucheGUIPosteingang = jClass_SucheGUIPosteingang.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;
            Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",server,serverport,user,pass,subj,sender,body)	

End If
		
Set jMethod_SucheGUIPosteingang = jClass_SucheGUIPosteingang.GetMethod("run","()LPosteingangAfps;")
Call jMethod_SucheGUIPosteingang.Invoke(jObject_SucheGUIPosteingang)
		
Set jClass_PosteingangAfps = jSession.GetClass("PosteingangAfps")
Set jObject_PosteingangAfps =  jClass_PosteingangAfps.CreateObject()
Set jMethod_PosteingangAfps = jClass_PosteingangAfps.GetMethod("getPosteingangNr","()Ljava/lang/String;")
		
Dim neueNr As String
neueNr = jMethod_PosteingangAfps.Invoke(jObject_PosteingangAfps)
Messagebox("neuer Posteingang: " + neueNr),, "PosteingangNr"

Ich vermute, es liegt vielleicht irgendwie an der Reihenfolge der Initialisierungen der Objekte bzw. am Aufruf der run-Methode?!
Seht ihr einen Fehler?
Wie schon gesagt, ich das obige Stück Java-Code "nachbauen".

Gruß

EDIT: Der Lesbarkeit halber habe ich die Variablen noch etwas vorteilhafter benannt - wie ich glaube.  ;)
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Java-Aufruf in LotusScript
« Antwort #2 am: 17.12.08 - 10:29:05 »
Der Post ist zwar ein Monolog meinerseits, aber ich habe es gelöst - man (ich) muß bloß mal drüber reden!  ;)
Der LotusScript-Teil nach dem END IF hatte einen syntaktischen Fehler! Habs echt erst durch meinen Post hier so richtig überrissen...
Hier mal noch der Vollständigkeit halber der fertige LS-Code:
Code
Set jClass_SucheGUIPosteingang = jSession.GetClass("SucheGUIPosteingang")
		
If ( Len(fileArrayString) > 0 ) Then
   Set jObject_SucheGUIPosteingang = jClass_SucheGUIPosteingang.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;
            Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",server,serverport,user,pass,subj,sender,body,fileArrayString)	
Else
   Set jObject_SucheGUIPosteingang = jClass_SucheGUIPosteingang.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;
            Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",server,serverport,user,pass,subj,sender,body)	

End If

Set jMethod_SucheGUIPosteingang = jClass_SucheGUIPosteingang.GetMethod("run","()LPosteingangAfps;")
		
Set jClass_PosteingangAfps = jSession.GetClass("PosteingangAfps")
Set jObject_PosteingangAfps = jMethod_SucheGUIPosteingang.Invoke(jObject_SucheGUIPosteingang)
Set jMethod_PosteingangAfps = jClass_PosteingangAfps.GetMethod("getPosteingangNr","()Ljava/lang/String;")
		
Dim neueNr As String
neueNr = jMethod_PosteingangAfps.Invoke(jObject_PosteingangAfps)
Messagebox("neuer Posteingang: " + neueNr),, "PosteingangNr"

Jetzt erhalte ich schlußendlich auch die Messagebox-Ausgabe mit der korrekt zurückgelieferten 'neueNr' und kann diese in Notes weiterverarbeiten!
Nichts für ungut...  ;D

Danke und Gruß

Rico.
Lotus Notes 8.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz