ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
ADF 12c como Backend
REST API
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
¿Qué es Oracle ADF?
● Framework de desarrollo
● Modelo-Vista-Controlador
● Desarrollado sobre Java EE
● 11g → JavaEE 5
● 12c → JavaEE 6
● Visual y Declarativo
● Interfaz de usuario moderna
● Flujos de navegación avanzados (Task Flows)
● Seguridad integrada
● IDEs: JDeveloper and Eclipse(OEPE)*
*Funcionalidades limitadas
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
¿Qué es Oracle ADF Essentials?
● Subconjunto de las tecnologías clave de Oracle ADF:
● ADF Faces
● ADF DvT
● ADF Controller
● ADF Binding
● ADF Bussines Components
● Gratis para desarrollar, Gratis para desplegar
● JDeveloper/Eclipse*
● MySQL*
● Glassfish
*Funcionalidades limitadas
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
ADF 12.2.1.x
● Versión 12.2.1.0 -> liberada en Octubre de 2015
● Versión 12.2.1.1 -> liberada en Junio de 2016
● Actualización a Java SE 8
● Actualización a Java EE 6
● Nuevos componentes para ADF Faces y ADF DvT
● Nuevos componentes y plantilla para diseño adaptable
● Soporta CSS3
● Soporte para últimas versiones de navegadores
● Soporta la creación de APIs tipo Rest a partir del modelo de negocio
● Soporte para Git
● Mejor soporte para Maven
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
REST
REREpresentational SState TTransfer
file.png
Sin Estado
http://servidor/img/file.png
POST
GET
C
R
U
D
HTTP
URL
XML
... Estándar
...
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
JSON
JJavaSScript OObject NNotation
{
"RegionsComplete" : {
"discrColumnType" : false,
"attributes" : [ {
"name" : "RegionId",
"type" : "integer",
}, {
"name" : "RegionName",
"type" : "string",
} ]
}
}
<xml>
<RegionsComplete>
<discrColumnType>false</discrColumnType>
<attributes>
<attribute>
<name>RegionId</name>
<type>integer</type>
</attribute>
<attribute>
<name>RegionName</name>
<type>string</type>
</attribute>
</attributes>
</RegionsComplete>
Estándar
AZ...
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
HATEOAS
HHypermedia AAs TThe EEngine OOf AApplication SState
● Links en las respuestas
● Cliente puede navegar
dinámicamente
● Dos estilos:
– Weblinking
– HAL
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
REST API
RAML
Apiary
HTTP
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
REST API – Guía de diseño
● Identificar los recursos
● Transformar operaciones a métodos HTTP
● Seguir patrón de nombres para los recursos
– Sustantivos
– Plural para las colecciones
– Usar – Evitar _
– No exceder 200 chars
● Usar Accept y Content-Type
● Usar HTTP Caché
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
REST API – Guía de diseño
● Usar Accept-Language para multilenguaje
● Fechas y horas -> Usar ISO8601
● Respuesta parcial
● Actualización parcial
● Consistencia en datos
● Retornar recursos modificados
● Paginación en colecciones
● Búsqueda y ordenamiento
● Versionamiento
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
REST API – Versionamiento
✔ Siempre
✔ Permite nuevas versiones
✔ Compatibilidad hacia atrás
por un tiempo
Tres técnicas:
1) Num. Versión en URL
2) HTTP Custom-Header
3) HTTP Accept
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
ADF 12c – ADF BC RESTful Web Services
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
ADF 12c – ADF BC RESTful Web Services
● latest -> Se refiere a la versión más actual
● describe -> Para obtener información de los recursos
– Response Content-Type: application/vnd.oracle.adf.description+json
● onlyData=true -> Retorna solo datos, sin enlaces
● totalResults=true -> Retorna también la cantidad de registros
● No usar PUT, usar PATCH
● POST/PATCH Content-Type: application/vnd.oracle.adf.resourceitem+json
● Métodos personalizados
– Content-Type: application/vnd.oracle.adf.action+json
● Sólo ViewObjects creadas de forma declarativa ofrecen opciones avanzadas
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
Demo
1) Crear REST API para regiones y países del esquema HR
2) Crear una nueva versión de la REST API
3) Respuesta parcial: fields=att1,att2...
4) CRUD
5) Métodos personalizados
6) Paginación: limit, offset, count, hasMore
7) Filtros:
1) finder=PrimaryKey;Id=X,Id2=Y
2) q=Att=<>...
8) Ordenamiento: Att:asc/desc,Att2:asc/desc
ORACLE OTN TOURAlexis López - aalopez@gmail.com - @aa_lopez AGO-2016 v1
Recursos en línea
● acelopez.com - Blog acerca de Java y ADF
● Código fuente de ADF – Oracle Support
● ADF Architecture TV
● Grupo de metodología empresarial de ADF (ADF EMG)
● Comunidad ADF en Google+
● OTN Forums – JDeveloper y ADF
● Oracle ADF Architecture Square
● Oracle ADF Code Corner
● Íconos: Benjamin STAWARZ (descargados desde iconfinder.com)

