Wednesday, March 4, 2009

Reglas de negocio dinámicas en BPM Studio

Una regla de negocio dinámica permite evaluar una o más condiciones para tomar una decisión de manera automática en el proceso.

Para crear una nueva regla de negocio debemos primero crear una variable que aplique a todo el proyecto, para esto vamos a la pestaña de variables de proyecto y hacemos click en el botón de +, el cual nos permite agregar las variables. En este ejemplo vamos a crear las variables edad del cliente y monto del producto seleccionado, por cada variable debemos tener su nombre, tipo de dato y el indicador de negocio (Cuando la variable es un atributo y no un número es una dimensión).

image

Ahora vamos a inicializar las variables del proceso, es importante que las variables del proyecto que acabamos de crear queden inicializadas con algún valor. Para esto hacemos doble click en la actividad Begin y vamos agregando las variables con su respectivo argumento.

image

En el proceso tenemos dos actividades automáticas que se encargan de asignarle un valor a la validación del crédito (de aprobación o rechazo) según la decisión que se tome por la regla de negocio que vamos a crear. Esta regla de negocio se ejecuta en el momento en el que el cliente hace submit a su solicitud de crédito, para poder hacer esto vamos a crear una transición de regla de negocio desde la actividad de Begin hasta la actividad que se encarga de setear la variable de validación, esto lo hacemos dando click derecho sobre la actividad de Begin y seleccionando “Add business rule transition” y luego arrastrando la flecha hacia la actividad que debería realizarse en caso de que la regla sea respetada, para este ejemplo la regla va hacia la actividad “setearValidacionAprobar”. Le ponemos de nombre a la transicion “DatosValidados”, hacemos click en el tab properties, damos click en New y a la  regla le ponemos el nombre de “Validacion Datos Basicos”

image

Ahora debemos darle la lógica de funcionamiento a esa regla. Hacemos click en el botón de Business Rule

image

Doble click sobre la regla que acabamos de crear y luego click en Add, aquí es donde podemos ingresar las reglas con que queremos que funcione la regla

image

Y ahora, gracias a nuestra regla, tenemos como filtro inicial para la aprobación del producto solicitado que el cliente tenga más de 25 años.

Simulaciones en BPM Studio

Luego de tener el proceso funcionando, es necesario ver cómo se comporta para poder detectar problemas ocasionados por un cuello de botella o cualquier otro problema en el runtime. BPM permite hacer simulaciones sobre el comportamiento de los procesos que nos ayudan a optimizar los procesos desarrollados.

Lo primero que haremos es cambiarnos al modo de “analista de negocios” el cual nos permite tener un mejor manejo del BPM para los fines de simulación.

Ahora vamos a crear un modelo de simulación, el cual se basa en las actividades del proceso y en donde podemos definir la duración, los recursos, el costo, el manejo de información en cola y las excepciones que pueden ocurrir en cada actividad. Para hacer esto seleccionamos el proceso a simular, click derecho y seleccionar “New Process Simulation Model”.

image

Para este ejemplo vamos a simular 100 instancias del proceso con un tipo de distribución normal (podemos seleccionar constante, uniforme, exponencial o real de acuerdo al comportamiento que queramos en la simulación). Aquí estamos introduciendo los datos de prueba, pero podríamos alimentar este modelo de datos reales luego de tener el proceso corriendo, para lograr lo que se llama close loop simulation.

Damos click derecho en Simulations y seleccionamos “New Simulation”, es aquí donde le asignamos a la simulación un modelo de simulación, los recursos que van a participar y sus características dentro del proceso (nombre, costo, eficiencia, capacidad, disponibilidad).

image

Y ahora a correr la simulación, para esto hacemos click en Window->Show View->Simulation y luego click en el botón de play

image

Durante la simulación podemos modificar la cantidad de recursos disponibles por actividad con los botones de + y – que hay al lado de las actividades. Para poder ver el resultado final, hacemos fast forward y empezamos a analizar la información.

Los resultados de la simulación los podemos mapear por actividades, recursos, categorias e indicadores, los indicadores pueden ser el costo, el tiempo o el comportamiento de las instancias. También podemos seleccionar el tipo de gráfico que queremos que nos muestre los resultados (barras, tablas, etc) y al final poder generar un reporte que nos ayude a mejorar el proceso.

