Procesamiento de eventos de negocios con WebSphere Business Events, Parte 2: Cómo construir una aplicación de eventos de negocios

La Parte 1 de esta serie le presentó los conceptos y las herramientas clave de WebSphere® Business Events. En la Parte 2, usted aprenderá cómo construir y verificar una aplicación simple de Business Events, la cual podrá aprenderá a integrar con otros productos de IBM en los siguientes artículos de la serie.

Doina Klinger, Software Engineer, IBM Hursley Laboratory

Doina Klinger photoDoina Klinger trabaja como Advisory Software Engineer en el IBM Hursley Software Laboratory. Es desarrolladora de WebSphere Business Events. Antes trabajó como Developer y Development Lead en diversos productos y componentes de WebSphere y, más recientemente, en WebSphere Enterprise Service Bus y WebSphere Integration Developer. Dentro de sus intereses figuran Eclipse y las tecnologías de procesamiento de mensajes y eventos. Doina se unió a IBM en 2000, después de obtener su MSC en Ciencias de la Computación en la Universidad Purdue. Para comunicarse con Doina, escríbale a dklinger@uk.ibm.com.



Xiaoming Zhang, Staff Software Engineer, IBM

Xiaoming Zhang photoXiaoming Zhang es Software Engineer en el IBM Hursley Software Lab. Se dedica a la verificación, el desarrollo y al servicio de nivel 3 para WebSphere MQ, WebSphere Message Broker y WebSphere Business Events. Antes de ingresar a IBM en 1998, Xiaoming era professor de Ciencias de la Computación en la Universidad Brunel del Reino Unido. Terminó su carrera en la Universidad Fudan de China, y obtuvo un Doctorado en la Universidad de Swansea en Gales, Reino Unido. Para comunicarse con Xiaoming escríbale a zhang@uk.ibm.com.



Mark Hiscock, Software Engineer, IBM

Mark Hiscock photoMark Hiscock trabaja en el IBM Hursley Software Lab, donde se dedica a la verificación, el soporte de nivel 3, la comprobación de escenarios y los servicios de laboratorio para WebSphere MQ y WebSphere Message Broker. En la actualidad, Mark es Developer para WebSphere Business Events. En su tiempo libre, disfruta de la práctica de Kung Fu, el ciclismo y ¡los aparatos de moda! Para comunicarse con Mark, escríbale a mark.hiscock@uk.ibm.com.



20-04-2010

Generalidades del escenario

En esta serie, usaremos un escenario de muestra para mostrar cómo funciona Business Events. El escenario exige identificar y responder adecuadamente a patrones de eventos a lo largo del tiempo. Usaremos una versión simplificada de un caso de uso de cumplimiento de una reglamentación de la industria financiera, en la cual debemos detectar acciones especulativas en un sistema de negociación. Para más información sobre el escenario, consulte la Parte 1.

Para hacer una demostración de la integración de Business Events con otros productos IBM, de la cual nos ocuparemos en los siguientes artículos de esta serie, la implementación de muestra genera tres tipos de acciones. El escenario sólo requiere que se informe la acción SpeculativeCustomer (Cliente especulativo). Sin embargo, también generaremos las acciones intermedias, con fines ilustrativos, y para ayudar a la integración.

Notas:

  • La Parte 2 de esta serie supone que usted ya ha leído la Parte 1, y que está familiarizado con los conceptos de Business Events que se describen en ese artículo.
  • Los pasos de este artículo se ejecutaron en un entorno Windows®.

Generalidades del proceso

Para construir la aplicación necesaria para implementar el escenario, usted usará la herramienta WebSphere Business Events Design Data para completar los pasos que se enumeran a continuación. Normalmente, el encargado de llevar a delante estos pasos sería un especialista en TI.

  1. Definir los sistemas de negocios, denominados puntos de contacto, que se deberán integrar. Un punto de contacto es un grupo de definiciones de eventos y acciones relacionadas.
  2. En los puntos de contacto, definir las actividades que inician un proceso entre sistemas (evento) y las actividades (acciones) que se realizan cuando se identifican los patrones del evento. Por ejemplo, tres eventos Sell (Compra) por parte de un cliente después de eventos Buy (Compra) dentro de un mismo día para el mismo cliente y los mismos títulos valores generan una acción SpeculativeCustomer.
  3. Crear un nivel de objetos de negocios, denominado objetos intermedios, que funciona como un marcador de posición para los datos usados en la evaluación del evento. Todos los datos que entren o salgan del sistema en tiempo de ejecución pasan por los objetos intermedios. Por ejemplo, un objeto intermedio Cliente puede contener campos (Nombre, Dirección, Estado, etc.) cuyos valores se obtienen a partir del evento y puede también incluir información de contacto (Última fecha de pedido, dirección de correo electrónico) cuyos valores se obtienen de una tabla de una base de datos.

A continuación, usted usará la herramienta Business Events Design para recuperar las definiciones creadas en los pasos anteriores y usarlas para definir la lógica del negocio. Por lo general, quien completará estos pasos es un analista de negocios.

  1. Definir conjuntos de interacciones (una colección de bloques de interacción que contiene la lógica del negocio) usados en el tiempo de ejecución por el servidor en tiempo de ejecución de Business Events con el fin de detectar, correlacionar y responder a patrones de eventos simples y complejos.
  2. Definir los filtros usados para especificar en qué condiciones es verdadero un bloque de interacción.

