Whenever in ESB logic a
conditional filter is required and based on the value of the filter a
particular functionality needs to be executed, switch mediator can be used. This
switch mediator is same like as we have for other programming language in java,
.net, php etc. so overall concept is same in WSO2 as well.
In WSO2 ESB, switch
mediator filters the XPATH or JSON. We can pass an expression value in it to
filter the value and based on the value of an expression a case is executed if
it is matched with filtered string.
You can add switch
mediator by the UI configuration it comes in the Filter category.
There are some parameter
you need to pass to use this Switch Mediator like Source Xpath and number of
case as per your logic. At the last there is a default mediator option you can
use that to execute if no match is found.
Example:
<switch source="get-property('GetServiceName')">
<case regex="GetEmployeeDetail">
<send>
<endpoint>
<address uri="http://localhost:8280/services/getEmployeeDetail"/>
</endpoint>
</send>
</case >
<case regex="GetDepartmentDetail">
<send>
<endpoint>
<address uri="http://localhost:8280/services/getDepartmnetDetail"/>
</endpoint>
</send>
</case>
<case regex="GetITHeadDetail">
<send>
<endpoint>
<address uri="http://localhost:8280/services/getITHeadDetail"/>
</endpoint>
</send>
</case>
<default>
<send/>
<drop/>
</default>
</switch>
In above example we are
trying to call the different service based on the ‘'GetServiceName'’ parameter.
If the string value of 'GetServiceName' variable is ‘GetEmployeeDetail’ then
call ‘getEmployeeDetail’ service and if value is ‘GetDepartmentDetail’ then
call ‘getDepartmnetDetail’ service. There is a default case in which we are
dropping the response back to the client. If no case is found by the filtered
parameter then default case is executed.