image image

Friday, February 27, 2009

Construcción de formularios en BPM Studio

Las actividades de los procesos de negocio pueden tener distintos tipos de comportamientos e implementaciones.  Cuando estas son implementadas a través de interacción humana, es posible definir interfaces de usuario para la ejecución de las mismas.

En este aspecto existen dos alternativas: una, construir formularios dentro de la herramienta o, dos, apoyarse en tecnologías de presentación Web como JSP / JSF.  Para el ejemplo particular vamos a ver cómo construir formularios utilizando el BPM Studio.  En otra ocasión, explicaremos la creación de formularios con JSP / JSF.

Todo proceso de negocio contiene unidades de información conocidas como objetos de negocio, las cuales representan los datos que van a ser operados a lo largo del proceso.  Para ello debemos crear un objeto de negocio en el catálogo de elementos de BPM Studio.

image

Una vez creado el objeto de negocio, el paso siguiente es crear los atributos que lo componen.

image

Finalizada la creación de atributos, es posible continuar con la creación del formulario.  Para ello se hace clic derecho sobre el objeto de negocio, se selecciona la opción Nuevo y luego Presentación.  Esto inicia el wizard de creación del formulario.

image

En el wizard se establece el nombre del formulario, se deja seleccionada la opción de creación de presentación a partir de objeto BPM y luego se seleccionan los atributos que harán parte del formulario, los cuales corresponden a los atributos del objeto de negocio que creamos anteriormente.

image

Una vez finalizado el wizard, aparece el formulario con un diseño predeterminado con los campos de acuerdo a los atributos seleccionados.  Aquí se puede editar los campos, cambiar el tipo (texto, lista desplegable, lista de selección, fecha).

image

El paso posterior es asociar estos formularios al proceso a través de la creación de flujos de pantalla, donde se define el mapeo de datos de entrada y salida, y se asocian los eventos a los botones del formulario creado.

Para crear un flujo de pantalla, se debe seleccionar como implantación de una actividad la opción Flujo de Pantalla, y realizar su creación.  En la actividad de flujo de pantalla, se selecciona como tipo de implantación Llamada interactiva de BPM Object y en la opción Usar presentación de BPM Object se selecciona de la lista el formulario que creamos anteriormente.

image

Además se crea el mapeo de datos haciendo clic en la opción Asignaciones de argumentos.  Allí se relaciona para el argumento de salida (out) las variables de instancia action con valor selectedButton == "submit" ? OK : CANCEL y result con valor selectedButton.

image

Aceptando la creación de estas actividades, quedaría listo el formulario y su utilización en el flujo de pantalla descrito.  Esto quiere decir que se puede reutilizar el formulario en distintos flujos de pantalla.

Invocar un proceso BPEL desde BPM usando el BUS

 

Automatización de procesos de negocio no es lo mismo que sistematización.  Este último es utilizar un software que permita modelar, ejecutar y monitorear procesos de negocio donde se involucra interacción humana, es decir, los roles asocian participantes que van a interactuar en las actividades del proceso.

Automatizar es reemplazar dichos participantes por sistemas de información o reglas de negocio, utilizando para ello la definición de servicios de acuerdo a lineamientos de SOA (Service Oriented Architecture).  BPEL es un estándar que busca la automatización de procesos de negocio a través de la orquestación de servicios.

Teniendo en cuenta lo anterior, un proceso de negocio podría involucrar actividades humanas y actividades automatizadas, las cuales podrían estar modeladas en un proceso BPEL.  Este es el caso que se pretende explicar, donde un proceso de negocio BPM tiene una actividad automática, que a su vez es un proceso de negocio completo en BPEL, pero que es visto como un servicio publicado en el BUS.

En  BPM Studio debemos tener un proceso de negocio, y en el swimlane de actividades automáticas (rol por defecto) se debe colocar una actividad automática (en este caso sería la actividad Validación) que representa el subproceso en BPEL.

image

En BPEL tendríamos el proceso con las actividades automatizadas, pero no detallaremos este caso.  Simplemente se debe tener definido el proceso y funcionando correctamente.  En este caso, el proceso en BPEL es sincrónico.

image

