Preview only show first 10 pages with watermark. For full document please download

Forms_und_javabeans.pps

   EMBED


Share

Transcript

| Dr. Gudrun Pabst | Trivadis GmbH | Forms und JavaBeans Enhanced JavaBean Support in Forms 9i Forms und JavaBeans – Inhalt Inhalt:  Einführung  Einfaches Beispiel  Setzen und Abfragen von Properties  Indexed Properties  Aufruf von JavaBean-Methoden  JavaBean-Events  Eigene Datentyp-Encoder © Copyright Trivadis GmbH 2 Dr. Gudrun Pabst: Struktur der JavaBeans: siehe JavaBean-Spezifikation, Kapitel 8.3/8.4/8.5: Design Patterns for Properties/for Events/for Methods Einführung Wofür JavaBeans?  ab Forms9i: Forms nur noch im Web  Problem: Aufruf von Client-Programmen funktioniert mit Forms-Mitteln nicht mehr  JavaBeans:  Standardisierte Java-Komponenten  Enhanced JavaBean-Support von Forms unterstützt die JavaBeanMethoden  Beans von Drittanbietern können genutzt werden © Copyright Trivadis GmbH 3 Einführung Eine JavaBean umfasst:  Properties  d.h. get-, set-Methoden  Indexed Properties  d.h. get-, set-Methoden für die gesamte Property und für einen einzelnen Index  Methoden  Events Der Enhanced JavaBean-Support kann diese Elemente ansprechen. © Copyright Trivadis GmbH 4 Einführung Erweiterter Java-Support in Forms 9i:  Bisher:  statische Zuordnung der JavaBean zur BeanArea  set_custom_property  Jetzt:  JavaBean wird zur Laufzeit zugeordnet  direktes Ansprechen von Properties und Methoden  eigene Datentyp- und Listener-Encoder © Copyright Trivadis GmbH 5 Dr. Gudrun Pabst: Datei SimpleBean1.java Grundlage: einfache JavaBean  JavaBean: import oracle.forms.ui.VBean; public class SimpleBean1 extends VBean { public SimpleBean1() { super(); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { System.out.println ("Hallo!"); } } © Copyright Trivadis GmbH 6 Dr. Gudrun Pabst: Modul simple_bean1.fmb Grundlage: zugehöriges Forms-Modul  Forms-Modul:  BeanArea TEST_BEAN  Button BT_REGISTER  WHEN-BUTTON-PRESSED-Trigger: FBean.Register_Bean ( 'CTL.TEST_BEAN' , 1 , 'SimpleBean1' ); © Copyright Trivadis GmbH 7 Dr. Gudrun Pabst: Datei SimpleBean2.java Setzen und Abfragen von Properties  JavaBean: public void setFortschritt (int Fortschritt) { progBar.setValue(Fortschritt); } public int getFortschritt () { return progBar.getValue(); }  Aus Forms-Sicht: Property Fortschritt © Copyright Trivadis GmbH 8 Dr. Gudrun Pabst: Modul simple_bean2.fmb Setzen und Abfragen von Properties  Forms-Modul:  Button zum Setzen des Fortschritts, Code: FBean.set_property ( 'CTL.TEST_BEAN' , 1 , 'Fortschritt' , :ctl.ti_wert );  Button zum Abfragen des Fortschritts, Code: :ctl.ti_wert := FBean.get_property ( 'CTL.TEST_BEAN' , 1 , 'Fortschritt' ); © Copyright Trivadis GmbH 9 Indexed Properties  JavaBean:  2 set-Methoden: public void setListe (String[] pTest) public void setListe (int pIndex , String pTest)  2 get-Methoden: public String[] getListe () public String getListe (int pIndex)  ACHTUNG: Index startet mit 0!  Aus Forms-Sicht: Indexed Property Liste © Copyright Trivadis GmbH 10 Indexed Properties  Forms-Modul:  Setzen aller Werte der Indexed Property: FBean.set_indexed_property ( 'CTL.TEST_BEAN' , 1 , 'Liste' , fbean.all_rows , :ctl.ti_item1 || ',' || :ctl.ti_item2 || ',' || :ctl.ti_item3 || ',' || :ctl.ti_item4 );  Setzen eines bestimmten Werts der Indexed Property: FBean.set_indexed_property ( 'CTL.TEST_BEAN' , 1 , 'Liste' , :ctl.ti_index , :ctl.ti_wert ); © Copyright Trivadis GmbH 11 Dr. Gudrun Pabst: Datei SimpleBean4.java Aufruf von JavaBean-Methoden  JavaBean: public double potenzieren( double pBasis , double pExp ) { double vErgebnis; vErgebnis = StrictMath.pow( pBasis ,pExp ); return vErgebnis; } Die Methode potenziert den Wert pBasis mit dem Exponenten pExponent und gibt den ermittelten Wert zurück. © Copyright Trivadis GmbH 12 Dr. Gudrun Pabst: Modul simple_bean4.fmb Aufruf von JavaBean-Methoden  Forms-Modul:  Übergabe der Argumente als String: :ctl.ti_ergebnis := FBean.invoke_num ( 'CTL.TEST_BEAN' , 1 , 'potenzieren' , :ctl.ti_basis || ',' || :ctl.ti_exponent ); © Copyright Trivadis GmbH 13 Argument-Übergabe als String Regeln:  Der String beginnt und endet mit ' (einfaches Anführungszeichen).  Die Argumente sind durch Kommas getrennt.  Strings im String müssen in " (doppelte Anführungszeichen) eingeschlossen werden.  " in Strings werden als \" übergeben, \ als \\.  Werte vom Typ Boolean werden als true oder false übergeben.  Zahlen werden als Zahlen übergeben. © Copyright Trivadis GmbH 14 Argument-Übergabe als Argumentliste  Forms-Modul:  Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; begin v_arglist := fbean.create_arglist; -fbean.add_arg ( v_arglist , :ctl.ti_basis ); fbean.add_arg ( v_arglist , :ctl.ti_exponent ); -:ctl.ti_ergebnis := FBean.invoke_num ( 'CTL.TEST_BEAN' , 1 , 'potenzieren' , v_arglist ); -end; © Copyright Trivadis GmbH 15 Dr. Gudrun Pabst: simple_bean5.fmb JavaBean-Events Beim Mausklick werden die Event-Parameter abgefragt und angezeigt. Forms-Modul:  Registrieren des Events: fbean.enable_event  Anlegen eines WHEN-CUSTOM-ITEM-EVENT-Triggers  SYSTEM.CUSTOM_ITEM_EVENT : Name des Events  SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS : Parameterliste des Events  Event-Parameter: siehe "Working with Data Type and Event Encoders" © Copyright Trivadis GmbH 16 Dr. Gudrun Pabst: simple_bean6.fmb und SimpleBean6 Eigene Datentyp-Encoder  zur Übergabe von Daten an komplexe Java-Objekttypen  extends oracle.forms.beans.FormsEncoder  zwei Methoden:  fromString : konvertiert den übergebenen String in das Objekt  toString : erzeugt aus den Objekt-Daten einen String  muss mittels BeanManager.registerEncoder beim Initialisieren der Bean registriert werden © Copyright Trivadis GmbH 17 Eigene Datentyp-Encoder  JavaBean: import oracle.forms.ui.BeanManager; public class BruchEncoder extends FormsEncoder { public BruchEncoder() { super(Bruch.class); } public Object fromString ( String pBruchText ) { ... return new Bruch ( vZaehlerNeu , vNennerNeu ); } public String toString ( Object pBruch ) { return new String ( pBruch.toString() ); } } © Copyright Trivadis GmbH 18 Eigene Datentyp-Encoder  JavaBean: public Bruch bruchMult(Bruch pBruch1, Bruch pBruch2) Methode bruchMult: nimmt zwei Objekte vom Typ Bruch entgegen und gibt das Multiplikationsergebnis als Objekt vom Typ Bruch zurück  Forms-Modul: :ctl.ti_ergebnis := fbean.invoke_char ( 'CTL.TEST_BEAN' , 1 , 'bruchMult' , '"3/4","4/5"' ); © Copyright Trivadis GmbH 19 Eigene Event-Encoder  zur Übergabe von selbstdefinierten Events in der JavaBean an Forms  extends oracle.forms.beans.EventEncoder  Methoden:  toString : erzeugt aus den Event-Daten einen String  getParameters : erzeugt Liste, die ausgewertet werden kann über :system.custom_item_event_parameters  muss mittels BeanManager.registerEncoder beim Initialisieren der Bean registriert werden © Copyright Trivadis GmbH 20 Dokumentation  JavaBeans:  Spezifikation, Tutorials: http://java.sun.com/products/javabeans/docs/  Forms:  Online-Hilfe: "Accessing JavaBeans from a Forms Application"  Technet: "Oracle9i Forms Demos" http://otn.oracle.com/sample_code/products/forms/ content.html © Copyright Trivadis GmbH 21