From this post I will going to briefly introduce about one of the new features provided by WSO2 ESB. Earlier WSO2 ESB supported static registry keys where users can select a key for the mediator as a static value. But from ESB 4.0.0 users can use dynamic registry keys where users can define XPath expression to evaluate the registry key in run time.
For an example let's consider XSLT mediator. With earlier static registry key based method user have to define only single XSLT file for transformation. With the use of dynamic registry key, user will be able to use XPath expressions to dynamically generate the registry key, based on the message context. So with that user can have multiple XSLT files and based on the evaluated key mediator will be able to select the required XSLT file in run time.
Following is a sample usage of static and dynamic registry keys and user can use both of them according to situation.
- Static Registry Key – define the exact path to find the xslt file like bellow.<xslt key="xslt-key-req"/>
Image1 : User can select static key from registry browser |
eg:
1: <sequence xmlns="http://ws.apache.org/ns/synapse" name="main">2: <in>3: <xslt key="conf:/repository/synapse/samples/transform/transform.xslt" />
4: </in>5: <out>6: <xslt key="conf:/repository/synapse/samples/transform/transform_back.xslt" />
7: </out>8: <send />9: </sequence>
- Dynamic Registry Key – Using an Xpath expression inside curly braces { }, to identify the key like bellow.
1: <xslt xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" key="{get-property('symbol')}" />2:3: <sequence xmlns="http://ws.apache.org/ns/synapse" name="main">4: <in>5: <property name="symbol" value="conf:/repository/synapse/samples/transform/transform.xslt" />6: <xslt xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" key="{get-property('symbol')}" />7: </in>8: <out>9: <xslt key="conf:/repository/synapse/samples/transform/transform_back.xslt" />
10: </out>11: <send />12: </sequence>
Hi,
ReplyDeleteI tried using dynamic registry keys for the following mediator:
send - works
xslt - works
validate - just the main schema works,
additional external schema doesn't
a more detailed description can be found here: http://wso2.org/forum/thread/13151
Hi Frank,
ReplyDeleteDynamic key feature is now enabled with Validate, XSLT,Sequence, Send, XQuery and Script Mediators.
But When considering about Validate mediator you can use dynamic key feature with Schema key.
But AFAIK, you cant use Dynamic key feature with external resources because it is not supported at the moment.
Thank You.
thanks for the clarification
ReplyDeleteHi Ranga Siriwardena,
ReplyDeleteI have one Query in wso2 Data Service Server:-
Multiple tables depend on each other with Primary key and foregin key, i used the auto generated key in wso2DSS.
i am inserted data in 1st table and getting auto genreted identity column, using that identity column again i am inserting in 2nd table as well in 3rd also
@my issue is while inserting in 2nd table error occure due to pk voilation i need to rollback the 1st table row which is already inserted in table how could i do this ...
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete