[ 
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_call_tempalate.patch

did changes for  invoke mediator config names ie:-changed name to 
"call-tempalate"..please review and commit


> 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_call_tempalate.patch, 
> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to