Nota:Las definiciones de todos los componentes de Business Events se almacenan en el mismo repositorio, lo cual brinda un entorno totalmente integrado. Cuando se inicia el servidor en tiempo de ejecución de Business Events, recupera el conjunto de definiciones más recientes del repositorio y compila los conjuntos de interacción, que evalúan los eventos entrantes y generan acciones asociadas.


Construcción de la aplicación

Esta sección describe los pasos que se deberán completar para construir la aplicación de Business Events usando la herramienta Design Data. Usted describirá los eventos y las acciones resultantes, y definirá también los objetos intermedios.

Se deberán completar los siguientes pasos:

  1. Definir un punto de contacto.
  2. Definir eventos y un objeto evento.
  3. Crear acciones y un objeto de acción.
  4. Crear un evento que se genere como resultado de una acción.
  5. Definir un objeto intermedio.
  6. Definir el mapeo entre los campos del objeto intermedio y los campos del evento.
  7. Definir el mapeo entre los campos de la acción y los objetos intermedios.

Paso 1: Definir un punto de contacto

Para definir un punto de contacto, complete los siguientes pasos:

  1. Inicie la herramienta Design Data seleccionando Start => All Programs => IBM WebSphere Business Events 6.1 => Design Data.
  2. Expanda el recuadro Touchpoints (Puntos de contacto) de la izquierda. (Puede colapsar los otros para ahorrar espacio) Con el botón derecho del mouse, haga clic en el recuadro de la izquierda y seleccione Insert Touchpoint (Insertar punto de contacto).
  3. Especifique el Trade System (Sistema de Negociación) como nombre.

Paso 2: Definir eventos

Para definir eventos, complete los siguientes pasos:

  1. Con el botón derecho del mouse, haga clic en el nuevo punto de contacto y seleccione Insert Event => Normal.
  2. Especifique Buy como nombre.
  3. Con el botón derecho del mouse, haga clic en el evento y seleccione Insert Event Object => Blank.
  4. Especifique TradeObject como nombre.
  5. Con el botón derecho del mouse, haga clic en el objeto evento y seleccione Insert Event Object Field (Insertar campo del objeto Evento). Se abrirá el diálogo Insert Field (Insertar campo). Usted usará este diálogo para insertar campos en objetos evento, objetos acción y objetos intermedios.
  6. Especifique CustomerID (ID del cliente) como nombre y seleccione String (Cadena) como tipo de dato, como se muestra en la Figura 1.
    Figura 1. Insertar un campo en un objeto evento
    Insert a field in an event object
  7. Repita el paso 6 para agregar los siguientes campos:
    • StockID (ID de acciones) con un tipo String
    • Date (Fecha) con un tipo DateTime
    • Quantity (Cantidad) con un tipo Real
    • Price (Precio) con un tipo Real
  8. Cree otro evento nuevo, esta vez denominado Sell.
  9. Con el botón derecho del mouse, haga clic en Sell y seleccione Insert Event Object => Shared, luego seleccione TradeObject.

El mismo objeto evento es compartidos por los eventos Buy y Sell.

Paso 3: Crear acciones

Para crear las acciones, complete los siguientes pasos:

  1. Con el botón derecho del mouse, haga clic en el punto de contacto Sistema de negociación y seleccione Insert Action => Normal.
  2. Especifique Buy Ack como nombre.
  3. Con el botón derecho del mouse, haga clic en la nueva acción y seleccione Insert Action Object => Blank.
  4. Especifique TradeOut como nombre.
  5. Con el botón derecho del mouse, haga clic en el objeto de acción TradeOut y seleccione Insert Action Object Field.
  6. En el diálogo Insert Field, que se muestra en la Figura 1, especifique CustomerID como nombre y seleccione String como tipo de dato. Repita este procedimiento con los siguientes nombres y tipos de campos:
    • StockID con un tipo String
    • Key (Clave) con un tipo String
    • Date con un tipo DateTime
    • Quantity con un tipo Real
    • Price con un tipo Real

    Nota: Business Events requiere a cada uno de los eventos definidos la activación de una acción por medio de un conjunto de interacción. La acción Buy Ack (Reconocimiento de compra) que usted acaba de crear cumple con este requerimiento para el evento Buy. Más tarde, usted definirá un conjunto de interacción, que ilustrará la política más sencilla de un evento que genera una acción sin filtro o sin demora.

    En la Figura 2, usted verá la herramienta Design Data, que muestra algunos detalles de la acción creada Buy Ack, incluyendo su objeto de acción TradeOut y los campos de miembros del objeto de acción, como por ejemplo CustomerID, a la derecha.

    Figura 2. Acción y objeto de acción
    Act and action object
  7. Cree una nueva acción denominada SellAfterBuy repitiendo el proceso anterior.
  8. Con el botón derecho del mouse, haga clic en la nueva acción SellAfterBuy y seleccione Insert Action Object => Shared, luego seleccione TradeOut.
  9. Repita los pasos 1 y 8 para crear la acción Speculative Customer, que también usa el objeto de acción compartido TradeOut.

Paso 4: Crear un evento

