Guaraná DSL

Stable release|

1.4.0 beta

Written in| Java
Operating system| Cross-platform
Type| Enterprise Integration Patterns Domain-specific language
Website| http://www.tdg-seville.info/rzfrantz/guarana

Guaraná DSL is a domain-specific language (DSL) to design enterprise application integration (EAI) solutions at a high level of abstraction.[1] The resulting models 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.[2]

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) of 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) 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.

## Main constructors in Guaraná DSL

[edit]

Below is a list of the main constructor of Guaraná DSL.

Decorators: to provide visual information about the participating applications in the EAI solution and their layer(s).

Processes: serve two purposes, namely: there are processes that allow to wrap applications and processes that allow to integrate them. The former are reusable processes that endow an application with a message-oriented API that simplifies interacting with it. Implementing such a wrapping process may range from using a JDBC driver to interact with a database to implementing a scrapper that emulates the behaviour of a person who interacts with a user interface. Generally speaking, this is known as wrapping an application in the literature. Integration processes, on the contrary, are intended to orchestrate the interactions with a number of wrapping processes and other integration processes. Processes rely on tasks to perform their wrapping or their orchestration activities. Simply put, a process can be viewed as a message processor.

Slots: are memory buffers used within building blocks for port to task and task to task internal communications.

Tasks: are message processing constructors and appear inside processes and wrappers. A task reads messages from incoming slots, processes them (e.g. enriches, translates, filters, etc.) and deposits the result in the outcome slot. Part of them are based on the enterprise integration patterns proposed by Gregor Hohpe and Bobby Woolf.

Ports: are used to communicate the internal building blocks of an EAI solution and the EAI solution with its applications. Integration links: are channels that transport messages between building blocks. They are used to connect the entry/exit ports used by building blocks.

An example of EAI solution designed with Guaraná DSL:

## Guaraná and other technologies

[edit]

Studies comparing Guaraná DSL with other technologies:

* Guaraná x Acceleo [3]
* Guaraná x Camel, Mule, ServiceMix, SpringIntegration and BizTalk Server [4]

## Enterprises using Guaraná DSL

[edit]

* i2Factory: Smart Innovation [1]

## References

[edit]

1. ^ Zancan Frantz, Rafael (2010-06-01). "Guaraná DSL Home". Retrieved 2010-06-01.
2. ^ Hassan A. et al. Towards Automatic Code Generation for EAI Solutions using DSL Tools, JISBD, 134-145. 2009.
3. ^ Gisele Pinheiro Souza. Modelagem de Sistemas Distribuídos usando MDA, URL:https://saloon.inf.ufrgs.b[permanent dead link]r/twiki-data/Disciplinas/CMP157/TF09GiselePSouza/TF09_2_RelatorioGiselePSouza.pdf. 2009. (in Portuguese)
4. ^ Rafael Z. Frantz et al. Advances in a DSL for Application Integration, ZOCO, 54-66. 2008.

## Academic publications

[edit]

* A Proposal to Detect Errors in Enterprise Application Integration Solutions, Journal of Systems and Software (JSS). First published online. - http://www.guarana-project.net/rzfrantz/publications/jss-2011.pdf[permanent dead link]
* Software Development Kit to Implement Integration Solutions, In 27th Symposium On Applied Computing (SAC). 2012. (To be published). - http://www.guarana-project.net/rzfrantz/publications/sac-2012.pdf Archived 2016-03-04 at the Wayback Machine
* An Efficient Orchestration Engine for the Cloud, In 3rd IEEE International Conference on Coud Computing Technology and Science (CloudCom). 711-716. 2011. - http://www.guarana-project.net/rzfrantz/publications/cloud-com-2011.pdf Archived 2016-03-04 at the Wayback Machine
* A Domain-Specific Language to Design Enterprise Application Integration Solutions, International Journal of Cooperative Information Systems (IJCIS), Vol. 20, No. 2. (May 2011), pp. 143–176. - http://www.guarana-project.net/rzfrantz/publications/ijcis-2011.pdf Archived 2016-03-04 at the Wayback Machine
* A Roadmap on Integrating Applications and Data on the Web, In Conference on Software Engineering and Databases (JISBD). 133-142. 2010. - http://www.guarana-project.net/rzfrantz/publications/jisbd-2010.pdf Archived 2016-03-04 at the Wayback Machine
* On the Design of a Domain Specific Language for Enterprise Application Integration Solutions In 2nd International Workshop on Model-Driven Service Engineering (MOSE in TOOLS). V608. 19-30. 2010. - http://www.guarana-project.net/rzfrantz/publications/mose-2010.pdf Archived 2016-03-04 at the Wayback Machine
* Towards Automatic Code Generation for EAI Solutions using DSL Tools, In Conference on Software Engineering and Databases (JISBD). 134-145. 2009. - http://www.guarana-project.net/rzfrantz/publications/jisbd-2009.pdf[permanent dead link]
* Towards a Fault-Tolerant Architecture for Enterprise Application Integration Solutions, In On the Move Federated Conferences (OTM). 2009. http://www.guarana-project.net/rzfrantz/publications/iwssa-2009.pdf Archived 2016-03-04 at the Wayback Machine
* Una Comparación de ESBs desde la Perspectiva de la Integración de Aplicaciones, In Conference on Software Engineering and Databases (JISBD). 2008. (in Spanish) - http://www.guarana-project.net/rzfrantz/publications/jisbd-2008.pdf[permanent dead link]
* Advances in a DSL for Application Integration, ZOCO, 54-66. 2008. - http://www.guarana-project.net/rzfrantz/publications/zoco-2008.pdf[permanent dead link]

## Books

[edit]

* Hohpe, Gregor; Bobby Woolf (2003). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. ISBN 0-321-20068-3.

## External links

[edit]

* Guaraná DSL Archived 2011-07-22 at the Wayback Machine
* Guaraná SDK
* Guaraná Connecting Solutions Archived 2014-03-03 at the Wayback Machine