Download presentation
Presentation is loading. Please wait.
Published byOpal Matthews Modified over 8 years ago
1
Real world scenarios with the WSO2 ESB
2
Three real world scenarios in some detail 1. XML transformation and message augmentation 2. Financial services case – reading legacy files and integrating with JMS 3. The PushMePullYou – using polling to integrate two services
3
XML Transformation of messages with Database augmentation This example illustrates how a database table lookup can be used to augment and transform the message payload, using XSLT transformations Objective
5
Configure the external database access Specify SQL and map parameters, and results Transform using XSLT
9
Scenario – Financial Security blocking Database legacy flat file NEW YORK Existing System WSO2 ESB Poll Record->XML XML->XML Send LONDON WSO2 ESB Split/Iterate DBLookup/Filter Transform to MQ Send Existing System XML/JMS
10
Overall ESB flow FileSystemListener NY Sequence Log Out-Only Flatpack E4X Send to London LondonEndpoint LondonSequence Iterate DBReport – log whole msg Filter/Drop NOAC Send
11
Proxies
12
New York – File System Listener
13
New York Sequence
14
Flatpack Mediator http://esbsite.org/resources.jsp?path=/mediators/paulfremantle/FlatPackMediator http://esbsite.org/resources.jsp?path=/mediators/paulfremantle/FlatPackMediator
15
Transforming using E4X
16
Scripting XML with E4X <![CDATA[ var rowset = mc.getPayloadXML() /* use the default namespace from the Flatpack mediator */ var ns = new Namespace("http://ws.apache.org/synapse/ns/rowset"); /* find all the D6 rows */ var d6 = rowset..ns::row.(@recordname=="D6"); /* create a holder element for the elements */ var output = for (var i=0; i<d6.length(); i++) { var row = d6[i]; /* lookup the important data */ var ActionKey = row.ns::entry.(@name=="ACTIONKEY").text(); var AccNum = row.ns::entry.(@name=="ACCNUM").text(); var ActType = row.ns::entry.(@name=="ACTTYPE").text(); var SecID = row.ns::entry.(@name=="SECID").text(); var SecIDType = row.ns::entry.(@name=="SECIDTYPE").text(); var ONVF = row.ns::entry.(@name=="ONVF").text(); var UnitsEl = row.ns::entry.(@name=="UNITSEL").text(); var RegCode = row.ns::entry.(@name=="REGCODE").text();
17
Scripting XML continued var feed = {ActionKey} {AccNum} {AccType} {SecID} {SecIDType} {ONVF} {UnitsEl} {RegCode} ; output.appendChild(feed); } mc.setPayloadXML(output); ]]>
18
London - Iterate
19
Log the whole message
20
Final steps
21
PushMePullYou
22
Pull n Push scenario
23
Task Configuration specify the task implementation task properties task scheduler configuration
24
Calling the data service external data service endpoint configuration
25
Calling Clearance Service split the message into number of messages transform the individual messages clearance service endpoint
26
Clearance Response transform the responses from the clearance service aggregate the responses from the clearance into one response
27
Summary Covered a set of useful cases Changing the flow of control Iteration and Aggregation Two ways of transforming XML Reading record formats Integrating with File-based systems DBReport and DBLookup
28
Questions
29
Resources WSO2 Webinars http://wso2.on.intercall.com http://wso2.on.intercall.com WSO2 ESB documentation http://wso2.org/project/esb/java/1.7/docs /docs_index.html http://wso2.org/project/esb/java/1.7/docs /docs_index.html User List esb-user@lists.wso2.org esb-user@lists.wso2.org Recent performance testing http://wso2.org/library/3740 http://wso2.org/library/3740
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.