A continuación, crearemos un evento sintético, que permitirá a Business Events advertir las ocurrencias repetidas de SellAfterBuy y enviar una acción SpeculativeCustomer. Para hacerlo, complete los siguientes pasos:

  1. Cree un evento normal denominado SellAfterBuySynEvent.
  2. Con el botón derecho del mouse, haga clic en el evento y seleccione Insert Action => To Fire This Event Synthetically. Acepte el mensaje de advertencia que se mostrará. Ahora, el evento se denominará SellAfterBuySynEvent <- SellAfterBuySynEvent, y se creará automáticamente una acción SellAfterBuySynEvent.
  3. Con el botón derecho del mouse, haga clic en SellAfterBuySynEvent y seleccione Rename. Dé un nuevo nombre al evento SellAfterBuySynAction. Una buena práctica consiste en evitar tener el sufijo Event en un nombre de acción. Al dar un nuevo nombre a la acción, el evento sintético recibirá el nuevo nombre de SellAfterBuySynEvent <- SellAfterBuySynAction.

Paso 5: Definir un objeto intermedio

El paso siguiente consiste en definir el objeto intermedio. La aplicación de muestra usa un único objeto intermedio. Para definir el objeto intermedio, complete los siguientes pasos:

  1. Expanda el recuadro Intermediate Objects de la herramienta Design Data, y luego con el botón derecho del mouse, haga clic en el recuadro y seleccione Insert Intermediate Object => Blank.
  2. Especifique TradeObject como nombre.
  3. Con el botón derecho del mouse, haga clic en el nuevo objeto y seleccione Insert Intermediate Object Field. En el diálogo Insert Field, especifique CustomerID como nombre y seleccione String como tipo de dato. Repita este procedimiento para los siguientes nombres y tipos de campos:
    • StockID con un tipo String
    • Date con un tipo DateTime
    • Quantity con un tipo Real
    • Price con un tipo Real
    • Key con un tipo String
  4. Arrastre y suelte el objeto intermedio TradeObject desde la sección Intermediate Objects hasta el evento SellAfterBuySynEvent <- SellAfterBuySynAction.
  5. Arrastre y suelte TradeObject desde la sección Intermediate Objects hasta la acción SellAfterBuySynAction. La Figura 3 muestra los detalles de los recientemente creados evento sintético y acción sintética.
    Figura 3. Evento sintético
    A synthetic event

Paso 6: Definir el mapeo desde los objetos evento hasta los objetos intermedios

A continuación usted deberá especificar de qué manera cada uno de los campos del objeto evento se mapea a los campos del objeto intermedio. Este mapeo es necesario para todos los eventos, incluyendo los eventos derivados. La mayoría de los campos se completan directamente a partir de los atributos de los eventos Buy y Sell. El campo Key del objeto intermedio se calcula con un JavaScript™.

Usted puede realizar el mapeo con acciones de arrastrar y soltar desde el origen hasta el objetivo. Sin embargo, aquí describiremos cómo realizar el mapeo con selecciones explícitas:

  1. Expanda el nodo del árbol de eventos Buy, con el botón derecho del mouse haga clic en TradeObject y seleccione Insert Field Constructor From Object => Trade Object => Customer ID (Insertar constructor de campo desde objeto => objeto de negociación => ID de Cliente), como se muestra en la Figura 4.
    Figura 4. Agregado de constructores de campos para el objeto intermedio
    Add field constructors for the intermediate object
  2. Repita el paso anterior para insertar constructores de campo para StockID, Date, Price y Quantity. No mapee el campo Key. Esto especifica los campos del objeto intermedio que se construye a partir de los campos del evento.

    Nota: La herramienta le muestra entre corchetes los objetos intermedios que se crean para cada evento, como se muestra en la Figura 5.

    Figura 5. Objetos intermedios y campos creados a partir de los eventos
    Intermediate objects and fields created from events
  3. Sobre el lado derecho de la vista Touchpoints, expanda Buy => TradeObject => CustomerID y seleccione Field en la sección Definition (Definición) del editor.
  4. Haga clic en Insert object field (Insertar campo de objeto) y seleccione CustomerID de la lista de campos de eventos, como se muestra en la Figura 6.
    Figura 6. Establecimiento del campo del objeto intermedio a partir del campo del evento
    Set intermediate object field from event field
  5. Repita los dos pasos anteriores para insertar los campos correspondientes en Date, Price, Quantity y StockID. De esta manera se especifican todos los campos del objeto intermedio que se construyen a partir de los campos del evento.

    Nota: En este ejemplo, los nombres de los campos son iguales para el objeto evento y el objeto intermedio, pero esto no es necesario.

    Debido a que los eventos Buy y Sell comparten un objeto evento, ambos eventos provocan la creación de un objeto intermedio TradeObject, como se muestra en la Figura 7:

    Figura 7. Múltiples eventos crean el mismo objeto intermedio
    Multiple events create single intermediate object
  6. Defina el campo Key con una expresión JavaScript como se muestra a continuación:
    1. Expanda el campo Key en el recuadro Intermediate Objects.
    2. En la sección Definition, seleccione JavaScript como Type e ingrese la expresión CustomerID +""+StockID, como se muestra en la Figura 8:
      Figura 8. Definición del campo Key en JavaScript
      Define the Key field in JavaScript

      Nota: La herramienta Design Data no valida las expresiones de JavaScript. Por ende, usted deberá asegurarse de que la expresión que ingrese sea una expresión de JavaScript válida. En http://localhost:9080/wbe/tools/test_javascript.html se encuentra disponible una herramienta de prueba de JavaScript, que usted puede utilizar para ayudar a validar su expresión de JavaScript.

Paso 7: Definir el mapeo desde los objetos intermedios a las acciones

