Forms_und_JavaBeans.pps

Werbung
| 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
Herunterladen