Two or more services may be invoked in parallel by using the <parallel>
element.
Only the initial event is delivered in parallel to services in a parallel block. Subsequent events are delivered in serial to any parallel block services that remain in the call path after the initial event, in the order the services are defined within the parallel block. |
The SIS views a parallel block in the same way it does a regular service — as a black box that accepts input and may generate output. A parallel block is still invoked sequentially with respect to other The fact that the parallel block actually invokes multiple services is immaterial as far as SIS composition evaluation is concerned. |
Example
In the following example, the SIS delivers the initial event to the VPN
and Homezone
services in parallel, favouring the result of VPN
as the primary service. After both services have responded, and assuming neither service releases the call, the SIS proceeds to invoke the Prepay
service.
Attributes and child elements
A <parallel>
element has the following possible attributes and child elements.
Attributes
Name | Description | Optional? |
---|---|---|
timeout |
Specifies the timeout period, measured in milliseconds, that the SIS will wait for all responses during initial event processing. If present, this timeout overrides the default service timeout configured for the SIS. If the timeout period for the parallel block is less than the timeout period of any individual service within that parallel block, it’s possible for the parallel block as a whole to timeout, in which case the timeout behaviour specified for the parallel block takes precedence over any timeout behaviour specified for individual services within the parallel block. |
✔ |
on-timeout |
Specifies the behaviour the SIS will take if the parallel block fails to obtain a suitable response within its specified timeout period. The supported values for this attribute are:
The default value if this attribute is not specified is |
✔ |
Child elements
Name | Description | Optional? | ||||||
---|---|---|---|---|---|---|---|---|
invoke |
Indicates a service to be invoked in parallel. Any number of
|
✘ |
||||||
service-input-interceptor |
A service input interceptor. The SIS evaluates this input interceptor before it delivers any event to services in the parallel block. |
✔ |
||||||
service-output-interceptor |
A service output interceptor. The SIS evaluates this output interceptor whenever the parallel block, as a whole, generates output intended for the network. |
✔ |
||||||
terminate |
This element can only be specified if the |
✔ |
||||||
message-handling-options |
This element specifies configurable options for how the SIS manages specific messages received from the parallel block. |
✔ |
||||||
extension-options |
Specifies arbitrary extension options supported by the SIS for service invocation. This is a collection of
|
✔ |