A continuación, usted deberá definir cómo se construyen las acciones desde los objetos intermedios y el mapeo desde los campos del objeto intermedio hasta los campos de la acción.

  1. En el recuadro Touchpoints, seleccione Buy Ack => TradeOut.
  2. Sobre el lado derecho, expanda StockID, como se muestra en la Figura 9.
    Figura 9. Mapeo de campos del objeto de acción
    Map action object fields
  3. En la sección Definition de la acción, seleccione Field como el Type, seleccione Insert object field, y luego TradeObject.StockID para la lista de campos.
  4. Repita el paso anterior para CustomerID, Key, Date, Quantity y Price. Para cada uno de ellos, agregue el campo del objeto intermedio asociado con el prefijo TradeObject.
  5. Guarde el proyecto seleccionando File => Save Project. Denomine el proyecto como Trading.xml y salga de la herramienta Design Data.

    Nota: Asegúrese de guardar las definiciones de Design Data y cierre esta herramienta antes de abrir la herramienta Design para definir la lógica del negocio.


Definición de la lógica del negocio

Esta sección describe los pasos que usted debe completar para definir la lógica del negocio con la herramienta Design. Por lo general, estos pasos los lleva a cabo un analista de negocios.

  1. Abrir el archivo Trading.xml.
  2. Crear dos filtros.
  3. Definir tres conjuntos de interacción.

Nota: Debido a que la herramienta Design Data y la herramienta Design usan el mismo archivo, se recomienda cerrar una de las herramientas antes de abrir la otra.

Paso 1: iniciar la herramienta Design y abrir Trading.xml

Para ponerse en marcha, complete los siguientes pasos:

  1. Seleccione Start => All Programs => WebSphere Business Events v6.1 => Design para iniciar la herramienta Design.
  2. Abra el proyecto seleccionando File => Open y especifique Trading.xml. Se visualizarán los objetos que usted definió en la herramienta Design Data, sin que usted los pueda modificar.

Paso 2: Crear un filtro After Buy (Después de Comprar)

El primer filtro que usted debe crear es un filtro After Buy que verifica si el evento al cual se aplica se produce dentro de la primera hora de un evento Buy. Usted aplicará este filtro a un evento Sell. Para crear el filtro After Buy, complete los siguientes pasos:

  1. Oprima el botón Filter de la barra de herramientas (o seleccione Create => Filter en el menú), para crear una plantilla de filtro en el editor.
  2. Especifique After Buy Filter como nombre y luego seleccione operator?. Se visualizará una lista de los operadores disponibles. En la carpeta ContextOperator seleccione Follows Within, como se muestra en la Figura 10.
    Figura 10. Creación del primer filtro
    Create the first filter

    La plantilla del filtro se actualiza para mostrar al operador seleccionado y a sus argumentos.

  3. A continuación, haga clic en el primer operand?, y luego elija Select an event (Seleccionar un evento).
  4. Se visualizará una lista con todos los eventos definidos en el proyecto, como se muestra en la Figura 11. Seleccione Buy.
    Figura 11. Selección del argumento del evento para la función del flujo
    Select the event argument
  5. Haga clic en el segundo operand? (después de Within), (ver Figura 11), y seleccione Enter text (Ingresar texto).
  6. En el diálogo resultante, especifique 1 para el día y haga clic en OK.

    En este momento, la apariencia del filtro deberá ser como la de la Figura 12.

    Figura 12. Filtro After Buy
    After Buy filter

El filtro que usted ha creado será usado por el conjunto de interacción Sell After Buy (que usted definirá en breve) que identificará cuándo se ha producido un evento Sell después de un evento Buy para los mismos títulos valores y el mismo cliente.

Con este filtro simple y legible será suficiente. El único problema que tiene es la organización de los eventos por pares. Por ejemplo, digamos que un evento Buy está seguido por tres eventos Sell, todos ellos para el mismo cliente y los mismos títulos valores dentro del mismo día. Con el filtro tal como está definido, los tres eventos Sell pasarán por el filtro After Buy, lo cual provocará la generación de tres acciones SellAfterBuy. Sin embargo, lo que usted desea es contar con una situación detectada para cada par de eventos de compra y venta.

Para lograrlo, usted deberá actualizar el filtro aún más. Deberá agregar una condición que establece que un evento pasa por el filtro si se produce a continuación de un evento Buy dentro de un mismo día siempre y cuando existiera un evento Buy después de la última acción SellAfterBuy. El segundo y el tercer evento Sell de la secuencia anteriormente descripta no podrían entonces pasar por el filtro, que es lo que usted desea. Para agregar esta condición al filtro, complete los siguientes pasos:

  1. Haga clic en el ícono del filtro del Segundo renglón y seleccione Add a filter condition (Agregar una condición al filtro), como se muestra en la Figura 13.
    Figura 13. Agregar una condición al filtro
    Add a filter condition
    Se agregará una nueva condición a la plantilla con un operador AND que conecta a ambas condiciones.
  2. Ahora usted debe completar los argumentos para la segunda condición del filtro. Haga clic en el ícono que aparece a continuación del primer operand? y elija Select a Predefined Function (Seleccionar una función predefinida), luego seleccione ContextFunction => Event or Action Occurs, como se muestra en la Figura 14.
    Figura 14. Seleccionar Event or Action Occurs
    Select Event or Action Occurs
  3. El filtro cambia para mostrar las Occurrences of (Ocurrencias de) la función. Haga clic en el operand? para Occurrences Of, luego elija Select an event, y más tarde SellAfterBuy.
  4. Haga clic en operator? y en la lista de NumericOperators (Operadores numéricos) seleccione Is, como se muestra en la Figura 15.
    Figura 15. Seleccionar el operador numérico
    Select the numeric operator
  5. Haga clic en el otro operand?, seleccione Enter Text e ingrese 0. El filtro tendrá ahora la apariencia del de la Figura 16.
    Figura 16. Filtro After Buy con la primera condición ramificada
    The After Buy filter with the first branch condition

