Hi Dushan,

Supun, according to the stream definition ""children": 1," what it
> represents ?


Here, each event basically represent a mediator/proxy. So "children"
represents the child mediator(s) in the message flow. This info is used to
draw the message flow diagram.

For eg, if we consider the first event in the array, "children":1 means
event at index 1 is the first mediator after Test Proxy. and so on.
Sorry, the values I have put for the "children" in second and third events
are misleading. They should be  "children":2 and "children":null,
respectively. So, null means its the end of the message flow.

Regards,
Supun

On Wed, Feb 17, 2016 at 2:34 AM, Dushan Abeyruwan <dus...@wso2.com> wrote:

> 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
>
>


-- 
*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

Reply via email to