View
220
Download
0
Category
Preview:
Citation preview
| Dr. Gudrun Pabst | Trivadis GmbH |
Forms und JavaBeans
Enhanced JavaBean Support in Forms 9i
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
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
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.
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
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!");}
}
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' );
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();
}
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' );
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
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 );
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;
}
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 );
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.
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;
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"
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
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() );
}}
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"' );
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
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
Recommended