Databases Reference
In-Depth Information
In cases where the internal service is a human interface (for example, Workflow),
then it is quite possible for an error to be introduced in the fourth message, in these
cases validation should be applied.
You could argue that whilst we should have confidence in the quality
of messages exchanged between components that we control, that this
is somewhat idealistic. At the very least it assumes that adequate care
is taken during the implementation and testing of our composites to
ensure that they don't actually create invalid messages.
Another factor we need to consider when making the decision about
where to apply validation is nothing other than basic risk analysis;
in other words what is the probability of an error being introduced
at any of these points, and if such an error were to occur what would
be the consequence. Again, we need to balance these requirements
against our other objectives, such as the performance and agility of
the overall solution.
One approach is to initially implement validation for these
message exchanges, but only to apply this whilst developing and
testing a service, and then disable it once we move the service into
production. Assuming we have a rigorous test process, this allows
us to have far greater confidence in the quality of the message that
we are exchanging and thus reduce the likelihood of an error being
introduced.
To assist in this, Enterprise Manager allows you set Payload
Validation on a composite, doing this will validate all inbound and
out messages (that is, one through eight in the preceding diagram)
against their XML Schema(s).
The sixth and seventh messages are exchanged between our composite and what we
have labeled as External Service . What we mean here is a service which is outside
our domain of control. Again, this is from the perspective of (not) being able to
guarantee the quality of the data returned, and thus we should validate the data
returned in message number seven is validated.
However, best practice dictates that we call an External Service via a proxy service
implemented on the Oracle Service Bus, in which case, it makes sense to place
the validation in the proxy service and only implement it once (as opposed to
implementing it in every composite that calls the same external service). As the
proxy service may have little knowledge of either the external service or consumer
of it, the proxy would typically perform validation against both the request and
response message.
 
Search WWH ::




Custom Search