Archivo

Archivo del autor

Oracle Process Cloud Service a prueba

octubre 21, 2015 Deja un comentario

Llevo un tiempo explorando las posibilidades que ofrece Oracle Process Cloud Service(PCS) y me voy convenciendo, cada vez más, de que se trata de una herramienta fiable, a la vez que sencilla, potente y muy bien adaptada al nuevo paradigma de ‘cloud computing. Se trata de una aplicación que facilita el trabajo colaborativo en la red. Su arquitectura, orientada a servicio, permite una integración funcional con el resto de aplicaciones construidas sobre la capa SaaS (Software como Servicio, una de las capas de la arquitectura Cloud Computing). PCS puede ser considerada una nueva capa de nivel superior (capa BPaaS, Business Process as a Service).

PCS_arq

PCS es una plataforma ideal para aquellas organizaciones que quieren comenzar el diseño y la automatización de sus procesos de negocio realizando una inversión inicial mínima.

El principal atractivo del software en la nube es que nos permite, desde el minuto cero, trabajar con las aplicaciones sin vernos obligados a adquirir los servidores, la infraestructura y el personal de administración que se precisan en el caso de los entornos tradicionales (on-premise).

PCS puede ser el entorno adecuado donde ejecutar todos nuestros procesos de negocio. Ciertos procesos con una complejidad muy alta, con las interfaces de usuario complejas o los procesos ya implementados en otras plataformas BPM, no serán buenos candidatos a correr dentro de PCS. Aquellos procesos que sean más sencillos o que vayan a ser creados desde cero, encajarán mejor en PCS. Si tenemos en cuenta que las buenas prácticas de modelado se fundamentan en no añadir excesiva complejidad a un único proceso y que los procesos grandes siempre pueden ser subdivididos en subprocesos más pequeños y manejables, veremos que PCS puede ser una buena opción.

Basada en el producto Oracle BPM 12c versión 12.1.X, utiliza SOAP y REST como únicos protocolos de comunicación con el resto de aplicaciones (también están disponibles unos cuantos adaptadores, los mencionaremos al final de este post). Tampoco incluye ciertas características existentes en la aplicación de la que proviene (BPM 12c). Al principio pensé que estas carencias serían un grave inconveniente a la hora de desarrollar tanto los procesos como las tareas humanas y no sería tan fácil comunicar PCS con otras aplicaciones. Pero según me voy familiarizando con sus herramientas, voy valorando más su potencial, me doy cuenta de que se puede modelar cualquier proceso sin echar en falta los extras disponibles en BPM 12c.

Vamos a echar un vistazo a las posibilidades de desarrollo de PCS, haciendo una breve comparativa con BPM 12c.