Observe los distintos símbolos de la definición del filtro para eventosevents symboly para accionesactions symbol.

El filtro está prácticamente complete. Devolverá un valor verdadero para un evento cuando:

  • El evento sigue a un evento Buy dentro de un mismo día.
  • No se han producido acciones SellAfterBuy.

Para organizar los eventos Buy y Sell en pares, usted deberá agregar otra condición al filtro para verificar que el último evento Buy se ha producido después de la última acción SellAfterBuy. De esta manera se asegura que ningún evento Buy se acople a múltiples eventos Sell, lo cual ocasionaría acciones SellAfterBuy repetidas. Para agregar esta condición, complete los siguientes pasos:

  1. Haga clic en la segunda condición del filtro (el ícono que aparece a la derecha del primer corchete, como se muestra en la Figura 17), y seleccione Branch this filter condition (Ramificar esta condición del filtro).
    Figura 17. Ramificación de una condición del filtro
    Branch a filter condition
  2. En la ramificación resultante, seleccione And y reemplácela por Or, como se muestra en la Figura 18.
    Figura 18. Modificación del operador booleano que vincula las condiciones del filtro
    Modify the boolean operator
  3. Haga clic en el símbolo que aparece después del primer operand?, elija Select a predefined function, luego DateTimeFunction, y más tarde Last Occurrence Of. como se muestra en la Figura 19.
    Figura 19. Selección de una función DateTime
    Select a DateTime function
  4. Haga clic en operand? y elija Select an Event, luego seleccione Buy.
  5. Haga clic en el primero de los dos campos operator? restantes, y seleccione is After DateTime en la lista resultante.
  6. Haga clic en el último operand? que queda, elija Select a Predefined Function, y seleccione Last Occurrence Of.
  7. Elija Select an action y seleccione SellAfterBuy. La Figura 20 muestra el filtro final:
    Figura 20. Filtro After Buy: definición completa
    After Buy filter - complete definition

Paso 3: Crear un filtro Speculative Customer

Ahora, usted deberá crear un filtro Speculative Customer (Cliente especulativo). Este filtro evaluará como verdadero cuando se produzcan tres ocurrencias de SellAfterBuySynEvent dentro de un mismo día.

El filtro complete usa la función Occurrences of This Event Within (Ocurrencias de este evento dentro de). Esta función no cuenta la instancia actual del evento. Por ende, para la tercera ocurrencia de este evento, la cantidad de ocurrencias previas es dos. Usted deberá agregar una para compensar este comportamiento.

Para que este filtro dé como resultado verdadero cada tres eventos, usaremos el hecho de que el resultado de la función es un número entero, y podremos usar las funciones de división de números enteros de Business Events div y mod. Por ejemplo, para un número n: (n div 3 ) X 3 = n si y sólo si n es múltiplo de 3.

El filtro evalúa como verdadero si y sólo si el número de ocurrencias totales (incluyendo la actual) es múltiplo de 3. La Figura 21 muestra la apariencia del filtro completo:

Figura 21. Filtro Speculative Customer
Speculative Customer filter

Para crear el filtro Speculative Customer, complete los siguientes pasos:

  1. Oprima el botón Filter de la caja de herramientas, e ingrese Speculative Customer como nombre de la plantilla.
  2. En primer lugar, construiremos la ruta correcta para el filtro, comenzando por el operador Is.
    1. Haga clic en operator? y seleccione NumericOperator =>Is. Luego haga clic en el ícono qua aparece a la derecha del segundo operand? y elija Select a Predefined Function => NumericFunction => Plus.
    2. Haga clic en el ícono que aparece a la derecha del último operand?, seleccione Enter text, y luego ingrese 1.
    3. Haga clic en el ícono que aparece a la derecha del operand? antes de Plus y elija Select a Predefined Function => ContextFunction => This Event Occurs Within.
    4. Complete el operando presionando sobre el ícono que aparece a continuación de operand? seleccione Enter text, y luego 1 para el día. El filtro tundra ahora la apariencia del de la Figura 22.
      Figura 22. Filtro Speculative Customer: parcialmente completo
      Speculative Customer filter - partially complete
  3. Para el lado izquierdo del filtro, aplicaremos un enfoque similar. Construiremos esta parte del filtro de derecha a izquierda: seleccione una función predeterminada del menú para el operando, complete el operando del lado izquierdo ingresando el texto y repita el proceso para el operando del lado izquierdo hasta que el filtro esté completo, de la siguiente manera:
    1. Haga clic en el ícono que aparece a la derecha de operand? y elija Select a Predefined Function => NumericFunction => multiplied By.
    2. Haga clic en el operand? de la derecha, seleccione Enter text e ingrese 3.
    3. Haga clic en el ícono operand? de la izquierda y seleccione Select a Predefined Function => NumericFunction => Divided by.
    4. Haga clic en el operand? de la izquierda, seleccione Enter text e ingrese 3.
    5. Haga clic en el ícono que aparece a continuación del operand? de la izquierda, luego seleccione Select a Predefined Function => NumericFunction => Plus.
    6. Haga clic en el operando y seleccione Enter text, luego ingrese 1.
    7. Por último, seleccione Occurrences of this Event (Ocurrencias de este evento).

