The Service Invoke mediation primitive can be compared to embedding
a callout in the mediation flow.
Comparing the Service Invoke
and the callout
The Service Invoke mediation primitive can be compared
to having a callout, callout response, and callout fault, embedded in the
mediation flow. The following figure shows the similarity between the Service
Invoke terminals and the callout terminals:
Figure 1. How Service Invoke
terminals map to callout terminals
Similarities between the Service Invoke mediation primitive and
the callout:
- The in terminal of the Service Invoke corresponds
to the in terminal of the callout.
- The out terminal of the Service Invoke corresponds
to the out terminal of the callout response.
- The fail terminal of the Service Invoke corresponds
to the fail terminal of the callout response (for an
unmodeled fault).
- A modeled fault output terminal of the Service Invoke, corresponds to
a modeled fault terminal of the callout fault.
Differences between the Service Invoke mediation primitive and
the callout:
- The Service Invoke mediation primitive does not switch from request flow
to response flow.
- The Service Invoke mediation primitive does not modify either the transient
context or the correlation context.
Usage considerations
Although, there is a functional
similarity between the Service Invoke mediation primitive and the callout
node, the Service Invoke mediation primitive does not replace the callout
node. Consider the following when deciding which combination of Service Invoke
mediation primitive and callout to use:
- If you simply need to call a service and return the response, consider
using the Service Invoke mediation primitive.
- If you need to interact with multiple services, and produce output that
combines service responses, consider using multiple Service Invoke mediation
primitives. In this type of configuration a callout node might not be necessary;
you might be able to configure all the Service Invoke mediation primitives
in the request flow.
- If you need to call an intermediate service, you can use a Service Invoke
mediation primitive. For example, you might use an intermediate service to
adjust a message, or validate a message externally. The mediation flow would
contain a Service Invoke mediation primitive and a callout to the final service
provider.
- If you need to mediate a message (without calling an intermediate service)
and then call a service provider, the use of a callout is appropriate. The
callout provides the simplest model for this configuration.