lunes, 10 de septiembre de 2007

TIBCO Business Studio 2.0

Ya se encuentra disponible la versión 2.0 de la herramienta gratuita de modelización y simulación de procesos de negocio de TIBCO Software (TIBCO Business Studio).


A continuación se enumeran las principales características de esta versión:

Vista de Negocio

Visualización del proceso de negocio orientada a analista de negocio. En esta vista no se representan detalles técnicos de la implementación del proceso de negocio.

Vista Técnica

Visualización del proceso orientada a analistas técnicos. Se muestran detalles técnicos de la implementación del proceso de negocio. Se pueden definir la implementación de:

* Tareas manuales de Usuario. Se especifican los parámetros de entrada y salida.

* Llamada a servicios definidos con WSDL.

* E-mail. Definir el envío de un correo electrónico.

* Llamada a BD. Es posible invocar procedimientos almacenados,

* JavaScript. Ejecución de código de javaScript en tiempo de ejecución.

* Disparadores. Configurar el lanzamiento de eventos a una determinada fecha y hora.

* Ejecución de código Java.

Soporte completo de BPMN 1.0

Simulación

Es posible simular los procesos definidos con TIBCO Bussines Studio para detectar cuellos de botella, áreas de alto coste o zonas donde es posible reducir el nivel de servicio.

Para la simulación se dispone de varios parámetros que pueden modificarse:

* Coste de la tarea

* Número de agentes

* Distribución de la carga de trabajo.

Informes a medida

Importar modelos

Soporte para importar procesos de negocio definidos con ARIS IDS Scheer o Microsoft Visio.

Ejecución en TIBCO iProcess

Después de modelar el proceso de negocio con TIBCO Business Studio es posible exportar el proceso para ser ejecutado en TIBCO iProcess Engine. Antes de poder ejecutar el proceso en iProcess Engine de debe importar el proceso en iProcess Modeler para terminar de definir los detalles de implementación.



Personalmente me ha agradado la posibilidad de simular los procesos de negocio configurando el coste de las tareas, el número de personas que pueden ejecutar determinadas tareas , y el porcentaje de tareas que pasan por una rama u otra de una bifurcación condicional. Gracias a estas simulaciones se pueden dimensionar correctamente los departamentos involucrados en el proceso de negocio.

¿Conocéis herramientas de este tipo con esta capacidad de simulación?




viernes, 24 de agosto de 2007

Metodología SOA. Artículo de Iam Seshadri

En http://www.tibco.com/resources/solutions/soa/lam_seshadri_article.pdf tenemos publicado el capítulo 15 de "Enterprise Architecture and Integration: Methods, Implementation, and Technologies" de Wing Lam y Venky Shankararaman. En dicho capítulo, Gokul Seshadri, arquitecto de TIBCO Software en USA nos habla de como la metodología SOA se adopta para la integración de aplicaciones.

Según Gokul Seshadri nos podemos ahorrar los adaptadores de las arquitecturas EAI gracias a que las aplicaciones empresariales proporcionan interfaces basadas en servicios, pero que hay que tener en cuanta a la hora de definir una arquitectura SOA que no todas la aplicaciones empresariales soportan los estandares de comunicación definidos para SOA. O sea, que ya veremos si tenemos SOA, SOA+EAI, EAI+SOA o EAI.

También nos aconseja montar un piloto y tener especial cuidado en el rendimiento, escalabilidad y balanceo de carga de los servicio proporcionados por la aplicaciones. Vaya, a lo mejor la moda SOA está más madura que las implementaciones de los fabricantes.

Salvo ciertos posibles inconvenientes habrá que hacerse a la idea de que somos más SOA que EAI (no hay más que entrar en www.tibco.com). Es lo que tienen las modas, que no se sabe si son buenas o malas, pero que desde luego venden.

martes, 7 de agosto de 2007

Bruce Silver analiza la solución BPM de TIBCO

Burce Silver (www.brsilver.com), analísta experto en BPM ha analizado la solución BPM de TIBCO Software, TIBCO iProcess™ Suite 10.6. El documento se encuentra accesible en http://www.tibco.com/resources/solutions/bpm/bpms_report.pdf.

En el informe se hace un recorrido por las distintos productos de TIBCO para BPM. Los productos para BPM analizádos son:

iProcess Engine. Motor de procesos.

TIBCO Business Stidio 2.0. Herramienta gratuita para el diseño y simulación de procesos de negocion bajo el estandar BPMN.

iProcess Decissions. gestión de reglas de negocio.

iProcess Insigth y TIBCO BAM. Proporcionan moniorización de los procesos en tiempo real.

iProcess Analytics. Monitorización del rendimiento de los procesos en base al histórico de procesos.


Otros productos de TIBCO que dan soporte a BPM:

iProcess Modeler. Herramienta de definición de procesos.

TIBCO Business Works. Herramienta EAI considerada parte de la plataforma SOA mas que de la solución BPM.

TIBCO Active Matrix. Nueva plataforma para la infraestructura SOA.

