Hi

   - If we publish events from each mediator then, we can certainly group
   each event from unique parentID can't we? (I mean this would allow us to
   prepare a aggregated view per  incoming message and visualize different
   stages of each message representation and other meta information, think of
   complex mediation)
   - Can't we record payload as according to Content-Type, therefore, shall
   we get rid of SOAP way of representing?
   - If we have non-content aware mediation flow with "application/json",
   can we find the way to get json string rather rather explicitly build  i.e
    "org.apache.synapse.commons.json.Constants.JSON_STRING"
   - Supun, according to the stream definition ""children": 1," what it
   represents ?


On Mon, Feb 15, 2016 at 9:15 PM, Supun Sethunga <sup...@wso2.com> wrote:

> Hi Dunith, Gihan,
>
> As per the offline chat had with Buddhima and Viraj, follow is a sample
> payload to be published from ESB to DAS. Do we need any other information
> for the plots/tables in dashboard?
>
> Here we added a new field "entryPoint" to indicate inside which Proxy/API
> did the mediator get executed. So that it would be easy to drill down from
> proxy view to mediator view. Please add if there is any other similar field
> that would be needed for drill-downs, if we have missed any.
>
> {
> "events": [{
> "compotentType": "ProxyService",
> "compotentId": "Test Proxy",
> "startTime": 1455531027,
> "endTime": 1455531041,
> "duration": 3.321,
> "beforePayload": null,
> "afterPayload": null,
> "contextPropertyMap":
> "{\"MESSAGE_FLOW_ID\":\"urn_uuid_e4251abb-8ff5-433b-8dcb-24f251c3e30d\"}",
> "transportPropertyMap": "{\"Content-Type\":\"application\/soap+xml;
> charset=UTF-8; action=\"urn:renewLicense\"\",\"Host\":\"localhost\"}",
> "children": 1,
> "entryPoint": "Test Proxy"
> }, {
> "compotentType": "Mediator",
> "compotentId": "mediator_1",
> "startTime": 1455531041,
> "endTime": 1455531052,
> "duration": 3.321,
> "beforePayload": null,
> "afterPayload": null,
> "contextPropertyMap":
> "{\"MESSAGE_FLOW_ID\":\"urn_uuid_e4251abb-8ff5-433b-8dcb-24f251c3e30d\"}",
> "transportPropertyMap": "{\"Content-Type\":\"application\/soap+xml;
> charset=UTF-8; action=\"urn:renewLicense\"\",\"Host\":\"localhost\"}",
> "children": 0,
> "entryPoint": "Test Proxy"
> }, {
> "compotentType": "Mediator",
> "compotentId": "mediator_2",
> "startTime": 1455531052,
> "endTime": 1455531074,
> "duration": 3.321,
> "beforePayload": null,
> "afterPayload": null,
> "contextPropertyMap": null,
> "transportPropertyMap": null,
> "children": 0,
> "entryPoint": "Test Proxy"
> }],
>
> "payloads": [{
> "payload": "<?xml version=\"1.0\" encoding=\"utf-8\"?><soapenv:Envelope
> xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\";><soapenv:Body><sam:getCertificateID
> xmlns:sam=\"http://sample.esb.org
> \"><sam:vehicleNumber>123456</sam:vehicleNumber></sam:getCertificateID></soapenv:Body></soapenv:Envelope>",
> "events": [{
> "eventIndex": 0,
> "attributes": "beforePayload"
> }, {
> "eventIndex": 0,
> "attributes": "afterPayload"
> }, {
> "eventIndex": 1,
> "attributes": "beforePayload"
> }]
> }, {
> "payload": "<?xml version=\"1.0\" encoding=\"utf-8\"?><soapenv:Envelope
> xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\";><soapenv:Body><sam:getCertificateID
> xmlns:sam=\"http://sample.esb.org
> \"><sam:vehicleNumber>123123</sam:vehicleNumber><sam:vehicleType>car</sam:vehicleType></sam:getCertificateID></soapenv:Body></soapenv:Envelope>",
> "events": [{
> "eventIndex": 1,
> "attributes": "afterPayload"
> }, {
> "eventIndex": 2,
> "attributes": "beforePayload"
> }, {
> "eventIndex": 2,
> "attributes": "afterPayload"
> }]
> }]
> }
>
> Thanks,
> Supun
>
> On Wed, Feb 10, 2016 at 11:57 AM, Supun Sethunga <sup...@wso2.com> wrote:
>
>> Hi Sinthuja,
>>
>>
>>> IMHO we could solve this issue as having conversions. Basically we could
>>> use $payloads:payload1 to reference the elements as a convention. If the
>>> element starts with '$' then it's the reference, not the actual payload. In
>>> that case if there is a new element introduced, let's say foo and you need
>>> to access the property property1, then it will have the reference as
>>> $foo:property1.
>>
>>
>> Yes, that's possible as well. But again, if the value for the property,
>> say 'foo', has an actual value starting with some special character.. (in
>> this case '$'), we may run in to ambiguity. (true, the chances are pretty
>> less, but still possible).
>>
>>
>>  Also this json event format is being sent as event payload in wso2
>>> event, and wso2 event is being published by the data publisher right?
>>> Correct me if i'm wrong.
>>
>>
>> Yes.
>>
>> Thanks,
>> Supun
>>
>>
>> On Wed, Feb 10, 2016 at 11:35 AM, Sinthuja Ragendran <sinth...@wso2.com>
>> wrote:
>>
>>> Hi Supun,
>>>
>>> Also this json event format is being sent as event payload in wso2
>>> event, and wso2 event is being published by the data publisher right?
>>> Correct me if i'm wrong.
>>>
>>> Thanks,
>>> Sinthuja.
>>>
>>> On Wed, Feb 10, 2016 at 11:26 AM, Sinthuja Ragendran <sinth...@wso2.com>
>>> wrote:
>>>
>>>> Hi Supun,
>>>>
>>>>
>>>> On Wed, Feb 10, 2016 at 11:14 AM, Supun Sethunga <sup...@wso2.com>
>>>> wrote:
>>>>
>>>>> Hi Sinthuja,
>>>>>
>>>>> Agree on the possibility of simplifying the json. We also discussed on
>>>>> the same matter yesterday, but the complication came up was, by an event 
>>>>> in
>>>>> the "events" list, payload could be either referenced, or defined
>>>>> in-line.(made as it is, so that it can be generalized for other fields as
>>>>> well if needed, other than payloads.).
>>>>>
>>>> In such a case, if we had defined as 'payload': '*payload1**', *we
>>>>> would not know if its the actual payload, or a reference to the payload in
>>>>> the "payloads" section.
>>>>>
>>>>> With the suggested format, DAS will only go and map the payload if its
>>>>> null.
>>>>>
>>>>>
>>>> IMHO we could solve this issue as having conversions. Basically we
>>>> could use $payloads:payload1 to reference the elements as a convention. If
>>>> the element starts with '$' then it's the reference, not the actual
>>>> payload. In that case if there is a new element introduced, let's say foo
>>>> and you need to access the property property1, then it will have the
>>>> reference as $foo:property1.
>>>>
>>>> Thanks,
>>>> Sinthuja.
>>>>
>>>>
>>>>
>>>>> Regards,
>>>>> Supun
>>>>>
>>>>> On Wed, Feb 10, 2016 at 10:52 AM, Sinthuja Ragendran <
>>>>> sinth...@wso2.com> wrote:
>>>>>
>>>>>> Hi Supun,
>>>>>>
>>>>>> I think we could simplify the json message bit more. Instead of
>>>>>> 'null' for the payload attributes in the events section, you could use 
>>>>>> the
>>>>>> actual payload name directly if there is a payload for that event. And in
>>>>>> that case, we could eliminate the 'events' section from the 'payloads'
>>>>>> section. For the given example, it could be altered as below.
>>>>>>
>>>>>> {
>>>>>> 'events': [{
>>>>>> 'messageId': 'aaa',
>>>>>> 'componentId': '111',
>>>>>> 'payload': '*payload1*',
>>>>>> 'componentName': 'Proxy:TestProxy',
>>>>>> 'output-payload':null
>>>>>> }, {
>>>>>> 'messageId': 'bbb',
>>>>>> 'componentId': '222',
>>>>>> 'componentName': 'Proxy:TestProxy',
>>>>>> 'payload': '*payload1*',
>>>>>> 'output-payload':null
>>>>>> }, {
>>>>>> 'messageId': 'ccc',
>>>>>> 'componentId': '789',
>>>>>> 'payload': '*payload2*',
>>>>>> 'componentName': 'Proxy:TestProxy',
>>>>>> 'output-payload':'*payload2*'
>>>>>> }],
>>>>>>
>>>>>> 'payloads': {
>>>>>> '*payload1*': 'xml-payload-1',
>>>>>> '*payload2*': 'xml-payload-2',
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> Thanks,
>>>>>> Sinthuja.
>>>>>>
>>>>>> On Wed, Feb 10, 2016 at 10:18 AM, Supun Sethunga <sup...@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Budhdhima/Viraj,
>>>>>>>
>>>>>>> As per the discussion we had yesterday, follow is the format of the
>>>>>>> json contains aggregated event details, to be sent to DAS. (you may 
>>>>>>> change
>>>>>>> the attribute names of events).
>>>>>>>
>>>>>>> To explain it further, "events" contains the details about each
>>>>>>> event sent by each mediator. Payload may or may not be populated.
>>>>>>> "Payloads" section contains unique payloads and the mapping to the 
>>>>>>> events
>>>>>>> their fields. (eg:  'xml-payload-2' maps to the 'payload' and
>>>>>>> 'output-payload' fields of the 3rd event).
>>>>>>>
>>>>>>> {
>>>>>>> 'events': [{
>>>>>>> 'messageId': 'aaa',
>>>>>>> 'componentId': '111',
>>>>>>> 'payload': null,
>>>>>>>
>>>>>> 'componentName': 'Proxy:TestProxy',
>>>>>>> 'output-payload':null
>>>>>>> }, {
>>>>>>> 'messageId': 'bbb',
>>>>>>> 'componentId': '222',
>>>>>>> 'componentName': 'Proxy:TestProxy',
>>>>>>> 'payload': null,
>>>>>>> 'output-payload':null
>>>>>>> }, {
>>>>>>> 'messageId': 'ccc',
>>>>>>> 'componentId': '789',
>>>>>>> 'payload': null,
>>>>>>> 'componentName': 'Proxy:TestProxy',
>>>>>>> 'output-payload':null
>>>>>>> }],
>>>>>>>
>>>>>>> 'payloads': [{
>>>>>>> 'payload': 'xml-payload-1',
>>>>>>> 'events': [{
>>>>>>> 'eventIndex': 0,
>>>>>>> 'attributes':['payload']
>>>>>>> }, {
>>>>>>> 'eventIndex': 1,
>>>>>>> 'attributes':['payload']
>>>>>>> }]
>>>>>>> }, {
>>>>>>> 'payload': 'xml-payload-2',
>>>>>>> 'events': [{
>>>>>>> 'eventIndex': 2,
>>>>>>> 'attributes':['payload','output-payload']
>>>>>>> }]
>>>>>>> }]
>>>>>>> }
>>>>>>>
>>>>>>> Please let us know any further clarifications is needed, or if
>>>>>>> there's anything to be modified/improved.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Supun
>>>>>>>
>>>>>>> On Tue, Feb 9, 2016 at 11:05 AM, Isuru Udana <isu...@wso2.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Kasun,
>>>>>>>>
>>>>>>>> On Tue, Feb 9, 2016 at 10:10 AM, Kasun Indrasiri <ka...@wso2.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I think for trancing use case we need to publish events one by one
>>>>>>>>> from each mediator (we can't aggregate all such events as it also 
>>>>>>>>> contains
>>>>>>>>> the message payload)
>>>>>>>>>
>>>>>>>> I think we can still do that with some extra effort.
>>>>>>>> Most of the mediators in a sequence flow does not alter the message
>>>>>>>> payload. We can store the payload only for the mediators which alter 
>>>>>>>> the
>>>>>>>> message payload. And for others, we can put a reference to the previous
>>>>>>>> entry. By doing that we can save the memory to a great extent.
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------- Forwarded message ----------
>>>>>>>>> From: Supun Sethunga <sup...@wso2.com>
>>>>>>>>> Date: Mon, Feb 8, 2016 at 2:54 PM
>>>>>>>>> Subject: Re: ESB Analytics Mediation Event Publishing Mechanism
>>>>>>>>> To: Anjana Fernando <anj...@wso2.com>
>>>>>>>>> Cc: "engineering-gr...@wso2.com" <engineering-gr...@wso2.com>,
>>>>>>>>> Srinath Perera <srin...@wso2.com>, Sanjiva Weerawarana <
>>>>>>>>> sanj...@wso2.com>, Kasun Indrasiri <ka...@wso2.com>, Isuru Udana <
>>>>>>>>> isu...@wso2.com>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> Ran some simple performance tests against the new relational
>>>>>>>>> provider, in comparison with the existing one. Follow are the results:
>>>>>>>>>
>>>>>>>>> *Records in Backend DB Table*: *1,054,057*
>>>>>>>>>
>>>>>>>>> *Conversion:*
>>>>>>>>> Spark Table
>>>>>>>>> id a b c
>>>>>>>>> Backend DB Table 1 xxx yyy zzz
>>>>>>>>> id data 1 ppp qqq rrr
>>>>>>>>> 1
>>>>>>>>> [{'a':'aaa','b':'bbb','c':'ccc'},{'a':'xxx','b':'yyy','c':'zzz'},{'a':'ppp','b':'qqq','c':'rrr'}]
>>>>>>>>>  --
>>>>>>>>> To --> 1 aaa bbb ccc
>>>>>>>>> 2
>>>>>>>>> [{'a':'aaa','b':'bbb','c':'ccc'},{'a':'xxx','b':'yyy','c':'zzz'},{'a':'ppp','b':'qqq','c':'rrr'}]
>>>>>>>>> 2 xxx yyy zzz
>>>>>>>>> 2 aaa bbb ccc
>>>>>>>>> 2 ppp qqq rrr
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Avg Time for Query Execution:*
>>>>>>>>>
>>>>>>>>> Querry
>>>>>>>>> Execution time (~ sec)
>>>>>>>>> Existing Analytics Relation Provider New (ESB) Analytics Relation
>>>>>>>>> Provider* * New relational provider split a single row to
>>>>>>>>> multiple rows. Hence the number of rows in the table equivalent to 3 
>>>>>>>>> times
>>>>>>>>> (as each row is split to 3 rows) as the original table.
>>>>>>>>> SELECT COUNT(*) FROM <Table>; 13 16
>>>>>>>>> SELECT * FROM <Table> ORDER BY id ASC; 13 16
>>>>>>>>> SELECT * FROM <Table> WHERE id=98435; 13 16
>>>>>>>>> SELECT id,a,first(b),first(c) FROM <Table> GROUP BY id,a ORDER BY
>>>>>>>>> id ASC; 18 26
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Supun
>>>>>>>>>
>>>>>>>>> On Wed, Feb 3, 2016 at 3:36 PM, Supun Sethunga <sup...@wso2.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi all,
>>>>>>>>>>
>>>>>>>>>> I have started working on implementing a new "relation" / "relation
>>>>>>>>>> provider", to serve the above requirement. This basically is a 
>>>>>>>>>> modified
>>>>>>>>>> version of the existing "Carbon Analytics" relation provider.
>>>>>>>>>>
>>>>>>>>>> Here I have assumed that the encapsulated data for a single execution
>>>>>>>>>> flow are stored in a single row, and the data about the
>>>>>>>>>> mediators invoked during the flow are stored in a known column of 
>>>>>>>>>> each row
>>>>>>>>>> (say "data"), as an array (say a json array). When each row is read 
>>>>>>>>>> in to
>>>>>>>>>> spark, this relational provider create separate rows for each of the
>>>>>>>>>> element in the array stored in "data" column. I have tested this 
>>>>>>>>>> with some
>>>>>>>>>> mocked data, and works as expected.
>>>>>>>>>>
>>>>>>>>>> Need to test with the real data/data-formats, and modify the
>>>>>>>>>> mapping accordingly. Will update the thread with the details.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Supun
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Feb 2, 2016 at 2:36 AM, Anjana Fernando <anj...@wso2.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> In a meeting I'd with Kasun and the ESB team, I got to know
>>>>>>>>>>> that, for their tracing mechanism, they were instructed to publish 
>>>>>>>>>>> one
>>>>>>>>>>> event for each of the mediator invocations, where, earlier they had 
>>>>>>>>>>> an
>>>>>>>>>>> approach, they publish one event, which encapsulated data of a whole
>>>>>>>>>>> execution flow. I would actually like to support the latter 
>>>>>>>>>>> approach,
>>>>>>>>>>> mainly due to performance / resource requirements. And also 
>>>>>>>>>>> considering the
>>>>>>>>>>> fact, this is a feature that could be enabled in production. So 
>>>>>>>>>>> simply, if
>>>>>>>>>>> we do one event per mediator, this does not scale that well. For 
>>>>>>>>>>> example,
>>>>>>>>>>> if the ESB is doing 1k TPS, for a sequence that has 20 mediators, 
>>>>>>>>>>> that is
>>>>>>>>>>> 20k TPS for analytics traffic. Combine that with a possible ESB 
>>>>>>>>>>> cluster
>>>>>>>>>>> hitting a DAS cluster with a single backend database, this maybe 
>>>>>>>>>>> too many
>>>>>>>>>>> rows per second written to the database. Where the main problem 
>>>>>>>>>>> here is,
>>>>>>>>>>> one event is, a single row/record in the backend database in DAS, 
>>>>>>>>>>> so it may
>>>>>>>>>>> come to a state, where the frequency of row creations by events 
>>>>>>>>>>> coming from
>>>>>>>>>>> ESBs cannot be sustained.
>>>>>>>>>>>
>>>>>>>>>>> If we create a single event from the 20 mediators, then it is
>>>>>>>>>>> just 1k TPS for DAS event receivers and the database too, event 
>>>>>>>>>>> though the
>>>>>>>>>>> message size is bigger. It is not necessarily same performance, if 
>>>>>>>>>>> you
>>>>>>>>>>> publish lots of small events to publishing bigger events. 
>>>>>>>>>>> Throughput wise,
>>>>>>>>>>> comparatively bigger events will win (even though if we consider 
>>>>>>>>>>> that,
>>>>>>>>>>> small operations will be batched in transport level etc.. still one 
>>>>>>>>>>> event =
>>>>>>>>>>> one database row). So I would suggest, we try out a single sequence 
>>>>>>>>>>> flow =
>>>>>>>>>>> single event, approach, and from the Spark processing side, we 
>>>>>>>>>>> consider one
>>>>>>>>>>> of these big rows as multiple rows in Spark. I was first thinking, 
>>>>>>>>>>> if UDFs
>>>>>>>>>>> can help in splitting a single column to multiple rows, and that is 
>>>>>>>>>>> not
>>>>>>>>>>> possible, and also, a bit troublesome, considering we have to 
>>>>>>>>>>> delete the
>>>>>>>>>>> original data table after we concerted it using a script, and not
>>>>>>>>>>> forgetting, we actually have to schedule and run a separate script 
>>>>>>>>>>> to do
>>>>>>>>>>> this post-processing. So a much cleaner way to do this would be, to 
>>>>>>>>>>> create
>>>>>>>>>>> a new "relation provider" in Spark (which is like a data adapter 
>>>>>>>>>>> for their
>>>>>>>>>>> DataFrames), and in our relation provider, when we are reading 
>>>>>>>>>>> rows, we
>>>>>>>>>>> convert a single row's column to multiple rows and return that for
>>>>>>>>>>> processing. So Spark will not know, physically it was a single row 
>>>>>>>>>>> from the
>>>>>>>>>>> data layer, and it can summarize the data and all as usual and 
>>>>>>>>>>> write to the
>>>>>>>>>>> target summary tables. [1] is our existing implementation of Spark 
>>>>>>>>>>> relation
>>>>>>>>>>> provider, which directly maps to our DAS analytics tables, we can 
>>>>>>>>>>> create
>>>>>>>>>>> the new one extending / based on it. So I suggest we try out this 
>>>>>>>>>>> approach
>>>>>>>>>>> and see, if everyone is okay with it.
>>>>>>>>>>>
>>>>>>>>>>> [1]
>>>>>>>>>>> https://github.com/wso2/carbon-analytics/blob/master/components/analytics-processors/org.wso2.carbon.analytics.spark.core/src/main/java/org/wso2/carbon/analytics/spark/core/sources/AnalyticsRelationProvider.java
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Anjana.
>>>>>>>>>>> --
>>>>>>>>>>> *Anjana Fernando*
>>>>>>>>>>> Senior Technical Lead
>>>>>>>>>>> WSO2 Inc. | http://wso2.com
>>>>>>>>>>> lean . enterprise . middleware
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>> Google Groups "WSO2 Engineering Group" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>> it, send an email to engineering-group+unsubscr...@wso2.com.
>>>>>>>>>>> For more options, visit
>>>>>>>>>>> https://groups.google.com/a/wso2.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Supun Sethunga*
>>>>>>>>>> Software Engineer
>>>>>>>>>> WSO2, Inc.
>>>>>>>>>> http://wso2.com/
>>>>>>>>>> lean | enterprise | middleware
>>>>>>>>>> Mobile : +94 716546324
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Supun Sethunga*
>>>>>>>>> Software Engineer
>>>>>>>>> WSO2, Inc.
>>>>>>>>> http://wso2.com/
>>>>>>>>> lean | enterprise | middleware
>>>>>>>>> Mobile : +94 716546324
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Kasun Indrasiri
>>>>>>>>> Software Architect
>>>>>>>>> WSO2, Inc.; http://wso2.com
>>>>>>>>> lean.enterprise.middleware
>>>>>>>>>
>>>>>>>>> cell: +94 77 556 5206
>>>>>>>>> Blog : http://kasunpanorama.blogspot.com/
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Isuru Udana*
>>>>>>>> Associate Technical Lead
>>>>>>>> WSO2 Inc.; http://wso2.com
>>>>>>>> email: isu...@wso2.com cell: +94 77 3791887
>>>>>>>> blog: http://mytecheye.blogspot.com/
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Supun Sethunga*
>>>>>>> Software Engineer
>>>>>>> WSO2, Inc.
>>>>>>> http://wso2.com/
>>>>>>> lean | enterprise | middleware
>>>>>>> Mobile : +94 716546324
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Architecture mailing list
>>>>>>> Architecture@wso2.org
>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Sinthuja Rajendran*
>>>>>> Associate Technical Lead
>>>>>> WSO2, Inc.:http://wso2.com
>>>>>>
>>>>>> Blog: http://sinthu-rajan.blogspot.com/
>>>>>> Mobile: +94774273955
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Architecture mailing list
>>>>>> Architecture@wso2.org
>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Supun Sethunga*
>>>>> Software Engineer
>>>>> WSO2, Inc.
>>>>> http://wso2.com/
>>>>> lean | enterprise | middleware
>>>>> Mobile : +94 716546324
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Sinthuja Rajendran*
>>>> Associate Technical Lead
>>>> WSO2, Inc.:http://wso2.com
>>>>
>>>> Blog: http://sinthu-rajan.blogspot.com/
>>>> Mobile: +94774273955
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> *Sinthuja Rajendran*
>>> Associate Technical Lead
>>> WSO2, Inc.:http://wso2.com
>>>
>>> Blog: http://sinthu-rajan.blogspot.com/
>>> Mobile: +94774273955
>>>
>>>
>>>
>>
>>
>> --
>> *Supun Sethunga*
>> Software Engineer
>> WSO2, Inc.
>> http://wso2.com/
>> lean | enterprise | middleware
>> Mobile : +94 716546324
>>
>
>
>
> --
> *Supun Sethunga*
> Software Engineer
> WSO2, Inc.
> http://wso2.com/
> lean | enterprise | middleware
> Mobile : +94 716546324
>
> _______________________________________________
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
Dushan Abeyruwan | Technical Lead

PMC Member Apache Synpase
WSO2 Inc. http://wso2.com/
Blog:*http://www.dushantech.com/ <http://www.dushantech.com/>*
Mobile:(001)408-791-9312
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to