TDG Rafael Z.Frantz Committed to research! TDG Site Manager 1.1

Guaraná DSL


         Guaraná DSL is a Domain-Specific Language (DSL) to design Enterprise Application Integration (EAI) solutions at a high-level of abstraction.

The resulting models obtained with Guaraná DSL are platform-independent, so engineers do not need to have skills on a low-level integration technology when designing their solutions. Furthermore, this design can be re-used to automatically generate executable EAI solutions for different target technologies. This is something that can be achieved by means of Model Driven Architecture.  Catch a glimpse at the Integration Stack with the abstraction levels for an integration solution and see where Guaraná DSL fits. Note that Guaraná DSL is the language you can use to design your EAI solutions. Currently we are working on a java implementation of this language, called Guaraná SDK. We kindly invite you to have a look at it, download it, try it and give us your ;-)

        Functionality and structure of an EAI solution are completely defined by using the language building blocks, ports, tasks, decorator, slots and integration links. Guaraná's tasks are based on the Enterprise Integration Patterns (EIP Patterns) by Gregor Hohpe and Bobby Woolf.  It is possible to design the internal structure of all kinds of building blocks (wrappers and integration processes) and its communication ports (entry port, exit port, solicitor port and responder port) by using tasks; it is also possible, to create integration flows that allow applications to collaborate by connecting these building blocks by means of integration links. Applications that participate in the integration solution are documented using decorators as well as its layers being used as communication interface.

Keep on reading about Guaraná!
Article: A Domain-Specific Language to Design Enterprise Application Integration Solutions [BibTex]


:: Download here the Guaraná DSL language icons - NEW


Abstract view of a typical EAI solution

      A typical integration solution involves several wrapping processes used to communicate the solution with applications and several integration processes that implement the integration business logic. Processes use ports to communicate with each other or with applications over communication channels. Ports encapsulate tasks functionalities like poll and write; and help abstract away from the details of the communication mechanism, which may range from an RPC-based protocol over HTTP to a document-based protocol implemented on a database management system. Roughly speaking, a solution is only a logical way to organise a set of processes. Thus, different solutions can share the same process, and a solution can logically contain another solution if the former involves the process of the latter. Below you have an abstract view of a typical EAI solution. Please, refer to other examples of detailed solution at the end of this page.



Tasks to be used inside processes

      Below you can see a list of XML, Stream  and Composite tasks which take part of Guaraná  DSL. Please, have a look at the API Documentation of Guaraná SDK for more information about each task and other constructors as well.

         Currently we are working on a Java Framework for Guaraná DSL and on a Java Toolkit which implements this framework. As part of the effort to reduce costs of enterprise application integration solutions Guaraná also introduces a novel Runtime System to execute EAI solutions implemented with the Guaraná Toolkit. I invite you to learn more about this runtime system here.

:: XML Tasks

An XML task gets messages from its input gateways, processes its body content which is XML format and publish this message to the output gateway.


:: Stream Tasks

An stream dealer gets one message from its input gateways, adapts its body content which is stream format and publish this message to the output gateway.


:: Composite Tasks

Composite tasks represent patterns that can be achieved by the composition of other tasks. Below we present two composite tasks supported by Guaraná and in the following we look how this patterns can be achieved.


This is how they can be build:


More information about Guaraná DSL


Examples of EAI solutions designed with Guaraná DSL


Automatic code generation