Ahora, el filtro Speculative Customer está completo.

Paso 4: Crear conjuntos de interacción

En este momento, usted debe crear los siguientes conjuntos de interacción, que usarán los filtros que usted ha creado para tomar decisiones de negocios:

  • La regla de Reconocimiento de Compra establece que, ante el recibo de un evento Buy, siempre se generará una acción Buy Acknowledgment.
  • La regla Sell After Buy (Vender después de comprar) establece que cuando ingresa un evento Sell y se cumple con las condiciones del filtro After Buy (es decir, el evento Sell llega dentro de la hora posterior a un evento Buy para el mismo cliente y los mismos títulos valores), se genera una acción SellAfterBuy. Esta política está agrupada por la clave TradeObject.key, que consiste en la concatenación del ID de Cliente y el ID de Título Valor.
  • La regla de Cliente Especulativo establece que cuando llega un evento Sell After Buy que se verifica en el filtro Speculative Customer (es decir, se produjeron más de dos ocurrencias de este evento para el mismo cliente dentro de 24 horas), se genera la acción correspondiente. Esta política está relacionada por el ID de Cliente.

Usted creará los conjuntos de interacción que se muestra en la Figura 23:

Figura 23. Conjuntos de interacción
Interaction sets

Para construir el primer conjunto de interacción, complete los siguientes pasos:

  1. Haga clic en Interaction Set (Conjunto de interacción) en la herramienta Design (o seleccione Create => Interaction Set en el menú).
  2. Se creará una plantilla del bloque de interacción. Ingrese Buy Acknowledgment como nombre.
  3. Haga clic en event? para el campo In response to (En respuesta a), y seleccione Buy. De esta manera se completa la parteAlways (Siempre) de la política.
  4. Haga clic en action? y seleccione Buy Ack.
  5. Presione el botón izquierdo del mouse en cualquier parte del área que aparece a continuación del nombre del conjunto de interacción (Buy Acknowledgment), y seleccione Define context relationship (Definir relación contextual) en el menú.
  6. SeleccioneTradeObject.Keypara el ID del contexto, como se muestra en la Figura 24).
    Figura 24. Definición de una relación contextual
    Define a context relationship

En todo el conjunto de interacción Buy acknowledgement no se necesita una relación contextual, el recuento de eventos de compra y venta se realiza por cliente y título valor, por lo cual la regla debe tener un ID de contexto.

Para construir un segundo conjunto de interacción, complete los siguientes pasos:

  1. Como lo hizo anteriormente, cree un nuevo conjunto de interacción con el nombre Sell After Buy.
  2. Para el evento de respuesta, seleccione Sell.
  3. Presione el botón izquierdo del mouse en cualquier parte del área que aparece a continuación del nombre de la política y seleccione Define context relationship en el menú.
  4. Seleccione TradeObject.Key como ID de flujo.
  5. A continuación, agregue una condición de filtro a la política. Haga clic en el ícono del filtro que aparece al principio del segundo renglón y seleccione Add a filter (Agregar un filtro), como se muestra en la Figura 25.
    Figura 25. Agregado de un filtro a una política
    Add a filter to a policy
  6. Para el operador Where (Donde), seleccione After Buy en la lista de filtros disponibles.
  7. Para Always, seleccione Sell After Buy en la lista de acciones.
  8. Con el botón derecho del mouse, haga clic en el espacio de la acción (casillero que empieza con Always) y seleccione Add an action (Agregar una acción), luego seleccione el evento sintético SellAfterBuySynEvent.

En este momento, usted está listo para construir el último conjunto de interacción. Los pasos que definen este conjunto de interacción son idénticos a los de la política Sell After Buy:

  1. Creun nuevo conjunto de interacción con el nombre Speculative Customer.
  2. Selecione SellAfterBuySynEvent como el evento de respuesta ante el cual se ejecutará la política.
  3. Defina una relación contextual con TradeObject.CustomerID como clave presionando con el botón derecho del mouse al lado del nombre del conjunto de interacción y seleccionando la relación contextual deseada.
  4. Con el botón derecho del mouse, haga clic en el conjunto de interacción y seleccione Add a filter => Speculative Customer.
  5. Seleccione la acción que se deberá ejecutar si el filtro evalúa como verdadero, en este caso, Speculative Customer.

La aplicación de WebSphere Business Events está ahora completa. Guarde el proyecto y salga de la herramienta Design.


Cómo implementar y ejecutar la aplicación

Para implementar y ejecutar la aplicación de Business Events que usted ha construido, deberá completar los siguientes pasos:

  1. Especificar la información de conectores para eventos y acciones. Esto se incluye en la implementación debido a que se trata de información que se deberá modificar en las subsiguientes partes de la serie para poder realizar la integración con otros productos IBM.
  2. Iniciar el tiempo de ejecución de Business Events en WebSphere Application Server, si no se ha iniciado ya.
  3. Implementar la aplicación de Business Events para el tiempo de ejecución.
  4. Activar el historial.
  5. Reiniciar el tiempo de ejecución de Business Events.
  6. Iniciar el proceso de conectores.

Paso 1: Especificar la información de conectores