En el BUS es necesario crear el Proxy Service y Business Service para el proceso de negocio de BPEL.  Para ello se crea primero el recurso WSDL del proceso y luego cada uno de los servicios (proxy y business).

image

image

En el BUS se puede probar la invocación del proceso de BPEL a través de las opciones de testing, y así validar que desde el BUS existe interoperabilidad con el proceso.  Finalizado esta parte, que es como la creación normal de cualquier servicio en el BUS, se prosigue con la invocación de este en BPM Studio.  En el catálogo de elementos se selecciona el módulo donde se quiera importar el objeto de negocio de BPEL, se selecciona la opción Catalogar componente –> Oracle Service Bus.

image

Allí se selecciona una configuración de servidor o se crea una nueva, la cual corresponde al lugar donde se encuentra en ejecución el BUS.  Dentro de esta se selecciona el componente relacionado con el servicio que encapsula al proceso de negocio de BPEL.

image

Esto crea la representación del objeto de negocio operado por el servicio, con los atributos correspondientes.

image

El siguiente paso es relacionar este componente en la actividad automática del proceso.  Para ello se selecciona la actividad para definir como tipo de implantación Componente.  En el nombre de componente se busca el correspondiente al elemento creado en el catálogo.

image

image

En nombre del método, se selecciona la operación de invocación del proceso en BPEL (si el proceso es sincrónico la operación será process).  Después se define la asignación de argumentos donde se configura como entrada la variable payload con el valor de la variable de instancia que representa los datos a enviar al servicio, y como salida la variable de instancia con el valor del resultado del servicio (proceso en BPEL).

image

Una vez realizado esto, lo único pendiente sería establecer actividades para manejar la información obtenida por la actividad y vincularla con el proceso actual.  El modelo de invocación del proceso en BPEL en BPM se vería similar a  la siguiente figura.

image

Con esto estaría listo el proceso en BPM invocando un proceso en BPEL a través de la publicación de un servicio en el BUS que lo representa.

Thursday, February 26, 2009

Registrar un web service en OSB

En este artículo hacemos un breve ejercicio para revisar la facilidad de registro de un servicio web en el Oracle Service Bus (aka ALSB).

Primero vamos a crear un servicio web sencillo a partir de una clase java, usando jdeveloper 10g.

Partimos de una clase sencilla con un método público que retorna la calificación de una ciudadano en una central de riesgo.

image

A partir de ella creamos un servicio web a través del wizard de Java Web Service. Ahora lo desplegamos y realizamos una prueba para verificar su respuesta exitosa.

image

El servicio nos responde sin problemas, ahora vamos a registrarlo en el bus.  Para ello vamos a entrar a la consola de administración, y nos dirigimos a la sección de Project Explorer.

Alí creamos un proyecto llamado BancoEjemplo, en el cual creamos algunas carpetas para organizar los contenidos: recursos donde estaremos registrando el wsdl del servicio, servicios donde estaremos guardando los business services del proyecto y proxy donde definiremos los proxy services.

 image

Para registrar el wsdl debemos iniciar una sesión, lo que nos permitirá deshacer cambios si cometemos algun error de configuración.  Luego iniciamos el wizard de creación de recurso escogiendo de la lista el tipo WSDL.

Con esto registrado en nuestra carpeta de recursos, vamos a la carpeta de servicios a crear el business service correspondiente. Allí seleccionamos del combo de tipo la opción Service->Business Service, diligenciamos el formulario y marcamos la opción de WSDL Web Service que nos permite explorar nuestros recursos WSDL registrados, seleccionamos nuestro wsdl y seguimos el wizard hasta su final.

image

Ahora vayamos a la carpeta Proxy para registrar un Proxy Service a partir del Business Service recién creado. image

Al crear el Proxy service podemos aprovechar las capacidades de procesamiento del mensaje, que provee el OSB, pare este ejemplo no incluiremos ninguna acción en el pipeline del proxy service. image

Ahora vamos a la consola de prueba del proxy service, y verificamos el estado del servicio.

image

Con esto terminamos de registrar en el bus un web service, mostrando con unos simples pasos cómo podemos brindarle flexibilidad a la infraestructura con base en un producto poderoso como OSB.

Saludos.

Como cambiar Oracle BI de puerto

Hace pocos dias un cliente me envio la siguiente duda.

