experiencias usando la tecnología adf
DESCRIPTION
Presentación de Plinio Arbizu (@oramexico) en #OTNLADTourTRANSCRIPT
Plinio Arbizu – Oracle Ace Director
◦ Definición de la Arquitectura ADF.◦ Metodología de Desarrollo◦ Recomendaciones Equipos de Trabajo◦ Recomendación en el modelado de BD◦ Recomendaciones en la capa de modelo◦ Recomendaciones en la capa de control◦ Recomendaciones en la capa de Vista◦ Recomendaciones en el manejo de
Versiones◦ Recomendaciones Generales
Plinio Arbizu
Oracle ACE Director Coautor del libro Web 2.0 solutions with
Oracle WebCenter Certificado :
◦ Oracle ADF Certified Implementation Specialist ◦ Oracle WebCenter Portal 11g Certified
Implementation Specialist
Líder del Grupo de Usuarios Oracle en México (ORAMEX)
Consultor de S&P Solutions de México Instructor de Oracle University en Perú
◦ Es un meta-framework que integra diversos frameworks para el desarrollo de soluciones
◦ Reduce la complejidad de los desarrollos J2EE brindando un desarrollo visual y declarativo
◦ Basado en Java y XML◦ Incrementa el desarrollo productivo
Menos codificación y mayor rehúso Enfocado en la aplicación y no en lo “Accesorios”
◦ Promueve el uso de buenas practicas J2EE implementando Patrones de Diseño J2EE (MVC)
Business Services
Data Services
Model
Controller
View
ADF Bindings (JSR 227)
JSF
Desktop Browser-based
Struts JSF/ADF Task Flow
OfficeADF Swing JSP
TopLink
EJB BAM ADF BC PortletsBI EssbaseBPEL Web Services
Java
ADF Faces / DVT
XML Data Legacy DataRelational Data
Packaged Apps
Desarrollar
1 Application
2 Capa de Modelo (Business Components)
• Persistent Business Object
• View Object
• Application Module
3. Capa Controller
• Crear el Flujo de páginas
4. Capa de Vista
• 7- Crear la página JSF
5. Correr la aplicación
Metodología de Desarrollo
Desarrollo Gradual
Conocimientos básicos: Java, PL-SQL, JSF.
Conocimiento del manejo de versiones
Sí va a cambiar el diseño, Diseñador WEB.
Incluir un Administrador de Weblogic.
Puede incluir recien egresados para labores
sencillas.
Alineados a usar ADF (Decl + Progr)
Normalizar
Usar Sequence y Triggers para los Primary Keys.
Un diseño generico impacta en los desarrollos.
Se puede usar Store Procedures, pero no priorizarlo.
No es necesario crear vistas de BD.
Nombrado afecta el mapeo de componentes.
Enterprise Java Beans (EJB)
Estándar JavaEE
Orientado a Objetos
TopLink
Maduro
Orientado a Objeto
Java Beans
Flexible
ADF Business Components
Default
Soporta características OO, Perspectiva Relacional
◦ Brinda interacción de datos y implementación de reglas de negocio.
◦ Mapea las fuentes de datos, ejem : Oracle DB, MySql, etc,(JDBC Driver).
◦ Permite un desarrollo 4GL Asistente y un desarrollo Visual Implementado en metada, no código
◦ Permite la codificación de lógica de negocio.
Sistema de Sistema de MatriculasMatriculas - - matricular()matricular()
HTML, Java, and XML Interfaces
AlumnosAlumnosCursos MATHCursos MATH
ProfesoresProfesoresActivos Activos
AlumnosAlumnos
CursosCursos
ProfesoresProfesores
ViewView EntityEntityApplicationApplication
Lógica de Negocio
Presentacióny Manipulación de Datos
Contenedores deAplicaciones y Servicios
XMLXML
Empieza con sus tablas
Desarrolle sus Entidades que encapsulen su lógica de negocio
Elabore sus ViewObjects que prepara la data para la interacción con clientes Externos
Desarrolle su Aplication Module que incluya las VO’S necesarias en su Aplicación
Finalmente desarrolle su capa de Presentación en la tecnología de su preferencia JSF,ADF Faces
Validaciones Declarativas
Validaciones Declarativas
1
2 4
3
Lista de Valores
Ideal para colocar lógica
Maneja Transacciones por Default
Maneja su propio pool de conexión datos
Cuenta con su propio cache de entidad.
Crear un sólo application module para la aplicación
Crear varios application module aislados
Se utiliza más conexiones a la base de datos
No se preserva el mismo cache de entidad
Se maneja un application module root
Se cuenta con varios modulos de aplicación “Hijos” asociados a
un caso de uso.
Todos comparte el pool de conexiones y el cache de entidades
public void incrementarPrecio(int porcentaje){Row fila = this.getProductoVO1().first();
while (fila !=null){float precio = ((Number)fila.getAttribute("Precio")).floatValue();float nuevoPrecio = precio * (100+ porcentaje)/100 ;fila.setAttribute("Precio", new Number(nuevoPrecio));
fila = this.getProductoVO1().next();}
this.getDBTransaction().commit();}
Mantenga los tipos de datos que sugiere el asistente
Aproveche las validaciones declarativas y las asociaciones
Los View Object puede ser basados en SQL, aproveche los
view criterias y las listas de valores
Modularizar sí tiene una aplicación grande
Usar Nested Aplication Module (Nested)
Usar un App module por conexion a DB
Business Services
Data Services
Model
Controller
View
ADF Bindings (JSR 227)
JSF
Desktop Browser-based
Struts JSF/ADF Task Flow
OfficeADF Swing JSP
TopLink
EJB BAM ADF BC PortletsBI EssbaseBPEL Web Services
Java
ADF Faces / DVT
XML Data Legacy DataRelational Data
Packaged Apps
Database table ADF BCEntity Object
ADF BCView Object
ADF BCApplication Module
ADF ModelData ControlBinding ContainerDatabound components on a JSP
Data Controls panel:◦ Es una representación de
la capa de business service que contiene Métodos Parametros y valores de
retorno Atributos Colecciones
◦ Se genera automáticamente basado en cada módulo de aplicaciones.
Executables - Iteradores
Bindings - Value Bindigs - Action Bindings - Tree Bindings - Etc
◦ Las expressiones asociadas a los bindings son escritas usando EL.
◦ Estas son evaluadas en tiempo de ejecución para determinar que mostrar
◦ ADF EL expressions tipicamente tienene esta forma:#{bindingVariable.BindingObject.propertyName} Ejemplo de un inputText component en una página JSF
<af:inputText value="#{bindings.Ename.inputValue}” label="#{bindings.Ename.label}” required="#{bindings.Ename.mandatory}">
Binding Context
BindingContainer
Data Control
Page definition file
*PageDef.xml
Binding context definition file
DataBindings.cpx
Structure definition file
*.xml
DataControls.dcx
Data Controls definition file
public String calcular() { // Add event code here... BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry(); AttributeBinding dato= (AttributeBinding)bindings.getControlBinding("empleadoParametro"); AttributeBinding resultado = (AttributeBinding)bindings.getControlBinding("totalResultado");
OperationBinding operationBinding = bindings.getOperationBinding("obtenerTotal"); Map parametros = operationBinding.getParamsMap(); parametros.put("cod", dato.getInputValue()); Double retorno= (Double)operationBinding.execute(); resultado.setInputValue(retorno); if (!operationBinding.getErrors().isEmpty()) { } return null; }
Controle los descriptores en las integraciones.
Los Bindigs también se programan. ( Ver más adelante)
Inicialmente use siempre bindings para acceder a los business
Manipule los bindigs según sus necesidades.
Inicialmente use esta forma
de integración
ADF task flows son unidades lógicas de flujos de paginas◦ Ofrece ventajas sobre los flujos JSF :
La aplicación puede ser dividida en tareas (Task) Puede contener otros tipos de elementos además
de páginas Reusables Comparte el mismo scope de memoria.
◦ Pueden ser del tipo unbounded o bounded
login
Principal
RegistroVenta
Clientes
ConfirmaVenta
UnBounded Task Flow
login
Principal
Clientes
ConfirmaVenta
UnBounded Task Flow
RegistroVenta
Bounded Task Flow
login
Principal
Clientes
ConfirmaVenta
UnBounded Task Flow
RegistroVenta
Bounded Task Flow
RechazaVenta
Validar
tarjeta?
login
Principal
UnBounded Task Flow ( adfc – config)
ConfirmaVenta
RegistroVenta
ConfirmaCompra
RegistroCompra
Usando Páginas
login
UnBounded Task Flow ( adfc – config)
Usando Fragmentos
Flujo de Venta, Compra..(bounded - fragmentos)
Principal.jspx
Usar un sólo flujo unbounded (adfc-config.xml)
Modularizar las páginas en flujos del tipo bounded
Los elementos de los flujos son reusables (doble reuso)
Recuede que no son sólo pagínas sino pueden ser decisiones
ó invocación a metodos.
Puede usar páginas ó fragmentos
Fragmentos son altamente reusables y pueden ser exportados
a componentes personalizables ó portlets
Business Services
Data Services
Model
Controller
View
ADF Bindings (JSR 227)
JSF
Desktop Browser-based
Struts JSF/ADF Task Flow
OfficeADF Swing JSP
TopLink
EJB BAM ADF BC PortletsBI EssbaseBPEL Web Services
Java
ADF Faces / DVT
XML Data Legacy DataRelational Data
Packaged Apps
Deberá crear su template El trabajo se realiza basado en Layout
(Contenedores)◦ Panel Group Layout (Horizontal, Vertical)◦ Panel Form Layout (Almacenar componentes en formato
formulario) Existe una gran variedad de componentes “out of
the box” (Combos, Input Text, Grillas)◦ Generalmente sugeridos por el asistente.
Generalmente se utiliza un managed bean para soportar los eventos de la página.◦ Los eventos ó Listeners dependen del componente
ADF Library permite que reuse componentes:◦ Se empaqueta en un ADF Library JAR files.◦ Incluya estos en un catalogo de recursos.◦ Incluya la libreria en el proyecto que usted este
trabajando
1
23
4
Todo es Java y XML Utilice SVN, se integra a Jdeveloper Puede hacer commit, update, revert Puede comparar su versión contra la que
esta desplegada en el server..
Defina un integrador que sea el encargado de los despliegues y archivos sensibles
Cuide archivos “Sensibles”◦ adfc_config.xml◦ Databindings.cpx◦ Proyectos (*.jpr)◦ Faces_config.xml
Si esta empezando, cree el esqueleto del proyecto y que los desarrolladores sólo hagan actualizaciones
ADF es un framework integral para realizar aplicaciones de negocio
ADF no es un framework para hacer sólo mantenimientos
ADF trabaja declarativamente y programaticamente
ADF permite personalizar. No es rigido.
ADF soporte el trabajo de aplicaciones “Grandes”.
ADF permite el trabajo de equipos.
ADF es la base de Fusion y puede ser el inicio para escalar a otras
tecnologías (WebCenter, BPM, Applications)
www.oracle.com/technetwork/jdev• Tutorials• Demos• Software• Discussions• Blogs• And more
plinioa.blogspot.com• Curso en Español• Artículos (avanzado)• Eventos
Preguntas y Respuestas