Institut für Betriebswirtschaftslehre und Wirtschaftsinformatik BSF4ooRexx Version 4.0 http://wi.wu.ac.at/rgf/rexx/bsf4oorexx/current/ GSE WG Rexx plus ISPF Prof. Dr. Rony G. Flatscher Wirtschaftsuniversität Wien Augasse 2-6 A-1090 Wien Hier 35. Tagung, Vortrags-/Vorlesungstitel Automatisierung GSE WG Rexx von Windows plus im ISPF, Master Anwendungen Frankfurt, eintragen 2009-11-10 (3) 1 Prof. Dr. Rony G. Flatscher
Agenda Kurzüberblick über BSF4Rexx Offene Punkte Neue Funktionalität Zusammenfassung und Ausblick Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 2 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
Kurzüberblick über BSF4Rexx, 1 Externe Rexx-Funktionsbibliothek Ermöglicht Java, Rexx als Skriptsprache einzusetzen Ermöglicht Rexx, Java als riesige externe Funktionsbibliothek zu verwenden Bestandteile Apache Software Foundation (ASF) "Bean Scripting Framework (BSF)" Java-Klassenbibliothek Externe Rexx-Funktionsbibliothek ("BSF4Rexx.dll") Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 3 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
Kurzüberblick über BSF4Rexx, 2 BSF.CLS oorexx-paket, das u.a. BSF4Rexx über die oorexx-klasse.bsf einfach verfügbar macht Definition von öffentlichen Routinen, die BSF nutzen, z.b. bsf.import( ) Zahlreiche nützliche Dienstleistungen, z.b. das Vorregistrieren wichtiger Java-Klassen in.bsf4rexx Lädt Java bei Bedarf Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 4 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
Kurzüberblick über BSF4Rexx, 3 exec(...) eval(...) apply(...) call(...) BSF() BsfDropFuncs(), BsfInvokedBy(), BsfLoadFuncs(), BsfLoadJava(), BsfQueryAllFunctions(), BsfQueryRegisteredFunctions(), BsfShowErrorMessage(), BsfUnloadJava(), BsfVersion() Java Program Object Rexx environment (e.g. ".bsf4rexx") BSF (Java) JNI BSF.CLS BSF4Rexx (C++) RexxEngine Object Rexx scripts RexxAndJava Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 5 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
Offene Punkte = Input für BSF4ooRexx 4.0 Echtzeit-Bearbeitung von Ereignissen nicht möglich Ereignisse können daher z.b. nicht aufgehoben werden Java-Interfaces können nicht in Rexx direkt benutzt werden Daher notwendig, Java-Interfaces in Java-Klassen zu implementieren und diese dann von Rexx aus ansprechen Es können abstrakte Java-Methoden nicht in Rexx implementiert werden Java-Programme können keine Nachrichten direkt an Rexx- Objekte senden Es können Java-Programmen keine vollständigen Rexx- Fehlerinformationen übermittelt werden Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 6 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
oorexx 4.0, Neues API, 1 Bisher gab es nur RexxStart( ) Nun gibt es zusätzlich RexxCreateInterpreter( ) Eine Rexx-Interpreter-Instanz kann öfters verwendet werden LoadPackage( ) LoadPackageFromData( ) CallProgram( ) Terminate() Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 7 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
oorexx 4.0, Neues API, 2 Neue Datentypen Unabhängig von Rechnerarchitektur Die wichtigsten oorexx-typen stehen direkt zur Verfügung oorexx-api wurde nach JNI modelliert RexxInstance Attach(), Detach() ThreadContext MethodContext CallContext ExitContext Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 8 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
BSF4ooRexx (Beta), 1 RexxProxy (eine Java-Klasse) Repräsentiert ein oorexx-objekt auf der Java-Seite Ermöglicht das Senden von Nachrichten von Java nach oorexx Ist als java.lang.reflect.invocationhandler implementiert Damit benutzbar in java.lang.reflect.proxy Für beliebiges Java-Interface (sogar mehrere!) Optional kann ein "Slot"-Argument mitgegeben werden Ein beliebiges Rexx-Objekt ("USERDATA") Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 9 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
BSF4ooRexx (Beta), 2 Neue Rexx-Funktion BsfCreateRexxProxy( ) Argumente Rexx-Objekt, das von Java aus ansprechbar sein soll Optionales Slot-Argument ("USERDATA", ein Rexx-Objekt) Entweder ein oder mehrere Java-Interfaceklassen - Entweder Java-Klassenobjekt oder vollqualifizierter Name Oder Eine abstrakte Java-Klasse, gefolgt von optionalen Argumenten Liefert ein Java-RexxProxy-Objekt zurück Kann als Argument in Java-Methodenaufrufen eingesetzt werden! Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 10 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
BSF4ooRexx (Beta), 3 Callbacks von Java nach Rexx Erfolgen über die RexxProxy-Objekte Der Rexx-Nachricht wird unter bestimmten Umständen ein weiteres Argument angefügt, das ein Directory-Objekt ist, das über folgende Einträge verfügen kann "USERDATA", das "Slot"-Argument, wenn es angegeben wurde "METHODNAME", exakt geschriebene Java-Methodenbezeichnung "METHODOBJECT", Java-Methodenobjekt (Java-Interface) "METHODDESCRIPTOR" (für abstrakte Methode einer abstrakten Java-Klasse) Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 11 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
BSF4ooRexx (Beta), 4 Rückgabewerte von Rexx an Java, wenn Rexx-Objekt ein String-Objekt Java-Zeichenkette BSF- oder UNO-Proxy-Objekt (repräsentieren Java-Objekte) Repräsentiertes Java-Objekt Ein beliebiges anderes Rexx-Objekt Ein RexxProxy-Objekt wird dafür angelegt, sodass Java anschließend Rexx-Nachrichten senden kann Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 12 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
BSF4ooRexx (Beta), 5 Fehler von Java Neue oorexx-apis erlauben das Erzeugen von Rexx- Fehlermeldungen, die die Java-Fehlermeldungen vollständig beinhalten Nicht möglich, das Java-Throwable-Objekt direkt über die Rexx-Condition zur Verfügung zu stellen Fehler von Rexx Wird in Java mit einer RexxException angezeigt Fehlertext ist der Rexx-Fehlertext Das Rexx-"Condition"-Objekt (ein Rexx-Directory) wird als RexxProxy Java direkt zur Verfügung gestellt Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 13 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
BSF4ooRexx (Beta), 6 Direktes Aufwerfen von Java-Exceptions von Rexx aus Externe Rexx-Funktion BsfJavaException("throw", throwable) Wirft unmittelbar angegebene Java-Ausnahme Wichtig für Callbacks Z.B. der OpenOffice.org Veto-Mechanismus Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 14 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
Schematischer Überblick über BSF4ooRexx exec(...) eval(...) apply(...) call(...) Java Program BSF() BsfCreateRexxProxy(), BsfDropFuncs(), BsfGetTID(), BsfAttachToTID(), BsfDetach(), BsfInvokedBy(), BsfJavaException(), BsfLoadFuncs(), BsfLoadJava(), BsfQueryAllFunctions(), BsfQueryRegisteredFunctions(), BsfShowErrorMessage(), BsfUnloadJava(), BsfVersion() Object Rexx environment (e.g. ".bsf4rexx") BSF (Java) JNI BSF.CLS BSF4ooRexx (C++) RexxEngine Object Rexx scripts RexxAndJava Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 15 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher
Zusammenfassung und Ausblick Seit Mitte Oktober in Betatest 100 %-ig rückwärtskompatibel mit Vorgänger "BSF4Rexx" TestUnits! Bis dato sehr stabil Öffnet oorexx alle modernen Programme, die über Java- Schnittstellen verfügen Z.B. OpenOffice Stellt uns allen die "größte Funktionsbibliothek der Welt" einfach zur Verfügung, die auf jedem PC installiert ist: Java! Sowie sämtliche Java-Klassenbibliotheken! Hier 35. Tagung, Vortrags-/Vorlesungstitel GSE WG Rexx plus im ISPF, Master Frankfurt, eintragen 2009-11-10 16 Hier Name des Vortragenden Prof. Dr. im Rony Master G. eintragen Flatscher