This section contains information on the following subjects:
This document explains how to develop a new Web Service endpoint to consume the events that are emitted by the Event Manager and also explains how to extend the Event Manager to use other notifier plug-ins.
For information about configuring the Event Manager, see Configuring the ALER Event Manager.
The following figure shows how a Web Service endpoint can be plugged-in to receive the Events emitted by the ALER Event Manager.
Following these steps to create a new Web Service endpoint and start getting events.
eventNotifier.jar
located in the <
aler Webapp path
>/WEB-INF/lib
directory. Here is a snapshot of the WSDL file
This section describes the available operation for a new Web Service endpoint, and how to specify operations in the Event Manager.
The ALER Event Manager supports the following operations.
This operation takes the event object that is defined in the XML schema section as an input and returns the status as the output. The status is defined as string type. Additionally, if the status string starts with Failure, then the Event Manager will throw an exception and will try to re-deliver the event until it succeeds. If not, it will log the response and will deliver the next event unless there is a transport exception.
This operation takes the event data in string form as an input and returns the status as the output. The status is defined as string type. Additionally, if the status string starts with Failure, then the Event Manager will throw an exception and will try to re-deliver the event until it succeeds. If not, it will log the response and will deliver the next event unless there is a transport exception.
This operation takes the event object that is defined in the XML schema section as an input and is defined as a one-way operation.
This operation takes the event data in string form as an input and is defined as a one-way operation.
This operation should be used only if the Process Engine is ALBPM. This operation internally invokes the startSession
operation to start session to authenticate with ALBPM. It will also call discardSession
after the invocation.
The preferred Web Service operation can be selected by configuring the Event Manager's Subscription Manager the following way, as specified in the operationName
element.
<sub:EventSubscriptionData xmlns:sub="http://www.bea.com/infra/events/subscription" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sub:eventSubscription>
<sub:endPoint name="ALBPMEndpoint3">
<sub:host>localhostt>
<sub:port>9000</sub:port>
<sub:uri>fuegoServices/ws/StatusChangeEnpointServiceListener</sub:uri>
<sub:targetNamespace>http://www.bea.com/infra/events</sub:targetNamespace>
<sub:operationName>newEvent</sub:operationName>
<sub:authenticationData>
<sub:basicAuthentication>
<sub:username>admin</sub:username>
<sub:username>admin</sub:username>
</sub:basicAuthentication>
</sub:authenticationData>
</sub:endPoint>
<sub:notifierClass>com.bea.infra.event.notifier.plugin.http.DefaultHTTPEventNotifier </sub:notifierClass>
<sub:expression></sub:expression>
</sub:eventSubscription>
</sub:EventSubscriptionData>
The ALER Event Manager includes a default SOAP/HTTP notifier. A new plug-in can be developed and plugged in if there are additional requirements, as illustrated here.
Follow these steps to make the new plug-in work with the Event Manager.
AbstractEventNotifier
that is bundled with the ALER Event Manager. This class is bundled with the eventNotifier.jar
located in the <
aler Webapp path
>/WEB-INF/lib
directory. The init()
and sendNotification()
methods need to be overridden. Refer to the Javadoc for more information about these methods. The handle()
method passes the event data in an XML Beans format, which can be used to send it to an external Web Service.notifierClass
element as follows:<sub:EventSubscriptionData xmlns:sub="http://www.bea.com/infra/events/subscription" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sub:eventSubscription>
<sub:endPoint name="ALBPMEndpoint3">
<sub:host>localhost</sub:host>
<sub:port>9000</sub:port>
<sub:uri>fuegoServices/ws/StatusChangeEnpointServiceListener</sub:uri>
<sub:targetNamespace>StuatusChangeEndpoint</sub:targetNamespace>
<sub:operationName>newEvent</sub:operationName>
<sub:authenticationData>
<sub:basicAuthentication>
<sub:username>admin</sub:username>
<sub:username>admin</sub:username>
</sub:basicAuthentication>
</sub:authenticationData>
</sub:endPoint>
<sub:notifierClass>com.bea.infra.event.notifier.plugin.http.DefaultHTTPEventNotifier</sub:notifierClass>
<sub:expression>id > 500</sub:expression>
</sub:eventSubscription>
</sub:EventSubscriptionData>
<
aler Webapp path
>/WEB-INF/lib
directory so that it is picked up by the classpath.init()
and handle()
methods of the new notifier plug-in.
It is possible that there may be an endpoint with an Interface or Contract that is not compatible with ALER Event Manager. This is because the tool that is used to develop the endpoint may have restrictions to use the WSDL provided by ALER Event Manager, or there may be other inter-operability issues. The following approach can be used under those circumstances: