synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Udayanga Wickramasinghe (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (SYNAPSE-738) Function-Templates for Synapse Configuration
Date Mon, 28 Mar 2011 05:18:05 GMT

     [ https://issues.apache.org/jira/browse/SYNAPSE-738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Udayanga Wickramasinghe updated SYNAPSE-738:
--------------------------------------------

    Attachment: synapse_SYNAPSE-738_config_changes_update.patch

> Function-Templates for Synapse Configuration
> --------------------------------------------
>
>                 Key: SYNAPSE-738
>                 URL: https://issues.apache.org/jira/browse/SYNAPSE-738
>             Project: Synapse
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: FUTURE
>            Reporter: Udayanga Wickramasinghe
>         Attachments: synapse_SYNAPSE-738, synapse_SYNAPSE-738_config_changes.patch, synapse_SYNAPSE-738_config_changes_update.patch,
synapse_SYNAPSE-738_update.patch, synapse_function_templates.patch
>
>
> Implementing Function templates in Synapse can be used to reduce lot of complexity as
well as eliminate redundancy at synapse configuration. At the moment a large portion of ESB
configuration are at the micro level. Because of this users have to individually configure
each and every mediator to achieve some high level task. But what we need is a high level
abstraction that users can easily use to model such scenarios .
> For example if we consider following scenario ,
>  <proxy name="SplitAggregateProxy">
>        <target>
>            <inSequence>
>                <iterate expression="//m0:getQuote/m0:
> request"
> preservePayload="true"
>                         attachPath="//m0:getQuote"
>                         xmlns:m0="http://services.samples">
>                    <target>
>                        <sequence>
>                            <send>
>                                <endpoint>
>                                    <address
> uri="http://localhost:9000/services/SimpleStockQuoteService"/>
>                                </endpoint>
>                            </send>
>                        </sequence>
>                    </target>
>                </iterate>
>            </inSequence>
>            <outSequence>
>                <aggregate>
>                    <onComplete expression="//m0:getQuoteResponse"
>                                xmlns:m0="http://services.samples">
>                        <send/>
>                    </onComplete>
>                </aggregate>
>            </outSequence>
>        </target>
>    </proxy>
> Here what user really wants  to look at is three configuration parameters ,
> 1. Two XPath expressions
> 2. An endpoint address
> we can hide a lot of this complexity by introducing a 'template' configuration that parameterize
(like a function does) a known pattern such as this one.Parameterization can be done using
xpath expressions..
> Function templates will look like following in synapse config,
> 1)
> <template name="[func name]">
>        /**parameters for this function template**/
>       <parameter name="p1" />*
>       /**any sequence**/
>       <any sequence>+
>  </template> 
> -->A Template is an extension of Sequence , hence template body can contain any sequence
in general
> --> any mediator/comp inside template body can refer to its parameters just like a
normal function does ,by xpath function scope (ie:-func) variable
>         ie:- <aggregate>
>                     <onComplete xmlns:m0="http://services.samples" expression="$func:p2">
>                         <log level="full" />
>                          <send/>
>                     </onComplete>
>              </aggregate>
>      OR
>            <log level="custom">
>                  <property name="p1-value" expression="$func:p1"/>
>                 <property name="p2-value" expression="get-property('func','p2')"/>
>             </log>
>               
> 2)To invoke a template in synapse we can define a Invoke mediator which will be in the
following  form. Using a invoke mediator ,from  within any sequence of Synapse we would be
able to execute a template with the passed on values for parameters such as p1,p2,etc....
 :
>         <invoke target="[target func template]">
>             <parameter name="p2"  value="{any xpath} | plain-value"/>*
>         </invoke>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org


Mime
View raw message