1. Resulta que ya hice la migración y el servidor de reportes me quedo apuntando al puerto 9704, como puedo cambiar ese puerto al 80??? Estuve consultando mucho y no encontré.

Les agradezco su pronta ayuda con el proceso de migración relámpago.

Gracias

Me di a la tarea de documentar el proceso para futuras referencias.

image

Abre el siguiente archivo

%SAROOTDIR%\oc4j_bi\j2ee\home\config\default-web-site.xml

image

Cambia el numero 9704 (Puerto por defecto) por el puerto que desees utilizar en tu servidor de BI.

Para este caso usaremos port="7777"

Guarda los cambios realizados al archivo.

Se debe detener el OC4J despues de esta operacion.

image

Ahora lo iniciamos nuevamente.

image

Probamos nuevamente y vamos a nuestro servidor pero ahora sobre el puerto 7777 que fue el puerto elegido.

image

Espero que les haya sido de utilidad.

Hasta la proxima.

Tuesday, February 24, 2009

Hacer un dashboard en BPM Studio

En esta oportunidad quisimos hacer un pequeño ejercicio para mostrar la facilidad que BPM Studio ofrece para construir tableros de control sobre datos del negocio, no sobre datos de cargas de trabajo o rendimiendo de los procesos.

Voy a crear un sencillo proceso de ejemplo de 1 tarea, en el cual vamos a dar una respuesta sobre una solicitud.

image 

En el proceso vamos a manejar los datos ficticios de una solicitud de un producto Financiero, así que construimos el siguiente BPMObject:

image

Creamos unas listas estáticas para los campos producto y sexo.

Ahora creamos una variable de instancia en la que se registrarán los datos de la solicitud.

image

Y vamos a definir qué variables podremos usar para construir nuestro dashboard, para ello creamos algunas variables de Proyecto identificando si serán Dimensiones o Medidas (sí, como en un modelo de BI).

image

Construimos los screenflows para la actividad global de inicio del proceso y para la actividad intermedia.  No debemos olvidar hacer el mapeo correspondiente para asignar el valor adecuado a nuestras variables de Proyecto, si no lo hacemos nuestro proceso funsionará sin problemas pero cuando queramos crear un dashboard o visualizar estos datos en la bandeja de entrada de las tareas en el workspace, no tendremos datos para mostrar.

Probemos el proceso:

Entramos como el cliente y sometemos una solicitud.

image

Entramos al workspace como el analista y revisamos los datos de la solicitud.

image

Creé un grupo de solicitudes de prueba para tener más datos a analizar.  Ahora sí construyamos un dashboard.  Para ello nos situamos sobre el módulo adecuado en el catálogo, y creamos un nuevo BAM Dashboard.

image

Ahora comenzamos a definir cada indicador, el primero nos mostrará el monto de las solicitudes  clasificado por producto.

image

Como vamos a mostrar una medida (monto) de negocio que queremos sumarizar, vamos a elegir en el Data Type Activity Workload, y seleccionamos "All Activities", luego definimos qué dimensiones queremos mostrar y qué operación realizaremos sobre la medida al hacer roll up.

Podemos detallar tipo de gráfico, título, colores, bordes, etc.. entrando al tab adecuado.

Creamos un par de dashboards más para analizar el comportamiento de las solicitudes y terminamos nuestra creación, al finalizar el wizard se ha creado un  objeto nuevo en el catálogo representando el dashboard.

Ahora debemos hacer disponible el dashboard al usuario analista, para ello arrastramos una caja de Global Interactive al lane del analista y editamos las propiedades del main task.

image

image

En las propiedades definimos que queremos visualizar un dashboard, seleccionamos verlo en una ventana nueva y el objeto BPM que representa el dashboard, con su presentación.

Ahora vamos a desplegarlo, no olvidemos entrar a las propiedades del motor (clic derecho sobre el proyecto y seleccionar "Engine Preferences"), en el tab BAM activamos la opción de habilitar BAM detallando los tiempos de expiración y frecuencia de actualización.

Subimos el motor y entramos al workspace con el rol de analista para ver los dashboards.

image

Con esto terminamos un pequeño ejemplo de cómo BPM nos facilita la creación de indicadores de negocio basado en datos manejados en los procesos de negocio.

Hasta la próxima.