ADF 12c como Backend

  • 1.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 ADF 12c como Backend REST API
  • 2.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 ¿Qué es Oracle ADF? ● Framework de desarrollo ● Modelo-Vista-Controlador ● Desarrollado sobre Java EE ● 11g → JavaEE 5 ● 12c → JavaEE 6 ● Visual y Declarativo ● Interfaz de usuario moderna ● Flujos de navegación avanzados (Task Flows) ● Seguridad integrada ● IDEs: JDeveloper and Eclipse(OEPE)* *Funcionalidades limitadas
  • 3.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 ¿Qué es Oracle ADF Essentials? ● Subconjunto de las tecnologías clave de Oracle ADF: ● ADF Faces ● ADF DvT ● ADF Controller ● ADF Binding ● ADF Bussines Components ● Gratis para desarrollar, Gratis para desplegar ● JDeveloper/Eclipse* ● MySQL* ● Glassfish *Funcionalidades limitadas
  • 4.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 ADF 12.2.1.x ● Versión 12.2.1.0 -> liberada en Octubre de 2015 ● Versión 12.2.1.1 -> liberada en Junio de 2016 ● Actualización a Java SE 8 ● Actualización a Java EE 6 ● Nuevos componentes para ADF Faces y ADF DvT ● Nuevos componentes y plantilla para diseño adaptable ● Soporta CSS3 ● Soporte para últimas versiones de navegadores ● Soporta la creación de APIs tipo Rest a partir del modelo de negocio ● Soporte para Git ● Mejor soporte para Maven
  • 5.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 REST REREpresentational SState TTransfer file.png Sin Estado http://servidor/img/file.png POST GET C R U D HTTP URL XML ... Estándar ...
  • 6.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 JSON JJavaSScript OObject NNotation { "RegionsComplete" : { "discrColumnType" : false, "attributes" : [ { "name" : "RegionId", "type" : "integer", }, { "name" : "RegionName", "type" : "string", } ] } } <xml> <RegionsComplete> <discrColumnType>false</discrColumnType> <attributes> <attribute> <name>RegionId</name> <type>integer</type> </attribute> <attribute> <name>RegionName</name> <type>string</type> </attribute> </attributes> </RegionsComplete> Estándar AZ...
  • 7.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 HATEOAS HHypermedia AAs TThe EEngine OOf AApplication SState ● Links en las respuestas ● Cliente puede navegar dinámicamente ● Dos estilos: – Weblinking – HAL
  • 8.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 REST API RAML Apiary HTTP
  • 9.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 REST API – Guía de diseño ● Identificar los recursos ● Transformar operaciones a métodos HTTP ● Seguir patrón de nombres para los recursos – Sustantivos – Plural para las colecciones – Usar – Evitar _ – No exceder 200 chars ● Usar Accept y Content-Type ● Usar HTTP Caché
  • 10.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 REST API – Guía de diseño ● Usar Accept-Language para multilenguaje ● Fechas y horas -> Usar ISO8601 ● Respuesta parcial ● Actualización parcial ● Consistencia en datos ● Retornar recursos modificados ● Paginación en colecciones ● Búsqueda y ordenamiento ● Versionamiento
  • 11.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 REST API – Versionamiento ✔ Siempre ✔ Permite nuevas versiones ✔ Compatibilidad hacia atrás por un tiempo Tres técnicas: 1) Num. Versión en URL 2) HTTP Custom-Header 3) HTTP Accept
  • 12.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 ADF 12c – ADF BC RESTful Web Services
  • 13.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 ADF 12c – ADF BC RESTful Web Services ● latest -> Se refiere a la versión más actual ● describe -> Para obtener información de los recursos – Response Content-Type: application/vnd.oracle.adf.description+json ● onlyData=true -> Retorna solo datos, sin enlaces ● totalResults=true -> Retorna también la cantidad de registros ● No usar PUT, usar PATCH ● POST/PATCH Content-Type: application/vnd.oracle.adf.resourceitem+json ● Métodos personalizados – Content-Type: application/vnd.oracle.adf.action+json ● Sólo ViewObjects creadas de forma declarativa ofrecen opciones avanzadas
  • 14.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 Demo 1) Crear REST API para regiones y países del esquema HR 2) Crear una nueva versión de la REST API 3) Respuesta parcial: fields=att1,att2... 4) CRUD 5) Métodos personalizados 6) Paginación: limit, offset, count, hasMore 7) Filtros: 1) finder=PrimaryKey;Id=X,Id2=Y 2) q=Att=<>... 8) Ordenamiento: Att:asc/desc,Att2:asc/desc
  • 15.
    ORACLE OTN TOURAlexisLópez - aalopez@gmail.com - @aa_lopez AGO-2016 v1 Recursos en línea ● acelopez.com - Blog acerca de Java y ADF ● Código fuente de ADF – Oracle Support ● ADF Architecture TV ● Grupo de metodología empresarial de ADF (ADF EMG) ● Comunidad ADF en Google+ ● OTN Forums – JDeveloper y ADF ● Oracle ADF Architecture Square ● Oracle ADF Code Corner ● Íconos: Benjamin STAWARZ (descargados desde iconfinder.com)