Experience with avoiding the use of MAP steps.

Wondering if anyone has any experience avoiding using FLOW- specifically the MAP step for transformation.

E.g. replacing MAP steps with java services instead.

It’s an ongoing discussion between the Java developers and the ones who prefer Flow.

Wondering if anyone has any input on the topic?

Just to be clear, I am all for Flow been doing it for 6 years. Would just like to hear someone elses view on this.

Here is my take having used Flow for some considerable time.

I would say the preference from everyone I know who uses FLOW is to use MAP steps rather than Java based services.

I would say further that using MAP steps is easier to use (e.g. considering just copying a single item or initialising a pipeline variable
2) and creates more maintainable code. If you thing about it this is why Integration Server and Developer were designed they way they were: easy creation of services to ease integration into external systems.

Writing Java Mapping services could mean the introduction of possibly complex code to manipulate the pipeline. I would only write Java based services (not just mapping services) within IS only if I need to something complex with the data and sometimes which would be otherwise too complex or just impossible to do in Flow. I have come across external developers who can only just barely spell Java so clearly using MAP is the only option for them.

In terms of performance, I suspect you will get a marginal increase in performance but probably be so little as to matter.

Another consideration that I’ve had in the past is where you have a complex structures represented in XML and you need to transform. Trying to write a mapping service to convert these types of structures can be a nightmare, it isn’t easy to do with Developer or Designer and can produce hard to maintain and unreadable Flow. In these cases I’ve resorted to using XSLT but not using the XSTL Services within Integration Server, using externally stored XSLT files instead.

Bottom line though, I would advocate the following advice: use MAP step with transformers if necessary for simple mapping; write separate mapping services dedicated to that job for more complex mapping needs. For the latter this can be invoked as an INVOKE or as a MAP. For structures where naming is unknown or dynamic, or working with Object types not supported by Integration Server then use Java.