Después de obtener una fábrica de sucesos, puede crear objetos event y llenarlos con datos de propiedades.
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.
(c) Copyright IBM Corporation 2005, 2006.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org)