vineri, 7 noiembrie 2008

Oracle si JavaBean

In continuare voi arata cum se poate integra un JavaBean in Oracle Forms. Principala problema este ca cei de la Oracle nu ofera documentatie pentru frameworkul dezvoltat, asa ca ce ramane de facut este sa faceti un search pe google si sa studiati cat mai multe posturi. In continuare voi implementa un simplu JavaBean care va furniza un text catre Oracle Forms.

Pasul 1 este sa adaugati o referinta catre frmall.jar care se gaseste in locul in care ati instala Oracle Developer Suite/forms/java.

Pasul 2 este sa compilati urmatorul cod:

package ro.javabeans;

import oracle.forms.handler.IHandler;
import oracle.forms.properties.ID;
import oracle.forms.ui.CustomEvent;
import oracle.forms.ui.VBean;

public class HelloWorld extends VBean
{
private static IHandler myHandler;
protected static final ID MESAJ = ID.registerProperty("MESAJ");
private String msg;
public void setMsg(String s)
{
this.msg = s;
}
public String getMsg()
{
return this.msg;
}

public void init(IHandler handler)
{
myHandler = handler;
super.init(handler);
}

public boolean setProperty(ID property, Object value)
{
if(property == MESAJ)
{
this.setMsg((String)value);
return true;
}

return super.setProperty(property, value);
}

public Object getProperty(ID property)
{
if(property == MESAJ)
return this.getMsg();

return super.getProperty(property);
}

public void dispatchEvent(ID id)
{
CustomEvent ce = new CustomEvent(myHandler, id);
dispatchCustomEvent(ce);
}
}

Pasul 3: Consider ca ar trebui sa explic de ce se face asa. In primul rand, handler-ul pe care il setam ofera acces la diverse elemente din mediul forms.
protected static final ID MESAJ = ID.registerProperty("MESAJ") este importanta intrucat inregistreaza atribute ale bean-ului care vor putea fi referite in forms. Textul dintre ghilimele este case sensitive, asa ca recomand folosirea de majuscule.
setProperty si getProperty sunt foarte asemenatoare cu functiile getter/setter clasice. Ele sunt folosite in momentul in care se seteaza valoarea unui atribut din forms sau se cere valoarea unui atribut din forms.
Metoda dispatchEvent este folosita pentru a declansa evenimente ce pot fi captate in Oracle Forms.

Pasul 4: Exportarea proiectului creat mai sus intr-un jar.

Pasul 5: Trebuie modificat in fisierul DevsuiteHome/forms/server/formsweb.cfg valoarea pentru archive=....., nume.jar

Pasul 6: Se creeaza un formular si se adauga un item de tip JavaBean. La implementation class se seteaza: ro.javabeans.HelloWorld.

Pasul 7: Se adauga un trigger: when-new-form-instance care contine urmatorul cod:
declare
msg VARCHAR2(200) := 'Va pup pe toti';
begin
SET_CUSTOM_PROPERTY('BLOCK3.BEAN4', 1, 'MESAJ', 'SALUTARI');
end;

Observatii: Am presupus ca bean-ul se afla in data-block-ul BLOCK3 si se numeste BEAN4.
SET_CUSTOM_PROPERTY este un built-in folosit pentru a seta un atribut al bean-ului.

Pasul 8: Se adauga un item de tip buton.
Pasul 9: Se adauga un trigger pentru acest button de tip: when-mouse-click, cu urmatorul cod:
declare
msg VARCHAR2(2000) := GET_CUSTOM_PROPERTY('BLOCK3.BEAN4', 1, 'MESAJ');
begin
MESSAGE(msg);
end;

Observatii: GET_CUSTOM_PROPERTY este un builtin folosit pentru a returna valoarea atributului specificat.

Pasul 10:Rularea propriu-zisa a aplicatie.

Se observa ca integrarea dintre forms si java este destul de greoaie dar uneori merita intrucat se pot face lucruri complicate care sa adauge functionalitati noi la Oracle Forms.

Exemple de astfel de aplicatii: Transferul de tip FTP, Transmiterea de email-uri(se poate face si fara Java), generarea de imagini, etc..... Intr-un post viitor voi arata cum se pot imbina date dintr-un Oracle Forms cu un bean java pentru a genera imagini.

Niciun comentariu:

Trimiteți un comentariu