1 2 Previous Next 26 Replies Latest reply on Jul 18, 2006 11:03 AM by ddegroff

    Looking for a real life ESB transformation example

    tfennelly

      I'm looking for a "real life" example of the type of transformation that our ESB will need to be able to perform. I could dream up an example but I'd prefer to deal with real requirements.

      The sort of detail I'm looking for might hopefully include source and target schemas for source and target SOAP Action requests i.e. the SOAP actions that the Transformation Service needs to transform from and to. Hopefully someone out there has this "real life" info like this :-) If not, I'll concoct something.

      Thanks.

        • 1. Re: Looking for a real life ESB transformation example

          I can not disclose real data but this is the kind of things I have to do:


          * Transform Raw Data to Raw XML (using Regexp extraction) then to Target XML (using XSL):

          [ABC;123]->[<group1>ABC</group1><group2>123</group2>]->[123]


          * Transform ad hoc security scheme to WS-Security:

          Env{Body:usr=ABC;pwd=123;...}->Env{Head:{ws-security:usr=ABC;pwd=123};Body{...}}


          * XSL Processor accessing a data cache service so stylesheet performing data enrichment can do it efficiently.

          • 2. Re: Looking for a real life ESB transformation example
            tfennelly

            Fair play to ya. That's great, thanks!!

            • 3. Re: Looking for a real life ESB transformation example
              tfennelly

              It took a while, but I eventually got around to writing a tutorial to demostrate how the transformation described by David (above) might be done using Smooks.

              http://milyn.codehaus.org/Transforming+a+SOAP+Message

              David, if you see this message, I'd be interested in your thoughts.

              • 4. Re: Looking for a real life ESB transformation example

                I have been doing some research on Mule-ESB. Mule has a great idea on transforming any incoming/outgoing message. From mule point of view, they call service processor as endpoint. We can set the transformer as we want.

                Simple case, i receive the transaction over HTTP protocol and deliver the transaction to partner system as ISO8583 message. I can create HTTPtoInternalMessage, InternalMessagetoISO8583 as the input transformer and ISO8583toInternalMessage, InternalMessagetoHTTP as response transformer.

                Regards.

                • 5. Re: Looking for a real life ESB transformation example

                  This is a dual reply (sorry for the delay).

                  * Mule & Transformation: I have been using Mule quite extensively for a client and I confirm their transformation model is really good. In fact I have implemented the "Transform Raw Data to Raw XML" and "XSL Processor accessing a data cache" that I mentionned before as Mule transformers.

                  * Re: "http://milyn.codehaus.org/Transforming+a+SOAP+Message", this is extremely promising approach. Could the bean be defined in Groovy to avoid compiling it? It would complicate the administration of the ESB if people had to use a compiler when editing the configuration.


                  Now as a general matter, one thing that was annoying (to me) with Mule is that I basically had to take a node down to modify a transformation chain. For my project, this was ok but for a central ESB, this is not an option.

                  I am expecting that whatever approach you guys follow, it will not mandate a service disruption to be deployed. I reckon that the Smooks-driven transformation will be hot reloadable.

                  Thanks!
                  David

                  • 6. Re: Looking for a real life ESB transformation example
                    tfennelly

                     

                    Could the bean be defined in Groovy to avoid compiling it? It would complicate the administration of the ESB if people had to use a compiler when editing the configuration.


                    For sure (but I haven't tried it :-) ). It could also be implemented such that the Groovy Bean script could be embedded in the smooks-resource configuration. I tried this with BeanShell scripting (http://www.beanshell.org/). It worked fine, but to be honest I found modifying Java code inside an XML file to be a pain in the neck, so I didn't publish it. If you want to take a look at the code: http://cvs.milyn.codehaus.org/browse/milyn/smooks-cartridges/beanshell/src/main/java/org/milyn/smooks/beanshell/BeanShellTransUnit.java?r=1.2


                    • 7. Re: Looking for a real life ESB transformation example
                      tfennelly

                      sorry about the messed up formatting

                      • 8. Re: Looking for a real life ESB transformation example
                        marklittle

                        Versioning of services should be able to cope with hot-deploying of transformation engines and rules. Although we may not have that in play with the first GA release, it will be something that will happen eventually.

                        • 9. Re: Looking for a real life ESB transformation example

                          I agree that code in XML is not great, an independant file that could be loaded by the transformation engine would be better (Groovy or BSH, whatever best fits).

                          The whole stuff would then be packaged together.

                          Thanks,
                          David

                          • 10. Re: Looking for a real life ESB transformation example
                            tfennelly

                             

                            Versioning of services should be able to cope with hot-deploying of transformation engines and rules. Although we may not have that in play with the first GA release, it will be something that will happen eventually.


                            Is David talking about hot redeploy in a production type environment? Would someone really make changes to a prod env in this way? I can see how hot redeploys (without a new version) could be useful in Dev/QA type envs.

                            • 11. Re: Looking for a real life ESB transformation example
                              marklittle

                              Yes they would. I've come across systems that are deployed and running continuously and cannot be taken down for more than 24 hours in a year! So being able to cope with changes to services on a running system is something we need to factor in from the start. Obviously there may be some changes that simply cannot be coped with while the system is running, but with any luck those will be the exception rather than the rule.

                              • 12. Re: Looking for a real life ESB transformation example

                                "Hot redeploy" is probably an overstatement from my side.

                                Say, the contract of an outbound service has changed and you want to modify the transformation chain to be able to keep routing messages to it. You would then have to deploy a new config without stopping the whole service.

                                Sorry for using the wrong terminology.

                                • 13. Re: Looking for a real life ESB transformation example

                                   

                                  "ddossot" wrote:
                                  "Hot redeploy" is probably an overstatement from my side.

                                  Say, the contract of an outbound service has changed and you want to modify the transformation chain to be able to keep routing messages to it. You would then have to deploy a new config without stopping the whole service.

                                  Sorry for using the wrong terminology.


                                  I'm not sure I would know the "correct terminology" myself in this case, David. But, to introduce another practical example of what I believe this thread is discussing:

                                  Suppose you are exchanging a format (let's just say X12 EDI) with a trading partner external to the ESB. The trading partner (a major player who dictates what "standard" shall be used to communicate with them, "or else") revises their "standard" as of a certain date in the future.

                                  It would be wise to employ versioning, including date/time effectivity, so that development and testing could ensue prior to the "deadline", and deployment of the new version could occur even prior to the "go date". Once the effective date passes, the transformation would use the "new" format in compliance with the trading partner's demands.

                                  I'm working on yet another example for you, Tom. I wanted an opportunity to work through your tutorial beforehand.

                                  Thanks all, Dave De

                                  • 14. Re: Looking for a real life ESB transformation example
                                    tfennelly

                                     

                                    I'm working on yet another example for you, Tom. I wanted an opportunity to work through your tutorial beforehand.


                                    That would be great Dave, thanks!

                                    1 2 Previous Next