Antes de verificar la aplicación de Business Events, usted deberá especificar la información de conectores para todos los eventos y todas las acciones. Para simplificar la tarea, puede usar el File System Connector para esto.

  1. Inicie la herramienta Design Data y abra el proyecto.
  2. Expanda Touchpoints y seleccione Buy.
  3. Presione con el botón derecho del mouse y seleccione Event Properties (Propiedades del evento).
  4. En la pestaña Connection (Conexión), haga clic en File System Connection (Conexión del sistema de archivos), como se muestra en la Figura 26.
  5. En el diálogo File Event Connection, seleccione Connector Packet (Paquete conector) como Format (Formato), como se muestra en la Figura 26.
  6. Seleccione 1 para Contact frequency (in minutes) (Frecuencia de contacto [en minutos]), y haga clic en Configure, como se muestra en la Figura 26.
  7. En el diálogo del Server, especifique la ubicación del directorio donde colocará los archivos del evento, por ejemplo, C:\Business Events\test\Buy y *.xml para el File Pattern (Patrón de archivo), como se muestra en la Figura 26. Asegúrese de que la carpeta que usted ha seleccionado exista en el sistema de archivos.
  8. Repita estos pasos para el evento Sell, especificando Connector Packet como formato, la frecuencia de contacto en 1 minuto, y C:\WBE\test\Sell como directorio.

    Nota: No es necesario seguir estos pasos para el evento SellAfterBuySynEvent <- SellAfterBuySynAction debido a que este evento es generado internamente por el mismo Business Events.

    Figura 26. Configuración de la información de conectores del archivo para los eventos Buy y Sell
    Configure file connector information

Ahora, usted debe seguir pasos similares de configuración para las acciones:

  1. Con el botón derecho del mouse, haga clic en Buy Ack, y seleccione Action properties (Propiedades de la acción).
  2. En la pestaña Connection del diálogo Action Properties, seleccione File System Connector.
  3. Configure la sección del servidor con un directorio diferente del asociado con los eventos Buy y Sell. Por ejemplo c:\WBE\testactions. Aquí, Business Events colocará los resultados de las acciones generadas. Asegúrese de que la carpeta que usted especificó exista en su sistema de archivos.
  4. Especifique un patron de archivos que sea único para esta acción. Por ejemplo Buy*.xml. La especificación de un patrón de nombre diferente para cada tipo de acción facilita la visualización del resultado de Business Events.
  5. Repita estos pasos para SellAfterBuy y SpeculativeCustomer, usando la misma ruta de archivos (por ejemplo, c:\WBE\testactions), pero un patrón de archivos diferente, como por ejemplo sell*.xml y spec*.xml.
  6. Guarde el proyecto.

Paso 2: Iniciar el tiempo de ejecución de Business Events

Para iniciar el tiempo de ejecución de Business Events, complete los siguientes pasos:

  1. Seleccione Start => IBM WebSphere => Application Server Network Deployment => Profiles => AppSrvr01 => Start Server.
  2. Abra la consola de administración de WebSphere Application Server en un navegador de Internet, y conéctese a la misma. Por ejemplo, http://localhost:9060/ibm/console con un nombre de usuario de administrador.
  3. En la consola, asegúrese de que se inicie la aplicación WBERuntime, como se muestra en la Figura 27.
    Figura 27. Asegúrese de que Business Events funcione en la consola
    Make sure Business Events is running
  4. Asegúrese de que el administrador de bases de datos se ha iniciado. Si usted está usando Derby, invoque startNetworkServer.bat desde <WBE Install>\WAS\derby\bin\networkServer.

Paso 3: Implementar la aplicación Business Events para el tiempo de ejecución

Para implementar la aplicación Business Events para el tiempo de ejecución, complete los siguientes pasos:

  1. En la herramienta Design Data, seleccione Tools => Repositories, y haga clic en Login (Iniciar sesión).
  2. Especifique un nombre de usuario y una contraseña.
  3. Quizás sea necesario especificar un número de Puerto diferente (que no sea 9080) si la versión de WebSphere Application Server que usted está usando no usa el número de puerto predeterminado.
  4. Presione Ctrl+A para seleccionar todos los elementos de la lista de artefactos de la pestaña Project del diálogo del Repositorio, luego haga clic en Add in, como se muestra en la Figura 28. De este modo, se agregan todos los elementos al repositorio. Observe que es posible que se le pidan nuevamente su nombre de usuario y su contraseña.
    Figura 28. Vista del repositorio
    Repository view
  5. Haga clic en Close (Cerrar) y salga de la herramienta Design Data. No olvide guardar el proyecto.

Paso 4: Activar historial

Ahora que el proyecto está implementado, usted puede activar la característica historial de Business Events. Esto permite que el tiempo de ejecución de Business Events lleve un registro de los eventos, las acciones, los filtros y los conjuntos de interacción para que usted pueda revisar qué sucede en Business Events cuando usted envía eventos.

  1. Seleccione Start => IBM WebSphere Business Events v6.1 => Events => Properties.
  2. Especifique wbe para el nombre de usuario y la contraseña, luego haga clic en Next, y después nuevamente Next.
  3. En el diálogo Server Settings (Configuraciones del servidor), cambie Enable history (Activar historial) de falso a verdadero.
  4. Haga clic en Save and exit (Guardar y salir).

Paso 5: Reiniciar el tiempo de ejecución de Business Events

Repita los pasos del Paso 2 para reiniciar el tiempo de ejecución de Business Events.

Paso 6: Iniciar el proceso de conectores

Para iniciar el proceso de conectores, ejecute connector.bat (or .sh) desde <WBE_install> \director\bin.


Verificación de la aplicación

