Alegre - BPMN

Overview

Alegre is a Cumbia-based implementation of a subset of BPMN. Unlike other case studies, where we implemented metamodels that represented both the language structure and semantics, in the case of Alegre we separated these two things.

On the one hand, we created a metamodel representing only the abstract syntax of BPMN (MM BPMN) and then we developed a generator that converted models conformant to MM BPMN into models conformant to MM XPM_BPMN. This latter metamodel is an extension to XPM which implements the particular behavioral semantics of BPMN. This whole approach can be seen in the following figure.

Alegre approach

As with most intermediate languages, the presence of XPM_BPMN is transparent to participants in the BPMN process. The state of the BPMN models can be normally used and queried, and it responds and reacts exactly as if the semantics were implemented within it.

There were two goals behind the development of Alegre that were satisfied. The first one was to validate the capacity of Cumbia to support the semantics of BPMN like languages. The second one, was to verify the capacity of XPMl to act as an intermediate workflow language, and evaluate the advantages and disadvantages of this implementation strategy. Although these goals were fulfilled, we concluded that it is better to make direct implementations of the languages, and forgo the intermediate language approach.

There are a few reasons, from different points of view, that led us to this conclusion. From the point of view of the implementor of the engine, this architecture created some difficulties. On the one hand, the semantics of BPMN still had to be implemented, although it ended up scattered across the BPMN metamodel, the XPM_BPMN metamodel, and even the model generator. Compared to the scenarios where the semantics of the languages are packaged inside metamodels, we consider that the Alegre solution is more difficult to maintain and to evolve. Another problem is that three different mappings had to be considered: the first one served to convert BPMN models into XPM_BPMN models; the second one served to convert requests from BPMN to XPM_BPMN, and the third one served to convert XPM_BPMN state updates and responses into BPMN state updates and responses. Creating those mappings for the case study was not trivial, and maintaining similar mappings in the face of language evolution can also be a considerable problem.

Other documents (in Spanish)

Pablo Márquez: Composición de modelos ejecutables para la construcción de motores de lenguajes específicos pdf