This will convert the events/streams from an Input Adaptor that supports Map input streams into an event stream that is compatible with the Event Processor.
The event attributes will be extracted using XPath expressions and converted to the type specified in the mapping before being sent to the Event Processor.
Configuring through the Management Console UI
1. Log in to the CEP management console and select the Main menu in the left hand side of the screen. Then select the Add menu item under Event Builder menu.
2. The Create a New Event Builder window opens, using which you can configure new event builders. Enter the following details in the form to create an Map based event builder as shown in the screenshot below.
Supported Mapping Types
The selected transport adaptor must support Map mapping type and 'map' must be selected from the Input Mapping Type drop down for the proper input fields to appear.
The user interface is divided in to 3 main components (From, Mapping and To) and all properties come under a specific section (except the event builder name).
- Event Builder Name - Property that used to uniquely identify a event formatter configuration.
- Input Transport Adaptor - The Input Transport Adaptor which you are going to use to publish the events to the CEP. Only already created Input Transport Adaptors will be listed here. Select the appropriate adaptor by name from the drop down. It is numbered as "1".
- Input Transport Adaptor properties - These properties will be need by the input transport adaptor and will depend on the selected input transport adaptor type. It is numbered as "2". For Input Transport Adaptors that support Map, the following is needed.
- Destination - This will be the topic to which event publishers will publish
- Input Mapping Type - Available options for this field will change based on the input transport adaptor type. Only mapping types supported by a particular transport adaptor will be listed. Select the required mapping type from the list. In the Map mapping case, it will be 'map'. It is numbered as "3"
- Map Input mapping properties
- Enter the Input Attribute Name , Mapped To and To Stream Data Type under 'Properties'
- Click Add to add the individual attribute mapping to the event builder
- To Stream Name - This will be the stream name of the outgoing stream
- To Stream Version - The version of the outgoing stream
3. After adding the relevant details click the Add Event Builder button. The Available Event Builders page will open. To view event builder configurations, click on the event builder name. To delete an event builder, click the Delete button.
Editing Event Builder Configuration through the Management Console
By Clicking the Edit button of the relevant event builder, you will able to edit the event builder configuration and redeploy it. When you click the Edit button, it will redirect to an Map based editor window which will allow you to edit the event builder configuration from UI without opening the configuration file in the file system.
Click Update after editing the configuration to save the changes and redeploy.
Configuring through an XML File
You can specify a event builder configuration through an xml file and deploy it in the deployment directory of the server. Event Formatter deployment directory is available at <CARBON_HOME>/repository/deployment/server/eventbuilders . This is a hot deployment directory, where the event builder will be automatically undeployed and deployed when you save the changes to the file system.
1. Create an XML file and enter the following Map based event builder configurations inside the above mentioned hot deployment directory. Event builder implementation needs to start with "eventbuilder" root element and its default namespace should be set to http://wso2.org/carbon/eventbuilder as in the example below.
<?xml version="1.0" encoding="UTF-8"?> <eventBuilder name="mapbuilder" xmlns="http://wso2.org/carbon/eventbuilder"> <from transportAdaptorName="jmsActiveMqAdaptor" transportAdaptorType="jms"> <property name="transport.jms.Destination">PurchasesUK</property> </from> <mapping type="map" > <property> <from name="cardNo" /> <to name="cardNo" type="string" /> </property> <property> <from name="price" /> <to name="price" type="float" /> </property> </mapping> <to streamName="purchases" version="1.0.0" /> </eventBuilder>