Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der...

21
| Dr. Gudrun Pabst | Trivadis GmbH | Forms und JavaBeans Enhanced JavaBean Support in Forms 9i

Transcript of Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der...

Page 1: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

| Dr. Gudrun Pabst | Trivadis GmbH |

Forms und JavaBeans

Enhanced JavaBean Support in Forms 9i

Page 2: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

2© Copyright Trivadis GmbH

Forms und JavaBeans – InhaltInhalt:

Einführung

Einfaches Beispiel

Setzen und Abfragen von Properties

Indexed Properties

Aufruf von JavaBean-Methoden

JavaBean-Events

Eigene Datentyp-Encoder

Page 3: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

3© Copyright Trivadis GmbH

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 JavaBean-Methoden

Beans von Drittanbietern können genutzt werden

Page 4: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

4© Copyright Trivadis GmbH

Einführung

Eine JavaBean umfasst:

Properties

d.h. get<Property>-, set<Property>-Methoden

Indexed Properties

d.h. get<Property>-, set<Property>-Methoden für die gesamte Property und für einen einzelnen Index

Methoden

Events

Der Enhanced JavaBean-Support kann diese

Elemente ansprechen.

Page 5: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

5© Copyright Trivadis GmbH

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

Page 6: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

6© Copyright Trivadis GmbH

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!");}

}

Page 7: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

7© Copyright Trivadis GmbH

Grundlage: zugehöriges Forms-Modul

Forms-Modul:

BeanArea TEST_BEANButton BT_REGISTERWHEN-BUTTON-PRESSED-Trigger:

FBean.Register_Bean ('CTL.TEST_BEAN' , 1 , 'SimpleBean1' );

Page 8: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

8© Copyright Trivadis GmbH

Setzen und Abfragen von Properties

JavaBean:

Aus Forms-Sicht: Property

Fortschritt

public void setFortschritt (int Fortschritt){progBar.setValue(Fortschritt);

}

public int getFortschritt (){return progBar.getValue();

}

Page 9: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

9© Copyright Trivadis GmbH

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' );

Page 10: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

10© Copyright Trivadis GmbH

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 PropertyListe

Page 11: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

11© Copyright Trivadis GmbH

Indexed PropertiesForms-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 );

Page 12: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

12© Copyright Trivadis GmbH

Aufruf von JavaBean-Methoden

JavaBean:

Die Methode potenziert den Wert pBasis mit dem Exponenten pExponent und gibt den ermittelten Wert zurück.

public double potenzieren(double pBasis , double pExp )

{double vErgebnis;vErgebnis = StrictMath.pow( pBasis ,pExp );return vErgebnis;

}

Page 13: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

13© Copyright Trivadis GmbH

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 );

Page 14: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

14© Copyright Trivadis GmbH

Argument-Übergabe als String

Regeln:

Der String beginnt und endet mit ' (einfaches Anführungs-zeichen).

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.

Page 15: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

15© Copyright Trivadis GmbH

Argument-Übergabe als Argumentliste

Forms-Modul:Übergabe der Argumente als Argumentliste:declarev_arglist fbean.arglist;

beginv_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;

Page 16: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

16© Copyright Trivadis GmbH

JavaBean-Events

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"

Page 17: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

17© Copyright Trivadis GmbH

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

Page 18: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

18© Copyright Trivadis GmbH

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() );

}}

Page 19: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

19© Copyright Trivadis GmbH

Eigene Datentyp-Encoder

JavaBean:

Methode bruchMult: nimmt zwei Objekte vom Typ Bruch entgegen und gibt das Multiplikationsergebnis als Objekt vom Typ Bruch zurück

Forms-Modul:

public Bruch bruchMult(Bruch pBruch1, Bruch pBruch2)

:ctl.ti_ergebnis := fbean.invoke_char (

'CTL.TEST_BEAN' , 1 ,'bruchMult' , '"3/4","4/5"' );

Page 20: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

20© Copyright Trivadis GmbH

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

Page 21: Forms und JavaBeans - doag.org Stuttgart/2002/Oktober... · ¾Forms-Modul: ¾Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; ... ¾zur Übergabe von Daten

21© Copyright Trivadis GmbH

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