I completely agree with you, and I would like to augment your suggestion with a few other ones. Very often, when you are communicating across different systems and sharing some information, it is very frequent that a certain referential key is defined/represented in several ways across those systems.
Take for example the case where a CRM system refers to countries by identificative initials (Spain=SP, France=FR), whereas a ERP system refers to them by their international dialling code (for example: Spain=34, France=33). If they were to interact, there would need to be a a mechanism that could do the proper transformations when the message is passing through the proxy service. (This is what Oracle calls "Domain-value maps" in their ESB). (Ideally, if there is a CDM, it should establish a "neutral common ground" for these referential keys, leaving it up to the proxy to convert from and to the CDM values and thus removing the need to cross-analyse the equivalences between systems.) For example, in the above situation, you could define the CDM values as "SPAIN" and "FRANCE", so the consumer proxy would do SP-->SPAIN and the provider proxy would do SPAIN-->34. Actually, if you were to implement such a mechanism, could you suggest a way of doing so in ServiceMix? Another interesting feature would be for the proxy service to detect and support "faults" and support call-outs when this happen (inserting for example an entry in an error registry). Thanks a lot, Raul. gnodet wrote: > > Btw, the servicemix-saxon should really be enhanced to support natively > this pattern which is imho quite common. A single endpoint would be used > and configured with one or two xslt and act as as a proxy between the > consumer and the provider and perform the transformation on both ways. > > On Wed, Mar 26, 2008 at 5:01 PM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > >> Yeah, it's totally doable using servicemix-eip + any transformation >> (servicemix-saxon). >> The pipeline can be used if the exchange is InOnly. but if you have a >> reply, this usually means that the exchange will be an InOut, in which >> case >> you would use the eip static routing slip with the following targets: >> * the request transformer >> * the service to call >> * the response transformer >> This way, the canonical transformation can be done by the two >> transformers. >> >> >> On Wed, Mar 26, 2008 at 4:55 PM, raulvk <[EMAIL PROTECTED]> wrote: >> >> > >> > Hi everyone, >> > >> > I would like to recover this question since it was not answered when >> > originally posted and I am encountering the same escenario. (as you can >> > see, >> > I have done my duty of checking for past posts ;)) >> > >> > I am using ServiceMix to expose services offered by heterogeneous >> > platforms >> > to consumers who interact with the ESB instead of invoking the final >> > services directly. >> > >> > However, the idea is to implement a Canonical Data Model, so that >> > services >> > are agnostic of the interfaces of one another. Hence, when a consumer >> > invokes the ESB, it will do so in its Particular Data Model and the ESB >> > should transform the message into the Canonical Data Model. (could use >> > the >> > pipeline pattern from servicemix-eip to achieve this). >> > >> > The call should then be routed to the final destination, where there >> > would >> > be another transformer that understands CDM and transforms the message >> > to >> > the format understood by the final system. >> > >> > If the service is synchronous, the same process should be repeated >> > backwards. >> > >> > My first question is wheter ServiceMix is suitable for such a >> > scenario... >> > And if it is, how would I achieve it? >> > >> > Thanks a lot, >> > >> > Raul. >> > >> > >> > Peter Klotz-2 wrote: >> > > >> > > Hi, >> > > >> > > a question regarding transformers, it seems that when I have a >> > component >> > > that >> > > implements TransformComponentSupport and send a InOut ME through this >> > > transformer only the request is received by the onMessageExchange() >> > but >> > > not the >> > > response. >> > > >> > > The onMessageExchange() method is called twice, once normal and once >> > with >> > > status >> > > DONE. but both have as content of the in an out message the content >> of >> > the >> > > request. One never gets the response in the transformer. >> > > >> > > Now I need to have a transformer that does an action both on the >> > request >> > > and the >> > > response of a InOut ME, how can I do this? >> > > >> > > req ---> +-------+ ----> +------+ >> > > | trans | | comp | >> > > resp <--- +-------+ <---- +------+ >> > > >> > > >> > > Thanks, Peter >> > > >> > > >> > >> > -- >> > View this message in context: >> > >> http://www.nabble.com/Transforming-request-and-response-tp5154324s12049p16304064.html >> > Sent from the ServiceMix - User mailing list archive at Nabble.com. >> > >> > >> >> >> -- >> Cheers, >> Guillaume Nodet >> ------------------------ >> Blog: http://gnodet.blogspot.com/ > > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > > -- View this message in context: http://www.nabble.com/Transforming-request-and-response-tp5154324s12049p16310376.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
