Branching in an interceptor lets you execute different logic depending on the outcome of some expression.
Example
If the SIS evaluates the following sample composition script for a particular IN call:
-
From the initial request, the SIS will invoke one of either
InterceptorComponent1
orInterceptorComponent2
, andInterceptorComponent3
. -
For any subsequence call events that
Service1
is interested in receiving, the SIS will first invoke the interceptor extension componentInterceptorComponent3
only, as theinitial-dp
variable is only present if the event being delivered is anInitialDP
initial request.
Script XML
<script>
<invoke service="Service1">
<service-input-interceptor>
<if>
<present variable="${initial-dp}"/>
<then>
<if>
<equal a="${initial-dp.arg.service-key}" b="10"/>
<then>
<invoke-extension extension="InterceptorComponent1"/>
</then>
<else>
<invoke-extension extension="InterceptorComponent2"/>
</else>
</if>
</then>
</if>
<invoke-extension extension="InterceptorComponent3"/>
</service-input-interceptor>
</invoke>
</script>