TIBCO General Interface. Herramienta AJAX.

TIBCO Portal Builder. Herramienta para el desarrollo rápido de portales para BPM.

viernes, 15 de junio de 2007

Ubuntu 7.04 Feisty en VmWare con VMware Tools

Gracias a la virtulización vamos a probar el S.O Ubuntu 7.04 evitando tener que realizar un arranque dual en la máquina.

Como SW de virtualización se utiliza VMware Server que se puede descarga gratuitamente en http://www.vmware.com/download/server/

Pasos para la creación de una máquina virtual para Ubuntu

1) Ejecutamos la consola de VMware Server, elegimos "local host" y seleccionamos "new virtual machine"

2) Excogemos la opción "custom" y seleccionamos "Ubuntu" como S.O huésped.

3) Selecionamos la carpeta en la cual se aloja el disco virtual. Se recomienda defragmentar previamente el disco para mejorar el rendimiento.

Modificar el tamaño del disco virtual en función del uso que vallamos a hacer de la máquina virtual. La instalación de Ubuntu requiere al menos 4 Gb.

4) Dejamos “check” a “Make this virtual Machine Private” si es que vamos a utilizarla sólo desde nuestra cuenta de Windows. También dejamos marcado "Users that power on the virtual machine"

5) Número de procesadores o núcleos que tiene nuestra PC. Si tienen una Core, Core2, o AMD de dos núcleos, elegir 2. De lo contrario, elegir 1.

6) Memoria. Depende de la memoria disponible en la máquina y cuanta queremos destinar a la máquina virtual. Es modificable posteriormente con la consola de VMware Server

7) elegir "Use network address translation (NAT)" De esta manera, nuestra máquina virtual con Ubuntu utilizará las mismas opciones de conexión y configuración de redes que Windows. (Nota: si están con sólo un modem -sin router- elegir la opción de “bridged” )

8) El resto opciones las dejamos como están y pulsamos finalizar.

Seleccionamos "Virtual Machine Settings". Como la tarjeta de sonido no se ha instalado pulsmos "add" y seleccionamos "sound adapter".




Instalación Ubuntu 7.04 en la máquina virtual

Colocamos el CD de instalación de Ubuntu y arrancamos la máquina virtual seleccionando "Start this virtual Machine"



Selecionamos "Start or Install Ubuntu"



Una vez arrancado el LiveCD hacemos doble click en "Install"


Seleccionamos el idioma y la zona horaria.



Configuración manual de las particiones.



Dejamos al menos 1Mb de swap. Para que ciertas aplicaciones (oracle, etc.) puedan ejecutarse en máquinas con menos de 1Gb de RAM es necesario un tamaño de swap de al menos 1 Mb.


A continuación configuramos nuestro usuario.


Instalamos Ubuntu en la máquina virtual...


VMware Tools

Las VMware Tools son un conjunto de controladores y aplicaiones que mejoran el rendimiento de la máquina virtual.

Para instalar VmWareTools debemos arrancar la maquina virtual Ubuntu e introducir nuestro usuario. Una vez que el sistema operativo a terminado de arrancar, desde el menu de VmWare, debemos seleccionar la opcion VM --> Install VMware Tools

Con esto apecerá sobre el escritorio de la maquina virtual montada una unidad de CD con dos archivos



Un instalador rpm y un archivo comprimido .tar.gz. El instalador rpm no es válido para distribuciones basadas en Debian. Asi pues, usaremos el archivo VmwareTools-1.0.2-39867.tar.gz. Copiaremos el archivo a una ruta local, en mi caso /tmp/VmWareTools/ y abrimos una sesión de consola.

convertir nuestro usuario en root para la sesión usando el siguiente comando:

$ sudo su

Ahora tenemos que descomprimir el archivo .tar.gz para ello utizamos el siguiente comando:

$ tar -zxvf VmwareTools-1.0.2-39867.tar.gz


Al descomprimir el archivo se creará un nuevo directorio llamado vmware-tools-distrib.

Para instalar las VMware Tools necesitamos tener instalado:

  • El comando make.
  • El compilador de C gcc.
  • Los archivos de cabecera del Kernel de nuestra versión.

Comprobar con el gestor de paquetes Synaptic.


Ejecutar el programa de instalación

$ ./vmware-tools-install.pl

Una vez finalizada la instalación de VMware Tools el instalador nos pregunta si queremos ejecutar el programa de configuración, respondemos afirmativamente, contentando a las preguntas que hace el programa con las respuestas por defecto.

Para que los cambios tengan efecto deberemos reiniciar el sistema.





jueves, 31 de mayo de 2007

Tabla mutando. ORA-04091

ORA-04091: table XXX is mutating, trigger/function may not see it


En el caso de tener dos triggers sobre la misma tabla nos podemos encontrar con el error ORA-04091.

El trigger1 actualiza campos de la tabla XXX, y el trigger2 accede a información de XXX. Esta situación provoca el error de tabla mutando. El trigger2 intenta accede a una información que se está generando, es decir, la tabla está mutando, cambiando o actualizandose.

