® Informix 4GL y SOE - Rejuveneciendo 4GL con servicios Web Gagan Maheshwari, Technical Lead, IBM, gagmahes@in.ibm.com Javier Sagrera, Common Client Technologies, IBM, javier.sagrera@uk.ibm.com © 2010 IBM Corporation Disclaimer © Copyright IBM Corporation [current year]. All rights reserved. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN ADDITION, THIS INFORMATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM WITHOUT NOTICE. IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, NOR SHALL HAVE THE EFFECT OF, CREATING ANY WARRANTIES OR REPRESENTATIONS FROM IBM (OR ITS SUPPLIERS OR LICENSORS), OR ALTERING THE TERMS AND CONDITIONS OF ANY AGREEMENT OR LICENSE GOVERNING THE USE OF IBM PRODUCTS AND/OR SOFTWARE. IBM, the IBM logo, ibm.com, Informix and Informix 4GL are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml AXIS2C, Apache and Tomcat products or service names may be trademarks or service marks of others. The information on the new product is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information on the new product is not a commitment, promise, or legal obligation to deliver any material, code or functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion 1 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas típicos Futuro de Informix 4GL Referencias 2 Informix 4GL Lenguaje de 4ª Generación Fácil desarrollo y mantenimiento de aplicaciones Incluye todo lo necesario para crear aplicaciones complejas – Administrador de proyectos – Generador de formularios – Debugger Interfaz basado en modo texto (CUI) Usado por miles de clientes en todo el mundo 3 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas tipicos Futuro de Informix 4GL Referencias 4 Arquitectura Orientada a Servicios (SOA) Que es SOA Ventajas de SOA en I4GL Beneficios para los clientes 5 ¿Que es SOA ? Separación de las funciones básicas Mayor aprovechamiento de recursos Integración entre recursos humanos, procesos e información Mejor control de la información Reutilización 6 Ventajas de SOA en I4GL Publicar funciones en Informix 4GL como Servicios Web Integración con aplicaciones Web Reutilizar código existente desde aplicaciones Web Descubrir y consumir servicios Web usando I4GL Mayor oportunidades de negocio para sus aplicaciones I4GL 7 Beneficios para los clientes Reuso del código y la lógica existente - desde Internet - desde otras compañías o partners Nueva mentalidad al programar: “Que” en lugar de “Como” No hay dependencia de hardware o lenguajes de programación Mejor colaboración entre diferentes departamentos dentro de una misma organización Biblioteca de funciones y Servicios Ahorro de dinero y tiempo. 8 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas típicos Futuro de Informix 4GL Referencias 9 Requerimientos y plataformas soportadas Requerimientos – – – – – – Apache Axis2/C Version 1.5.1 (incluido en I4GL) Apache Axis2/Java Version 1.3.1 (incluido en I4GL) IBM Informix Dynamic Server Version 10 o posterior IBM Informix 4GL 7.50.xC3 Java™ Runtime Environment (JRE) 1.5 o posterior Perl 5.8.8 Plataformas soportadas (32 y 64-bit) – HP-IA 11.23 or 11.31 – AIX 5.3 and 6.1 – Red Hat Enterprise Linux 4 or 5 – Solaris 5.9 or 5.10 – SUSE® Linux Enterprise Server 10 10 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas típicos Futuro de Informix 4GL Referencias 11 Publicar un Servicio Web I4GL-SOA Arquitectura Publish /Subscribe (Publicar/Suscribir) W4GL y W4GLC : Publish Publicar I4GL funciones como servicios Web – desde la línea de comando (W4GLC) – desde el interfaz grafico (W4GL) 12 I4GL-SOA Arquitectura Servicio Web Subscribe Pubish Publisher Subscriber Apache AXIS2C Web Server IBM Informix 4GL IDS 13 Publish / Subscribe Publisher •Servicio Web •Función I4GL •Argumentos •Ficheros I4GL IDS Subscriber •Servicio Web •Función Web •Función I4GL •Argumentos •Fichero WSDL Servidor de Aplicaciones Consumidor (Web, Java, .NET) Fichero objeto Librerías I4GL IDS Otros servicios Web Consumidor (I4GL) I4GL 14 W4GL y W4GLC: Publish FUNCTION cc_details(card_number, expiry_date, cvv_number) DEFINE credit_card_rec RECORD LIKE credit_customer.* ... LET query_stmt = "SELECT * FROM credit_customer WHERE card_number = ? AND expiry_date = ? AND cvv_number = ?" ... IF SQLCA.SQLCODE != 100 THEN LET query_stmt = "SELECT * FROM card_transaction WHERE customerId = ?" ... FETCH cur_card_transaction INTO transaction_rec.* IF SQLCA.SQLCODE = 100 THEN DISPLAY "No transaction record found." END IF 4GL Codigo fuente ... ELSE DISPLAY "No customer record found." END IF ... RETURN credit_card_rec.name, credit_card_rec.address, credit_card_rec.city, credit_card_rec.state ... END FUNCTION 15 W4GL y W4GLC: Publish w4gl (Interfaz grafico) fichero de configuración 4cf w4glc (Perl script) Web service definition (WSDL) 4GL Codigo fuente Publish IDS 16 Linea de comando: W4GLC Script basado en Perl No hace uso de la base de datos, solo trabaja con ficheros de texto W4GLC {-OPTION} <configuration-file> OPTION DESCRIPTION silent No muestra ninguna salida en la pantalla keep No borra los ficheros temporales force Si ya existe un servicio con el mismo nombre lo sobrescribe generate Genera el código auxiliar para publicar o suscribir compile Compila el código auxiliar. deploy Deploy el servicio web in el servidor AXIS package Crea el paquete con el servicio web para poder ser usado en producción 17 Interfaz Grafico: W4GL Definir un servicio Web Generar el fichero de configuración (4cf) Deploy un servicio Web Package un servicio Web 18 Definir un servicio Web 19 Definir un servicio Web 20 Definir un servicio Web 21 Generar el fichero de configuración (4cf) 22 Ejemplo de un fichero 4cf usado al Publicar 23 Deploy un servicio Web Usa la información definida en el fichero .4cf Genera y compila el código auxiliar Crea el fichero WSDL (Web Services Definition Language) Crea la librería I4GL Copia los ficheros al directorio services en el servidor de aplicaciones (AXIS) 24 Deploy un servicio Web 25 Package un servicio Web Facilita el proceso de deployment en diferentes servidores Reduce trabajo a la hora de recrear el servicio Web Crea un fichero comprimido (.tar) con todo lo necesario para el funcionamiento de el servicio Web 26 Package un servicio Web 27 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas típicos Futuro de Informix 4GL Referencias 28 Consumir un servicio Web Proceso W4GL y W4GLC: Subscribe Añadir una defección de un servicio Web Fichero de configuración 4cf (Subscriber) Generar y compilar el código auxiliar 29 Proceso Definir la información sobre el servicio que se quiere suscribir usando la herramienta W4GL Compilar usando “Compile” para obtener: – fichero de configuración (.4cf) – código .c de el wrapper o función proxy para poder usar el servicio Web – fichero objeto con el código Linkar el objeto con la aplicación I4GL 30 W4GL y W4GLC: Subscribe w4gl (Interfaz grafico) Fichero de configuration (4cf) w4glc (Script perl ) Genera y Compila el codigo auxiliar Fichero WSDL servicio Web (WSDL) Codigo fuente en Informix 4GL Subscribe IDS 31 W4GL y W4GLC: Subscribe MAIN CALL call_web_service_client() END MAIN w4gl (Interfaz grafico) FUNCTION call_web_service_client() DEFINE name Fichero de configuration (4cf) w4glc (Script perl ) VARCHAR(40), address VARCHAR(200), ... transaction_date description value DATE, VARCHAR(250), INTEGER ... Fichero WSDL servicio Web INPUT card_number, cvv_number, expiry_date FROM s_card.card_number, s_card.cvv_number, s_card.expiry_date (WSDL) Genera y Compila el codigo auxiliar OPEN FORM f_credit FROM "svc_client" DISPLAY FORM f_credit CALL i4gl_cc_details(card_number, expiry_date, cvv_number) Codigo fuente en Informix 4GL RETURNING name, address, city, state, zipcode, phone, email, card_number, creditLimit, cardType, transaction_date, description, value Subscribe DISPLAY name TO s_card.name DISPLAY address TO s_card.address ... DISPLAY description TO s_card.description IDS DISPLAY value TO s_card.value END FUNCTION 32 W4GL y W4GLC: Subscribe w4gl (Interfaz grafico) Fichero de configuration (4cf) w4glc (Script perl ) Genera y Compila el codigo auxiliar Fichero WSDL servicio Web (WSDL) Codigo fuente en Informix 4GL Subscribe IDS Aplicación en 4GL utilizando un servicio web 33 Añadir una definición de un servicio Web 34 Añadir una definición de un servicio Web 35 Compilar el código auxiliar 36 Ejemplo de un fichero 4cf para suscribir 37 Usar el servicio Web sin I4GL El servicio Web puede ser usado desde cualquier otro lenguaje que soporte Web Services. 38 Usar el servicio Web sin I4GL El servicio Web puede ser usado desde cualquier otro lenguaje que soporte Web Services. 39 Usar el servicio Web sin I4GL El servicio Web puede ser usado desde cualquier otro lenguaje que soporte Web Services. 40 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas tipicos Futuro de Informix 4GL Referencias 41 Problemas Típicos Ficheros logs de el servidor de aplicaciones AXIS2C – Problemas de conexión – Problemas con el servidor Web – Errores durante el proceso de deployment Fichero de log de W4GL y W4GLC (/tmp/w4glerr.log) – Errores relacionados con configuración – Errores de compilación 42 Problemas Típicos Ficheros logs de el servidor de aplicaciones AXIS2C – Problemas de conexión – Problemas con el servidor Web – Errores durante el proceso de deployment Fichero de log de W4GL y W4GLC (/tmp/w4glerr.log) – Errores relacionados con configuración – Errores de compilación 43 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas típicos Futuro de Informix 4GL Referencias 44 Futuro de Informix 4GL 4GL 7.x 4GL 7.x 4GL 7.x (SOA enablement) SOA enablement Reports via web services Function signature detection (I4GL parser) Enhanced Error handling RECORD type WSDL parser Enhance Language support File I/O support Client Required Priority Defect Fixes Q2 2010 (I4GL Embeddability) Library support I4GL non-interactive part as library Dynamic load of shared library by p-code runner Certification of noninteractive I4GL-LIB for web languages/tools. Mac OS basic port Evaluation copy P-code, C-code, ISQL & ID (I4GL Modernization) Form enhancements Horizontal Scrolling Form and field status List support Report enhancements XML output Enhanced Language support New I4GL syntax Client Required Priority Defect Fixes 2012 and beyond Form enhancements System curses Improved color Box Multi-line fields in screen arrays Variable size forms Enhanced Sub-table handling Mac OS Native Library Enhance Language support New SQL syntax from IDS SOA Enablement WAS support Client Required Priority Defect Fixes Q4 2010 I4GL Interim Releases Report enhancements Q2 2011 PDF support I4gl in IDS Disclaimer: The information on the new product is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information on the new product is for informational purposes only and may not be incorporated into any contract. The information on the new product is not a commitment, promise, or legal obligation to deliver any material, code or functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion. 45 Contenido Informix 4GL Arquitectura Orientada a Servicios (SOA) Requerimientos y plataformas soportadas Servicios Web – Publish – Subscribe Problemas típicos Futuro de Informix 4GL Referencias 46 Referencias La documentación de IBM Informix 4GL v 7.50.xC3 esta disponible en: http://www-01.ibm.com/support/docview.wss?uid=swg27015416 IBM Informix 4GL v 7.50.xC3, xC2 : Release notes, documentación notes y machine notes: http://www-01.ibm.com/support/docview.wss?uid=pub1gi11910302 http://www-01.ibm.com/support/docview.wss?uid=swg27013651 Artículos sobre SOA en DeveloperWorks: http://www.ibm.com/developerworks/data/library/techarticle/dm0910i4glwebservices/index.html http://www.ibm.com/developerworks/data/library/techarticle/dm-0902mottupalli/ 47 Forums y Comunidades online para Informix IIUG – the worldwide community of Informix users Membership is FREE – join today! http://www.iiug.org Data Management Community – share and interact with peers around the world http://www.ibm.com/software/data/management/community.html Information Champions – recognizes individuals who have made the most outstanding contributions to the Information Management community http://www.ibm.com/software/data/champion 48 49