OutSystems as an Integration Layer

OutSystems as an Integration Layer

I am curious to see what others in this community have to say regarding the use of OutSystems platform purely as an integration technology. What are some compelling reasons that would make me select OutSystems over, for example, Apache Camel - for routing, message transformation, aggregation and connecting disparate transports?

In this case, we will NOT be utilizing the BPT module or the web screen development or the mobile page development capabilities. If one was to use OutSystems mainly to create one stateless web service (no database persistence required so the entity management capability will NOT be used), consume several other SOAP web services, orchestrate other services and also have to integrate with some other host technologies (MoM such as MQ and other, REST services etc.), do you think it will be using the OS platform sub-optimally?
Also required will be ways to listen to queues and invoke a web service when a message of interest arrives.

Thank you,
Well, OS is optimized to do web and you don't want to use the web screen or the mobile page functionalities. Although based on that anyone would say it is not a good idea, in fact, it depends on the complexity of what you intend. It can be faster to develop and if it can save you another software licence and server while keeping your developers happy, why not?

OS can easily send to file, email, web services, database. Can also receive from those same places.
About queuing I wouldn't trust 100%, but again, it will depend on what you want.

It is faster than MS Biztalk Server to do orchestrations, specially if you can reuse components between projects.
Specially in the aggregation and splitting of messages.
About the mapping functionalities, it can be fast if you go with native xslt, or slow if you do it with xml functions. In non xml formats I have no idea if it would be any good.

I've worked in XSLT and Biztalk over the last eight years and would switch it all to OS in a minute if an opportunity appeared. So far, all I did was a quick generation of EDI invoice status based on an Excel list, and next month will try to do a mapping from one infopath template to another.
Pradeep -

As Nuno said, OutSystems is not specialized for that kind of work... but my experience has been that it is FAR nicer to work with than the tools that *are* specialized for it, and I do not give up too much by using OutSystems over them.

Thank you Nuno and Justin.

I work for an analytics company and OutSystems is a partner of ours. I do like OutSystems platform and its capabilities in the BPT, user interface, mobile app development space. I advise my customers on technology choice so we are not taking about a single enterprise deploying OutSystems here. We are talking about new corporations that may not necessarily have OutSystems license and may already have deployed other EAI tools. So I do not want to fit a square peg in a round hole.

Both answers refer to how easy it is to use OutSystems and I do agree with that in general. However, does the same argument apply, when we extend the platform to use cases where it was not originally designed for - as you both allude to this is one such use case? Does using this level of abstraction make maintainenance more complicated in the future? I was particularly interested in finding out if others in the community have actually used the platform in this manner in production? and if so, what has the experience been like?

Let's discuss a simple example. Let's assume you need to create a web service using this platform, the SLA for which is 3 seconds. Now this web service has to invoke 3 other independent web services (each of which have an SLA of 1 second), consolidate all the individual responses, act upon this consolidated message (decisions) and then send the final result back to the caller in a synchronous manner. Could you educate me how we go about doing this easily?

This is a simple example and I am sure you would have encountered, in complex EAI projects, message structures that are often quite complicated, may not always be XML (yes), different transports to use and the like. If these kinds of integrations need to be built using custom extensions from scratch, will that not defeat the purpose of using the agile platform?

Thank you,
Custom extensions built from stratch for single use? Is out of purpose. But custom extensions for reuse, that's a different story.

To do parallel requests, you'll need to store them in database where other processes (OS or not) will pick each one and return an answer. But forget an SLA measured in seconds.

If those 1 second requests can be serialized it's simple (probably it will respect the time, but very close to the deadline):

For less urgent flows, OS would be my option.