Actualizado el 28 de Julio del 2017 (Publicado el 31 de Enero del 2017)
1.457 visualizaciones desde el 31 de Enero del 2017
165,3 KB
7 paginas
Creado hace 25a (14/10/1999)
FORO: Una aplicación de WorkFlow en Linux
José Antonio Espinosa
Octubre 1999
Resumen
En esta ponencia, pretendo mostrar un ejemplo práctico del uso de Linux en las empresas españolas,
utilizando mi experiencia en el desarrollo de un producto comercial y su porting a la plataforma
Linux.
Los problemas técnicos,
conclusiones que podremos obtener de esta experiencia.
los problemas de mentalidad y los resultados obtenidos serán las
Introducción
Linux está convirtiéndose día a día en un sistema operativo conocido y apreciado por muchos
usuarios entusiastas; sin embargo, dentro del entorno de las empresas grandes, no se utiliza
adecuadamente.
En este artículo, voy a mostrar cómo se ha utilizado Linux en un proyecto importante dentro de una
empresa privada. Mostraré todos los problemas y resistencias que tuvimos que vencer para poder
portar un producto a una plataforma “desconocida” en el entorno empresarial como es Linux.
La empresa
Sema Group sae es la filial española de Sema Group corporation, una empresa en la que trabajan
20000 personas, 3000 de ellas en España y que, parte de su actividad está dedicada a la integración
de sistemas y a desarrollar soluciones a medida para clientes de cierto tamaño. Sema Group sae está
divida en varias divisiones, dentro de lo que se denominan áreas de negocio. Una de estas divisiones,
llamada DIS - División de Ingeniería del Software - es la que ha desarrollado un producto altamente
competitivo y complejo tecnológicamente, llamado FORO.
El equipo de desarrollo destinado en SEMA al diseño y la implementación de FORO está compuesto
por 8 personas, entre las cuales me incluyo yo mismo. Mi papel dentro del desarrollo de FORO ha
ido desde el control de versiones, el proceso de instalación en UNIX, el diseño de un cliente HTML
genérico, etc. hasta el porting completo del sistema a Linux. Esta es la parte en la que nos
centraremos en este articulo.
El producto
FORO es un producto de WorkFlow, es decir, un producto destinado a automatizar
todos los procesos “administrativos” de una empresa. Es un producto que tiene
muchos años de historia. Surgió con una vocación de investigar sobre flujos de
trabajo para, más tarde, configurarse como un producto propio que pudiera
distribuirse instalarse en cualquier organización. De hecho, la aplicación se ha instalado en empresas
importantes como SuperCable en sevilla (proveedor de cable) o en el sistema de fidelización de las
líneas aéreas Iberia (Iberia Plus).
El producto se ha diseñado para que sea fiable, escalable y soporte un gran volumen de trabajo, ya
que debe soportar todas las transacciones habituales en una compañía. FORO está diseñado para
poder cambiar fácilmente el flujo de trabajo dentro de una organización, lo que permite llevar a cabo
procesos de reingeniería encaminados a optimizar la forma de operar de la organización.
La tecnología
El esquema del servidor FORO, se puede ver en la siguiente imagen:
External Data
FORO
Processes
Designer
FORO Servers
External
Invocation
FORO-b
ots
System
Evolution
Administration
Users
Groups
Profiles
Mappings
Cases
Tasks, Data
Starting Case
Task Tray
Directory
Server
External
Applications
Describir completamente la arquitectura y funcionalidades del producto podría llevarnos a una
extensión prohibitiva del documento, así pues, destacaremos sólo aquellos aspectos que son más
relevantes para nuestro propósito.
FORO integra distintas tecnologías y productos asociados; a grandes rasgos, podemos resumir estas
tecnologías en las siguientes:
Desarrollo:
C++ (en el desarrollo de servidores y clientes )
Java (en clientes y servidores (servlets))
C (algunos pequeños módulos, como el de seguridad)
Corba (como capa de comunicaciones)
LDAP
Web
OCI (Oracle Call Interface)
RSA (Encriptación)
Integración
Base de datos ORACLE
Servidor de Web
Servidor de Directorio LDAP
JDK
Broker Corba (ORB)
Los productos y tecnologías utilizadas en Solaris son las siguientes:
ORACLE 8.0.5
Solaris 2.6
compilador gcc/egcs
ORBacus (ooc)
Netscape Enterprise Server
Netscape Directory Server
JDK 1.1.6 de Sun
La infraestructura hardware necesaria para poder ejecutar FORO correctamente exigía una
UltraSparc y una conexión de red rápida.
El salto a Linux
Debido a razones comerciales, FORO debía mostrarse a la mayor cantidad posible de clientes, sin
necesidad de que se debiesen desplazar a las dependencias de SEMA Group. Las primeras
demostraciones que se llevaron a cabo requerían que en la empresa cliente se dispusieran de caros
equipos y estructuras de comunicaciones. Todavía recuerdo la vez que debíamos hacer una
demostración del producto a una empresa radicada en Bogotá (colombia). Dedicamos más de una
semana a preparar todos los materiales a llevarnos, tuvimos que acordar con el cliente que preparase
una máquina Sparc e infraestructura de red adecuada. Después de casi un día entero instalando
productos adicionales y el mismo FORO, la presentación salío con éxito, pero con una duración de, a
penas, 30 minutos.
La conclusión era evidente, se debía crear un FORO “portatil”.Se barajaron ciertas opciones, desde
crear una versión para NT que corriese en un portátil hasta hacer una versión reducida del producto
“solo”para demostraciones. Finalmente, y con un poco de suerte, conseguí convencer a mis jefes de
que la mejor solución era portar FORO a Linux para poder instalarlo posteriormente en un
ordenador portátil.
Una vez tomada esta decisión y saltados los obstáculos obvios de falta de material y de tiempo, se
comenzó el proceso de porting.
Dado que FORO sufrió un proceso similar hacía pocos años para crear la versión AIX del producto,
existía un sistema de compilación basado en Imakefiles que permite mantener archivos de
configuración diferentes para cada ordenador. Añadiendo archivos para la plataforma Linux y
retocando algunas reglas de compilación que se habían quedado obsoletas conseguimos construir el
primer entorno de compilación de FORO para Linux.
El sistema de Imakefiles fue el primer método útil que se desarrolló para permitir la multiplataforma
en sistemas UNIX. El origen de esta herramienta está en el proyecto X11 que debía ejecutarse en
múltiples plataformas distintas dentro del mundo UNIX. Sin embargo, este sistema ha sido superado
por el autoconf, sin embargo, la amplitud del proyecto nos ha echo imposible, hasta el momento,
adoptar esta aplicación para crear versiones multiplataforma de FORO.
Las tecnologías utilizadas en Linux son las siguientes:
ORACLE 8.0.5
Linux RedHat 5.x
compilador gcc/egcs
ORBacus (ooc)
Apache Web Server
OpenLDAP / Netscape Directory Server
JDK 1.1.8 de Blackdown.org
Los Problemas Técnicos
El mayor problema al que nos enfrentamos, en esa época, fue la inexistencia de una base de datos
que cumpliera con las especificaciones necesarias para FORO, entre ellas la existencia de secuencias
y triggers. Comenzamos a probar con bases de datos gratuitas (mySQL, postgres, etc.) pero
llegamos a la conclusión de que necesitabamos, realmente, ORACLE.
Nos pusimos en contacto con la empresa ORACLE, para preguntarles si pensaban sacar una versión
de ORACLE para Linux. En aquella época - Febrero '98 - ORACLE no tenía planes para portar su
sistema de base de datos. Esto congeló el proyecto hasta Junio de 1998, fecha en la que recibimos
una copia del ORACLE 8.0.5 para Linux dentro del programa EAP (Early Adopter Programme). Ya
no había ningún problema insalvable y nos pusimos manos a la obra. Los principales problemas que
nos encontramos fueron los siguientes:
Incompatibilidades de código.
Dado que el origen del porting era solaris, la mayoría del código era directamente utilizable (>95%).
Esto demuestra la buena disposición de los sistemas UNIX a ser portables entre plataformas. Sin
embargo, dado que los estándares en lo que se basaban los dos UNIX eran distintos, había algunos
ficheros de cabecera del sistema que no tenían soporte en Linux, aunque, afortunadamente,
encontramos un sustituto para cada uno de ellos. Parte de las incompatibilidades encontradas se
resumían en la colocación de las aplicaciones en el sistema de ficheros, el uso de la aplicación Imake
de sunview en vez de la de Xwindows, algunas constantes relacionadas con el timing, etc.
Otro problema interesante fue la diferencia existente en las librerías OCI de Oracle sobre los valores
por defecto que devolvían ciertas funciones. En el codigo desarrollado para Solaris, se hacía uso de
esos valores y al portarlo a Linux resultó que se debían inicializar de otra manera ¿Problema de
Oracle? Este problema se repitió en la inicialización de la memoria, que se realiza de forma distinta
en Linux que en Solaris.
Falta / Exceso de funciones en libc.
Aunque el desarrollo se realizó enteramente en C++, aprovechando las mismas versiones del
compilador egcs, la mayoría de las funciones del sistema se encontraban en la librería libc. El
desarrollo en Linux comenzó utilizando directamente la glibc, para mejorar la compatibilidad,
eliminando así los viejos problemas con la libc5 propia de Linux.
A pesar de utilizar la librería estándard, nos encontramos con que en Solaris existían algunas
funciones mejoradas que, por desgracia, se habían introducido en el código de FORO. Un ejemplo
fue la función ctime. En Solaris la página de ayuda para esta función es esta:
C Library Functions strftime(3C)
NAME
strftime, cftime, ascftime - convert date and time to string
SYNOPSIS
#include <time.h>
size_t strftime(const char *s, size_t maxsize,
const char *format, const struct tm *timeptr);
int cftime(char *s, char *format, const time_t *clock);
Como vemos, es una función sencilla que convierte la
Comentarios de: FORO: Una aplicación de WorkFlow en Linux (0)
No hay comentarios