Veamos ahora los eventos Buy y Sell de Business Events y verifiquemos que se pueden generar las acciones.

  1. Copie y pegue el evento de muestra Buy que se muestra a continuación y guárdelo como Buy_event.xml. Asegúrese de que el nombre del archivo corresponda al patrón del conector de archivos de Buy*.xml.
    <connector name="Trade System"
    version="2.2"> <connector-bundle name="Buy"
    type="event"> <connector-object name="TradeObject">
    <field name="CustomerID" type="String">Jamie
    Danny</field> <field name="StockID"
    type="String">IBM</field> <field name="Date"
    type="DateTime">2008-06-04T10:04:41Z</field>
    <field name="Quantity" type="Real">10</field>
    <field name="Price" type="Real">150</field>
    </connector-object> </connector-bundle>
    <system>TISMANA</system>
    <timestamp>2008-06-04T10:04:41Z</timestamp>
    <loginfo>Test values from WebSphere Business Events:Design
    Data</loginfo> </connector>
  2. Copie y pegue el evento de muestra Sell que aparece a continuación en un archivo y guárdelo como sell_event.xml. Nuevamente, aseúrese de que el nombre del archivo corresponda al patrón de conectores de archivos de Sell*.xml.
    <connector name="Trade
    System" version="2.2"> <connector-bundle name="Sell"
    type="event"> <connector-object name="TradeObject">
    <field name="CustomerID" type="String">Jamie
    Danny</field> <field name="StockID"
    type="String">IBM</field> <field name="Date"
    type="DateTime">2008-06-04T10:07:15Z</field>
    <field name="Quantity" type="Real">9</field>
    <field name="Price" type="Real">150</field>
    </connector-object> </connector-bundle>
    <system>TISMANA</system>
    <timestamp>2008-06-04T10:07:15Z</timestamp>
    <loginfo>Test values from WebSphere Business Events:Design
    Data</loginfo> </connector>
  3. Copie el archivo del evento Buy en la ubicación especificada en el conector de archivos, por ejemplo, c:\WBE\test\Buy.
  4. Espere un minuto (intervalo de transmisión secuencial especificado en las propiedades del conector). En este momento, deberá desaparecer el archivo del evento y se deberá generar una acción Buy Ack en el directorio especificado en el conector de acciones (por ejemplo, c:\WBE\testactions).
  5. A continuación, envíe un evento Sell para el mismo cliente y los mismos títulos valores. Se deberá generar una acción Sell After Buy.
  6. Envíe los eventos adicionales Buy y Sell a Business Events para que se genere la acción Speculative Customer.

La Figura 29 muestra un ejemplo de resultado de c:\WBE\testactions con los archivos de acción generados a partir de la verificación.

Figura 29. Ejemplo de resultado de Business Events con el conector de archivos
Ejemplo de resultado de Business Events con el conector de archivos

Nota:usted también puede enviar eventos directamente a Business Events usando la herramienta cmdline ubicada en <WBE_install>\director\bin. Para usar esta herramienta, ejecute el siguiente comando: cmdline <Event file>.xml Por ejemplo, usted podría usar este comando para enviar un evento Buy a Business Events: cmdline c:\temp\Buy_event.xml.

Nota: Si usted ve el siguiente mensaje repetido muchas veces en la ventana de los conectores:

FS Sending event: Sell
FS Sending event: Sell
.…

y no observa la acción de resultado esperada, asegúrese de haber completado correctamente el paso 5 de la sección Especificar la información de conectores. El formato del Conector debe estar fijado en el paquete de conectores para que el evento se active de manera adecuada.

Visualización de informes con el monitor de Business Events

Usted también puede usar el monitor de Business Events para ver qué sucedió en Business Events cuando se procesaron los eventos. Esto fue posible cuando usted activó history. para poder usar el monitor de Business Events para visualizar informes, complete los siguientes pasos:

  1. Ingrese la siguiente URL en un navegador: http://localhost:9080 /wbe/common/login.jsp. Asegúrese de usar el número de Puerto correcto para su Servidor de Aplicaciones
  2. Ingrese el nombre de usuario y la contraseña y seleccione Administrator en la lista de Tool (Herramienta), luego haga clic en Login.
  3. Haga clic en el ícono Reports (Informes) que aparece en la parte superior del panel de control.
  4. Seleccione Actions by Touchpoint by time (Acciones por punto de contacto por tiempo) como Report Type (Tipo de informe).
  5. Haga clic en el ícono Generate Report (Generar informe) para ejecutar el informe. El informe se visualizará en una ventana independiente, como se muestra en la Figura 30. Después de visualizar la lista de acciones, cierre la ventana.
    Figura 30. Ejemplo de resultado del monitor de Business Events
    Sample output in Business Events monitor

Al elegir distintos tipos de informes en la vista Reports, usted podrá visualizar los eventos, los filtros, las políticas, los flujos y los objetos intermedios que usó WebSphere Business Events durante su ejecución.


Resumen

Usted ha aprendido cómo se construye y ejecuta una aplicación de Business Events. En los restantes artículos de esta serie, usaremos el escenario de ejemplo y esta aplicación para ilustrar cómo otros productos IBM pueden proporcionar eventos a Business Events y consumir sus acciones.


Agradecimientos

Los autores quieren agradecer a Eric Erpenbach y a James Taylor por sus comentarios y el feedback que recibieron para este artículo.


Descargar

DescripciónNombretamaño
XML fileTradingSystem.zip3KB

Recursos

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=WebSphere
ArticleID=484397
ArticleTitle=Procesamiento de eventos de negocios con WebSphere Business Events, Parte 2: Cómo construir una aplicación de eventos de negocios
publish-date=04202010