| 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<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.
©
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