Para solucionar el problema debemos aplazar las acciones del trigger2 hasta que se hayan completado las acciones de triger1.


Ejemplo.

Trigger1 realiza UPDATE sobre XXX
Trigger2 realiza SELECT sobre XXX

Para la select del trigger2 debemos utilizar los rowid de las filas afectadas para acceder a los valores :new.


Implementación:

SQL> create table parent
2 ( theKey int primary key,
3 status varchar2(1),
4 effDate date
5 )
6 /
Table created.

SQL> create table log_table
2 ( theKey int references parent(theKey),
3 status varchar2(1),
4 effDate date
5 )
6 /
Table created.

SQL> REM this package is used to maintain our state. We will save the rowids of newly
SQL> REM inserted / updated rows in this package. We declare 2 arrays -- one will
SQL> REM hold our new rows rowids (newRows). The other is used to reset this array,
SQL> REM it is an 'empty' array

SQL> create or replace package state_pkg
2 as
3 type ridArray is table of rowid index by binary_integer;
4
4 newRows ridArray;
5 empty ridArray;
6 end;
7 /
Package created.

SQL> REM We must set the state of the above package to some known, consistent state
SQL> REM before we being processing the row triggers. This trigger is mandatory,
SQL> REM we *cannot* rely on the AFTER trigger to reset the package state. This
SQL> REM is because during a multi-row insert or update, the ROW trigger may fire
SQL> REM but the AFTER tirgger does not have to fire -- if the second row in an update
SQL> REM fails due to some constraint error -- the row trigger will have fired 2 times
SQL> REM but the AFTER trigger (which we relied on to reset the package) will never fire.
SQL> REM That would leave 2 erroneous rowids in the newRows array for the next insert/update
SQL> REM to see. Therefore, before the insert / update takes place, we 'reset'

SQL> create or replace trigger parent_bi
2 before insert or update on parent
3 begin
4 state_pkg.newRows := state_pkg.empty;
5 end;
6 /
Trigger created.

SQL> REM This trigger simply captures the rowid of the affected row and
SQL> REM saves it in the newRows array.

SQL> create or replace trigger parent_aifer
2 after insert or update of status on parent for each row
3 begin
4 state_pkg.newRows( state_pkg.newRows.count+1 ) := :new.rowid;
5 end;
6 /
Trigger created.

SQL> REM this trigger processes the new rows. We simply loop over the newRows
SQL> REM array processing each newly inserted/modified row in turn.

SQL> create or replace trigger parent_ai
2 after insert or update of status on parent
3 begin
4 for i in 1 .. state_pkg.newRows.count loop
5 insert into log_table
6 select theKey, status, effDate
7 from parent where rowid = state_pkg.newRows(i);
8 end loop;
9 end;
10 /
Trigger created.

SQL> REM this demonstrates that we can process single and multi-row inserts/updates
SQL> REM without failure (and can do it correctly)

SQL> insert into parent values ( 1, 'A', sysdate-5 );
1 row created.

SQL> insert into parent values ( 2, 'B', sysdate-4 );
1 row created.

SQL> insert into parent values ( 3, 'C', sysdate-3 );
1 row created.

SQL> insert into parent select theKey+6, status, effDate+1 from parent;
3 rows created.

SQL> select * from log_table;

THEKEY S EFFDATE
---------- - ---------
1 A 04-AUG-99
2 B 05-AUG-99
3 C 06-AUG-99
7 A 05-AUG-99
8 B 06-AUG-99
9 C 07-AUG-99

6 rows selected.

SQL> update parent set status = chr( ascii(status)+1 ), effDate = sysdate;
6 rows updated.

SQL> select * from log_table;

THEKEY S EFFDATE
---------- - ---------
1 A 04-AUG-99
2 B 05-AUG-99
3 C 06-AUG-99
7 A 05-AUG-99
8 B 06-AUG-99
9 C 07-AUG-99
1 B 09-AUG-99
2 C 09-AUG-99
3 D 09-AUG-99
7 B 09-AUG-99
8 C 09-AUG-99
9 D 09-AUG-99

12 rows selected.


Enlace: http://asktom.oracle.com/tkyte/Mutate/index.html

miércoles, 18 de abril de 2007

¿Que es BPEL?

BPEL (Business Process Definition Languaje) es un lenguaje XML utilizado para definir la orquestación de servicios web, con el objetivo de dotar de cierta lógica de negocio a la invocación de varios servicios web. Su nombre completo es BPEL4WS, pero también se conoce como WS-BPEL.

Esta orquestación de servicios web se normaliza en el proceso de negocio (BPEL Process). Un proceso de negocio BPEL es un fichero XML generado por una herramienta de diseño que se ejecuta en un motor (execution engine).

El objetivo es diseñar, integrar, ejecutar y administrar procesos de negocio de Web Services de la misma forma que las soluciones propietarias EAI y BPM, pero con un coste menor, y con mayor flexibilidad e interoperabilidad.