Revisemos el entorno de desarrollo, concretamente la sección denominada Business Process Composser, a la que se accede pulsando sobre DEVELOP PROCESS. Se trata de una interfaz web sencilla e intuitiva donde podemos crear los procesos, además de configurar el resto de los elementos que conforman la aplicación. Dentro de cada aplicación encontramos los distintos elementos o partes que la componen (Procesos, Formularios Web, Tipos de datos, Decisiones o Reglas de Negocio y las Referencias a los servicios web, veamos cada uno de ellos.

PCS_menu

Procesos

El diseño de procesos mediante BPMn es muy similar a como se hace con BPM 12c. El número de tareas, compuertas, mensajes y llamadas con los que nos encontramos es bastante más reducido, pero me resulta suficiente para diseñar procesos de baja o media complejidad. Seguimos pudiendo incluir llamadas a subprocesos, llamadas del tipo send and receive que hacen uso de conversaciones síncronas o asíncronas. No existen compuertas complejas, ni las basadas en eventos, que aún siendo elementos muy útiles para implementar ciertos patrones de diseño, podremos sobrevivir sin tener que usarlos.

PCS_bpm

Leer más…

Oracle Fusion Middleware Summer Camps 2015: Integration Cloud Service (ICS)

agosto 31, 2015 2 comentarios

Summer Camps 2015

Los participantes del Oracle Fusion Middleware Summer Camps (Lisboa del 17/21-8-2015) tuvimos la oportunidad de trabajar con la nueva “suite” de productos que sustentan la arquitectura Oracle Cloud Computing.

 

Se crearon cinco talleres diferentes, cada uno con material específico para cada producto:

  • Hybrid Integration Cloud Service
  • Process Cloud Service
  • Java Cloud Service
  • Mobile Cloud Service
  • Extending SaaS with PaaS

Durante las jornadas de trabajo se sucedieron las prácticas en los talleres y también las charlas y discusiones con los ponentes y expertos de Oracle sobre los productos que estábamos evaluando y su adecuación a diferentes entornos productivos, tipos de negocio, clientes, etc.

Uno de los productos que Oracle presentó con más entusiasmo, Integration Cloud Service (ICS), tiene una posición central y estratégica dentro de la arquitectura Cloud, actualmente se trata de una plataforma de integración entre aplicaciones (cloud-cloud y cloud-on-premise)

Principales características de ICS

Arquitectura sencilla y basada en estándares

Construida sobre un bus de servicios con capacidades de routing, messaging y con soporte para los estándares WS (SOAP, REST), nos va a permitir conectar aplicaciones existentes en los sistemas Cloud y on-premise con suma facilidad.

Facilita la conectividad entre aplicaciones SaaS que se ejecutan en distintas plataformas y servidores (SOA, SB, BPM, ICS, SOA Suite Cloud Service) mediante adaptadores JCA.

Acelera los procesos de integración gracias a la disponibilidad de conectores para las principales aplicaciones empresariales de Oracle y otros: Salesforce.com, Oracle Sales Cloud, Oracle HCM Cloud, RightNow, Eloqua, CPQ, etc.

Además, está disponible un SDK para el desarrollo adaptadores personalizados con el objeto de permitir a cualquier aplicación con interfaz SOAP o REST convertirse en accesible desde las herramientas de diseño de ICS. En el MarketPlace de Oracle Cloud podemos buscar adaptadores ICS creados por terceros desarrolladores para distintas aplicaciones. Con el paso del tiempo este catálogo irá siendo cada vez más extenso.

Monitorización

Otro valor añadido de esta plataforma son las herramientas de monitorización. Al utilizar ICS como estándar de integración nos beneficiamos de un sistema capaz de proporcionar información detallada sobre los errores y el rendimiento de cada operación o adaptador y también disponemos de parámetros de funcionamiento global de la plataforma.

ics_Monitorizacion

Facilidad de diseño de las conexiones e integraciones

ICS incluye un conjunto de asistentes gráficos bastante intuitivos para diseñar y desplegar las conexiones entre distintas aplicaciones.

Diseño mediante ratón del mapeo de los datos y de las transformaciones (mapeo de datos + transformación = integración) desde la conexión origen a la conexión de destino.

Leer más…

Categorías:Tech - Cloud Etiquetas: , ,

Modificar archivos propiedades WebLogic 12c en tiempo de ejecución

Muchas veces nos encontramos con la necesidad de modificar en tiempo de ejecución los valores de variables definidas en archivos .properties. Para que estos archivos puedan ser modificados por las aplicaciones o por otro proceso externo (incluso por nosotros mismos mediante un editor de texto) deberán estar situados en una carpeta del sistema de archivos y hallarse fuera de cualquier paquete .ear, .war o .jar.

Tenemos que decidir como accedemos a los archivos en disco:

  1. Usando una ruta absoluta y cargado el archivo, típicamente mediante la clase File, por ejemplo: File file = File(“C:\\abcfolder\\textfile.txt”);
  2. Usando una ruta absoluta obtenida previamente de un archivo .properties incluido en la aplicación, a la que se concatena el nombre del archivo
  3. Apoyándonos en el cargador de clases de la aplicación y creando una librería compartida que incluya una carpeta ‘classes’, donde pondremos nuestros archivos .properties.

Elegir la primera de las opciones no es una buena práctica: si cambia la ubicación del archivo, estaremos obligados a volver a compilar y desplegar nuestra aplicación.

La segunda es una buena opción, pero la tercera tiene la ventaja de poder versionar fácilmente los recursos almacenados en el disco.

Además, los programadores de la aplicación podrá usar el cargador de clases para localizar el archivo sin especificar la ruta o creando una estructura de sub-carpetas a partir de la raíz del classpath (la carpeta ‘classes’), si así lo desean.

Vamos a realizar una pequeña aplicación que haga uso de una librería compartida con un único archivo de propiedades conteniendo dos variables: usuario y contraseña. Si ambos valores introducidos en la página inical coinciden con los valores en el archivo, se mostrará una segunda página indicándonos que hemos tenido éxito en la autenticación; de lo contrario, nos llevará a una tercera diciendo que el usuario o la contraseña no coinciden. Con este sencillo ejemplo podremos cambiar el archivo Credentials.properties y verificar que la aplicación toma los cambios cada vez que suceden.

Veamos la estructura que tendrá nuestra librería compartida antes de ser desplegada:

Estructura de archivos de la libraría

Estructura de archivos de la libraría

Si desplegamos esta carpeta en Weblogic como ‘Biblioteca’ y en el apartado ‘Accesibilidad de Origen’ marcamos la opción ‘Usar Valores por Defecto Definidos por Destinos de Despliegue’ estaremos indicando al servidor de aplicaciones que los archivos localizados en ‘WEB-INF/classes’ serán modificables en tiempo de ejecución por las aplicaciones que hagan referencia a esta librería desde sus weblogic.xml.

La aplicación aquí descrita tiene el siguiente contenido dentro de ‘weblogic.xml’

mikel_blog_modifPropWeblogicXML

La etiqueta <librar-ref> permite a la aplicación hacer uso de la librería cuya versión de implementación detalla mediante <implementation-version>

Y ya sólo nos queda conocer cómo accede nuestra aplicación a este recurso. La forma más sencilla es con un método en el ManagedBean de la página principal que será invocado cuando se pulse el botón ‘Login’.

mikel_blog_modifPropJava

Desplegamos la librería compartida y a continuación la aplicación.

mikel_blog_modifPropResult1

mikel_blog_modifPropResult2

Podéis descargar el proyecto completo para JDeveloper aquí.

Oracle JDeveloper / ADF 12c

Ya está disponible desde mediados del mes de julio la nueva versión (12.1.2) del IDE de desarrollo Oracle JDeveloper en compañía de su inseparable Framework ADF (Oracle Application Development Framework).

fmwlogo

JDeveloper ha sido, y sigue siendo, un entorno de desarrollo que intenta dar cabida a casi todas las tecnologías que conforman el mundo de JEE. Además, pretende, desde una visión centrada en la arquitectura, ofrecer herramientas de modelado y diseño que nos hagan más fácil las transformaciones entre modelos mediante técnicas DSDM (Diseño de software dirigido por modelos).

JDev/ADF 12c nos permite generar rápidamente artefactos de diferentes tecnologías (JavaBeans, EJB, WS-SOAP, WS-REST, JSP, JSF, etc, etc, etc.). Se trata de una buena herramienta para la creación de aplicaciones JAVA  basadas en el patrón MVC (Modelo, Vista, Controlador): el Modelo se presenta al resto de capas a través de  controles de datos; el diseñador de la interfaz de usuario trabajará arrastrando y soltando estos componentes  (transformados en tablas, listas, calendarios, gráficos interactivos, etc.) sobre las páginas y formularios… Detrás de todo este funcionamiento, el IDE de forma oculta y automática, realiza una labor fundamental para que todo quede bien conectado entre la Vista y el Modelo: el enlazado o ‘binding’  entre los controles que proporcionan los datos y los componentes que los visualizan.

Leer más…

ADF Essentials + GlassFish Server OSE + JDeveloper, un entorno de desarrollo Java EE completo a coste cero

febrero 26, 2013 Deja un comentario

Hace ya unos meses que Oracle puso a disposición de la comunidad de desarrolladores su framework ADF Essentials. Se trata de un conjunto de librerías de componentes que cubre todas las capas de la arquitectura JavaEE. Las aplicaciones que hagan uso de ADF Essentials podrán ejecutarse en cualquier servidor  JavaEE (o en cualquier contenedor de servlets, siempre que no usemos elementos propios de Java Enterprise, tales como EJB u otros). En estos momentos Oracle lo soporta sobre Oracle WebLogic Server 11g (WLS), GlassFish 3.1 (GF), and WebSphere 7.

Como muchos de vosotros ya conocéis, Oracle ADF es un producto que lleva mucho tiempo en el mercado y requiere una licencia de pago, bien de forma separada (TopLink and Application Development Framework) o asociada sin coste adicional a la licencia de WebLogic Server. Ahora Oracle ofrece una versión gratuita de ADF (ADF Essentials) que incluye una serie de limitaciones relativas a ciertos componentes pero que puede ser perfectamente válida en muchas ocasiones (ver documento de preguntas frecuentes)

Las librerías o componentes de ADF que no se incluyen en Essentials son las siguientes: Oracle ADF Mobile, Oracle ADF Desktop Integration, Oracle ADF Security, Oracle ADF Web Service Data Control, Oracle ADF Remote Taskflows, Oracle ADF Business Component’s Service Interfaces, Oracle ADF Data Controls for BI, Essbase y BAM, Características de Integration con Oracle Fusion Middleware tales como MDS, OPSS, OWSM, Enterprise Manager y MBeans, High Availability and Clustering.

Pues bien, si miramos detenidamente la totalidad de características de las que no podemos disponer, nos daremos cuenta de que muchas limitaciones se refieren a necesidades de integración con WLS. Si disponemos de WLS podemos utilizar ADF en vez de ADF Essentials (como hemos comentado, tenemos cubierta la licencia de ADF dentro de WLS), así que estas limitaciones no son tales.

Con todo esto, comparándolo con el resto de frameworks a disposición de la comunidad, ADF Essentials se posiciona como una de las mejores soluciones en su categoría. Hay dos aspectos importantes para los que desarrollamos habitualmente en ADF que echaremos en falta si cambiamos WLS por GF (u otro servidor): la seguridad ADF y los DataControls para los Web Services, pero son dos aspectos para los que disponemos de estándares propios de JEE (por ejemplo JAAS).

Si tenemos en cuenta que la licencia de JDeveloper no supone coste alguno, tenemos a nuestra disposición uno de los mejores entornos de desarrollo Java Enterprise. Además, nos permitirá distribuir nuestras aplicaciones sobre cualquier plataforma sin cargar coste de licencias a nuestros clientes.
Leer más…

¿Por qué ADF Mobile y no otro framework?

enero 30, 2013 1 comentario

Ya os expliqué en este post las características básicas de ADF Mobile. Hoy os voy a dar las (mis) razones por las que considero más productivo trabajar con este entorno en vez de utilizar otros frameworks.

La principal razón es que puedo escribir la lógica de la aplicación en Java en vez de usar JavaScript, Phyton u otro lenguaje:

1. Java me ofrece un tipado fuerte, por tanto las aplicaciones son menos propensas a errores
2. Trabajando con Java, depurar las aplicaciones es infinitamente más fácil que con JavaScript
3. El coste de mantenimiento de Java es menor que en el caso de JavaScript (el coste de desarrollo también es menor)
4. Las arquitecturas basadas en Java hoy por hoy ofrecen entornos basados en componentes y una robusta capa de binding que me va a permitir desarrollar con menos codificación al trabajar de forma declarativa. Me facilita la separación entre las capas de negocio y presentación (buenas prácticas de diseño) y dispongo de un enlazado automático y estándar entre ambas capas, con las ventajas que eso supone: mantenibilidad y fiabilidad.
5. Dispongo de un entorno de desarrollo que me ofrece herramientas de transformación de modelo, búsqueda y reemplazo de variables o de cualquier elemento del lenguaje (en javascript si por ejemplo busco y reemplazo en todos los archivos, luego tengo que testear, testear y testear), JavaDoc, etc.
6. Puedo reutilizar modelos de negocio de mis servidores corporativos (a través de web services)
7. Seguridad integrada

No se trata de una discusión de si Java es mejor que Javascript, sino de entender que cada lenguaje tiene unas características que lo hacen más adecuado para construir ciertos elementos pero no tanto para hacer otras cosas.
JavaScript es útil para manejar eventos de la Interfaz de usuario, y así lo utilizo en mis aplicaciones ADF Mobile. No renuncio a nada, pero por suerte tengo Java y lo utilizo para programar la lógica de la aplicación, con la solidez que nos da modelar y construir aplicaciones JEE (también hay otras tecnologías válidas para generar aplicaciones empresariales). De este modo mi lógica de negocio es independiente del cliente web que ejecute el Javascript. Estoy ganando en robustez.

¿Qué supone disponer un framework basado en estándares Java? Supone que podemos usar las facilidades de binding de Java, aprovecharnos del IDE de desarrollo (JDeveloper) y de sus herramientas de diseño.

Este apartado me sigue maravillando. Importo a mi proyecto un módulo de datos con sus JavaBeans correspondientes desde cualquier proyecto corporativo existente, hago click con el botón derecho sobre el JavaBean, selecciono Crear DataControl, arrastro una lista de datos y la suelto sobre la página que estoy diseñando, escojo que quiero que me lo genere como una lista y ya tengo mi lista de datos en la página. He tardado minuto y medio y tengo un diseño correcto basado en la capa de bindings de Java EE sin errores en el código.

Continúo creando mi aplicación: me voy a la lista y le digo que cuando se seleccione un elemento dispare la acción ir_a_elemento (previamente establezco gráficamente mediante el editor de propiedades el parámetro que indica qué elemento de la lista es el seleccionado) y diseño la navegación de la página en el editor de taskflows (gráficamente) para que la capa de control (una capa que no existe en Javascript, y que nos aporta diseño estructurado) sepa como navegar a la página del elemento. Una página que me ha costado otro minuto y medio diseñar partiendo de los objetos de datos que he creado en el apartado anterior.

jdeveloper_taskflow

Como la aplicación requiere más funcionalidad, seguramente tengo que escribir código:  por ejemplo, necesitaré recuperar y guardar los clientes en la base de datos. Pues bien, tengo dos posibilidades: guardarlos en el servidor corporativo o en la base de datos local (se guardarían encriptados, viene de serie). Suponiendo el primer caso, necesitaré obtener el WSDL (contrato) del servicio y generar un componente de datos basado en SOAP o Rest. Ya sólo debo ligar las páginas con los atributos de este componente en vez de utilizar los del modelo de datos. Si necesito usar la base de datos local (no excluyente con el acceso remoto a datos), implemento las operaciones de guardar y recuperar en el JavaBean y me bastará arrastrar la operación de guardar sobre la página y decirle que quiero que me genere como un botón de comando.

En un momento dado, se produce un error en mi aplicación. ¿Qué hago? ¿Activo el log y añado trazas en el código? No tengo claro dónde está el error, pero ADF Mobile está integradísimo en JDeveloper y puedo activar la facilidad de debug (otra cosa que se complica cuando estoy desarrollando tan solo en Javascript).

jdeveloper_debug

Además, elijo ADF Mobile, porque ofrece todas estas ventajas en un entorno integrado. Si tu framework de desarrollo no incluye algunos elementos (librerías de cifrado, herramientas de binding, depuradores de código, capa de control, …) vas a tener que buscarlos fuera, y luego tendrás que responsabilizarte de la integración. Esto implica que con cada nueva versión de cada librería corres el riesgo de que otras partes dejen de funcionar, por lo que decidirás no actualizar nunca y tu tecnología de trabajo irá quedando obsoleta.

Si tu framework te ofrece todo lo que necesitas, y te permite desarrollar y mantener la facilidad y rapidez que tu deseas, sigue adelante con él. Ahora bien, si no estás del todo satisfecho, prueba el funcionamiento de ADF Mobile.

Desarrollo de aplicaciones móviles híbridas con ADF Mobile

diciembre 28, 2012 1 comentario

Como publicamos hace 2 meses, Oracle ha sacado al mercado ADF Mobile, su nuevo framework para el desarrollo de aplicaciones para tablets y smartphones, basado en una arquitectura híbrida y un conjunto de módulos y herramientas destinadas a producir aplicaciones seguras.

En próximos posts iremos hablando de distintos aspectos de este framework, pero primero: ¿Qué es una arquitectura híbrida? ¿Qué características tiene? ¿En qué se parecen y en qué se diferencian las aplicaciones desarrolladas con este framework de las aplicaciones nativas o de las aplicaciones web?

Intentemos clarificar los 3 tipos de enfoque a la hora de desarrollar aplicaciones mobile:

Aplicaciones nativas

Se desarrollan utilizando el SDK particular de cada sistema operativo. Se consigue un muy buen rendimiento y se aprovechan al máximo las características del dispositivo (cámara de fotos, gps, etc.) pero, a cambio de estas ventajas, la aplicación no podrá ejecutarse en otro sistema operativo. Por tanto, hacer una aplicación multidispositivo tiene un coste de desarrollo elevado ya que hay que hacer desarrollos distintos para cada sistema operativo, y en tecnologías dispares, con lo que o requerimos de un equipo de desarrolladores más numeroso o con unos conocimientos más amplios.

Aplicaciones web

Típicamente se ejecutan dentro de clientes WEB  (principalmente navegadores), en entornos cliente/servidor y utilizan tecnologías de la parte del cliente tales como HTML, CSS y Javascript. Estas aplicaciones residen en servidores web que atienden las solicitudes de los clientes transformando y enviando documentos HTML para que éstos los presenten al usuario.

Las aplicaciones web ofrecen un alto grado de reutilización de código, pero nos obligan a tener conexión en el dispositivo para acceder al servidor web. El coste de desarrollo para estas plataformas es notablemente inferior si lo comparamos con los costes de las aplicaciones nativas e híbridas.

Aplicaciones híbridas

Están construidas de tal manera que son capaces de ejecutar código nativo y también pueden interpretar contenido web, de tal manera que el usuario ve conjuntamente información de los dos tipos. Además, las páginas html (totalmente o en parte) pueden provenir de cualquier servidor web o residir en el propio dispositivo. De esta forma disponemos de lo mejor de cada arquitectura. Por ejemplo, una aplicación híbrida nos puede presentar en pantalla una página HTML5  sobre la que se muestra la posición actual proporcionada por el GPS. El coste de desarrollo es similar al de las aplicaciones web y nos permite preparar las aplicaciones para trabajar sin necesidad de estar conectadas al servidor, es decir offline.

Muy bien, ahora que ya sabemos distinguir las aplicaciones existentes en los dispositivos móviles ¿qué estrategias se han empleado a la hora de diseñar los frameworks destinados a producir aplicaciones híbridas?

Leer más…

Categorías:TxD - Mobile Etiquetas: , , ,