Creación y llenado de sucesos

Después de obtener una fábrica de sucesos, puede crear objetos event y llenarlos con datos de propiedades.

Por qué y cuándo realizar esta tarea

La especificación de Common Base Event define la mayor parte de las propiedades como opcionales, pero las siguientes propiedades son necesarias:
Nota: La especificación Common Base Event define el atributo version como opcional pero si no se especifica se presupone el valor por omisión 1.0. Debido a que Common Event Infrastructure sólo admite la versión 1.0.1 de la especificación, se debe especificar este valor.

Si intenta enviar un suceso al que le falta cualquiera de estas propiedades, el emisor rechaza el suceso y genera una excepción EventsException.

El siguiente fragmento de código crea un suceso y lo rellena con los datos de propiedades mínimos necesarios:

CommonBaseEvent event = eventFactory.createCommonBaseEvent();

event.setVersion("1.0.1");                     // set version

long currentTime = System.currentTimeMillis(); // get current time
event.setCreationTimeAsLong(currentTime);      // and set creationTime

// set sourceComponentId (a complex type)
event.setSourceComponentId("Windows",          // application
                           "svchost.exe",      // component
                           "tlntsvr.exe",      // subcomponent
                           "http://www.ibm.com/namespaces/autonomic/Windows",
                                               // componentType
                           "win386_svc",       // componentIdType
                           "9.45.72.138",      // location
                           "IPV4"              // locationType
                           );

// create situation object
Situation situation = eventFactory.createSituation();

// set situationType to AvailableSituation (a complex type)
situation.setAvailableSituation("EXTERNAL",          // reasoningScope
                                "NOT AVAILABLE",     // availabilityDisposition
                                "STARTABLE",         // operationDisposition
                                "FUNCTION_PROCESS"); // processingDisposition

// set situation
event.setSituation(situation);

En este ejemplo primero se utiliza una fábrica de sucesos para crear una nueva instancia de suceso, event. Primero se establece la propiedad version; luego se recupera la hora actual del sistema y se utiliza el método setCreationTimeAsLong(long) para establecer el valor de la propiedad creationTime. Una alternativa es utilizar el método setCreationTime(String), que establece la hora de creación con el formato dateTime de XML (por ejemplo, "2004-07-29T13:12:00-05:00").

La siguiente propiedad necesaria, sourceComponentId, es una propiedad compleja representada por una instancia de ComponentIdentification, que tiene sus propias propiedades. No obstante, no es necesario crear directamente una instancia ni interactuar con este objeto (aunque es posible hacerlo). En su lugar, la sentencia siguiente del ejemplo utiliza un método helper, setSourceComponentId(), para especificar las propiedades anidadas. El método helper utiliza estos valores para crear una instancia de ComponentIdentification que, a continuación, utiliza para establecer el valor de la propiedad sourceComponentId del suceso.

Existen métodos helper similares para establecer otras propiedades complejas (por ejemplo, setMsgDataElement(), addAssociatedEvent y addExtendedDataElement()). Existen muchos métodos de este tipo en diferentes versiones y con signaturas diferentes, que permiten especificar valores de propiedades de formas distintas. Consulte la documentación de la API Javadoc para obtener toda la información sobre estos métodos.

La última propiedad necesaria en el ejemplo, Situation, es otra propiedad compleja. En este caso, se debe crear directamente una instancia del objeto de situación utilizando una fábrica de sucesos. En el ejemplo se utiliza un método helper para establecer la propiedad situationType, el cual es en sí mismo un subelemento complejo.

En una aplicación real, un suceso práctico tiene que incluir más información de la que se muestra en este ejemplo, pero esto es lo mínimo que necesita la especificación Common Base Event y Common Event Infrastructure. Ahora el suceso es válido y se puede enviar a un emisor.


Condiciones de uso |


(c) Copyright IBM Corporation 2005, 2006.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org)