Después de obtener una fábrica de sucesos, puede crear objetos de sucesos y llenarlos con datos de propiedades.
Si intenta enviar un suceso al que le falta alguna de estas propiedades, el emisor rechazará el suceso y emitirá una excepción EventsException.
El fragmento de código siguiente crea un suceso y lo llena con los datos de propiedad mínimos necesarios:
CommonBaseEvent event = eventFactory.createCommonBaseEvent(); event.setVersion("1.0.1"); // establecer versión long currentTime = System.currentTimeMillis(); // obtener hora actual event.setCreationTimeAsLong(currentTime); // y establecer creationTime // establecer sourceComponentId (tipo complejo) event.setSourceComponentId("Windows", // aplicación "svchost.exe", // componente "tlntsvr.exe", // subcomponente "http://www.ibm.com/namespaces/autonomic/Windows", // componentType "win386_svc", // componentIdType "9.45.72.138", // location "IPV4" // locationType ); // crear objeto de situación Situation situation = eventFactory.createSituation(); // establecer situationType en AvailableSituation (tipo complejo) situation.setAvailableSituation("EXTERNAL", // reasoningScope "NOT AVAILABLE", // availabilityDisposition "STARTABLE", // operationDisposition "FUNCTION_PROCESS"); // processingDisposition // establecer situación event.setSituation(situation);
En este ejemplo primero se utiliza la fábrica de sucesos para crear una nueva instancia de suceso, suceso. Primero establece la propiedad version; a continuación, recupera la hora actual del sistema y utiliza el método setCreationTimeAsLong(long) para establecer el valor de la propiedad creationTime. Una alternativa consiste en usar el método setCreationTime(serie), que establece la hora de creación utilizando el formato dateTime de XML (por ejemplo, "2004-07-29T13:12:00-05:00").
La siguiente propiedad necesaria, sourceComponentId, es una propiedad compleja representada mediante una instancia de ComponentIdentification, que a su vez tiene propiedades. Sin embargo, no es necesario crear una instancia directamente o interactuar con este objeto (aunque es posible). En su lugar, la siguiente sentencia del ejemplo utiliza un método de ayuda, setSourceComponentId(), para especificar las propiedades anidadas; el método de ayuda utiliza estos valores para crear una instancia de ComponentIdentification, que se utiliza para establecer el valor de la propiedad sourceComponentId del suceso.
Existen métodos de ayuda similares para establecer otras propiedades complejas (por ejemplo, setMsgDataElement(), addAssociatedEvent y addExtendedDataElement()). Muchos de estos métodos existen en varias versiones con diferentes signaturas, lo que permite especificar valores de propiedades de diferentes maneras. Consulte la documentación de la API Javadoc para obtener información completa sobre estos métodos.
La última propiedad necesaria del ejemplo, Situation, es otra propiedad compleja. En este caso, debe crearse una instancia del objeto de situación directamente utilizando una fábrica de sucesos; a continuación, el ejemplo utiliza un método de ayuda para establecer la propiedad situationType, que a su vez constituye un subelemento complejo.
En una aplicación real, un suceso correcto necesita incluir más información que la que aquí se muestra, pero este es el mínimo que requiere la especificación de suceso básico común y Common Event Infrastructure. El suceso ya es válido y puede enviarse a un emisor.