CHOReOS was an FP7 project. It is now fully completed. This website is kept open for information purpose only, it is not updated. Please visit CHOReVOLUTION the project that takes over from CHOReOS. Enactment Engine Documentation (Documentation.enactment_engine_doc)

Enactment Engine Documentation

Cloud Middleware: CHOReOS Enactment Engine

The CHOReOS Enactment Engine provides a Platform as a Service (PaaS) that automates the distributed deployment of service choreographies in cloud environments.

Read the Paper

Read the definite paper on the enactment engine. Deploying large-scale service compositions on the cloud with the CHOReOS Enactment Engine. Leonardo Leite, Carlos Eduardo Moreira, Daniel Cordeiro, Marco Aurélio Gerosa, Fabio Kon. In: IEEE 13th International Symposium on Network Computing and Applications (NCA), pp 121 - 128, 2014. The published version on IEEE Xplore Digital Library is here.


  • Automated creation of cloud nodes (virtual machines).
  • APIs to automate the deployment of services on the cloud.
  • Multi-cloud support.
  • Usage of legacy services within a choreography.
  • Support to CHOReOS Coordination Delegates deployment within a choreography.
  • Automated deployment of monitoring infrastructure:
    • Ganglia to monitor low level resources (memory, cpu, and disk) of cloud nodes;
    • Distributed Service Bus nodes (EasyESB) to service-level monitoring through interception of services invocations.
  • Automatic deletion of unused cloud resources.
  • APIs to vertical and horizontal scaling.
  • Automated deployment of XSB components to intermediate the communication among heterogeneous services.

How does it work

Enactment Engine (EE) is an open source middleware that provides an Platform as a Service (PaaS) layer to automate choreography deployment. The person responsible for the deployment of a choreography (the deployer) may write a simple declarative choreography description and leave it to Enactment Engine to perform all the deployment process, installing choreography services in a virtualized environment using several virtual machines.

Enactment Engine depends on an Infrastructure as a Layer (IaaS) provider. The role of this IaaS provider is to provide virtual machines (VMs). EE decides how many VMs to create as well as which service install in each VM, and installs the service on the selected VM together with the required platform dependencies (Operational System configurations, application servers, etc.).

Enactment Engine seen from the perspective of Cloud Computing layers.

Deployers that would like to use Enactment Engine to deploy their choreographies must first set up and start EE as a service. Afterwards, the deployer must write the choreography specification in XML format and use the EE REST interface to request the choreography deployment.

Targeted audience

Deployers that would like to automate the deployment of a service composition. This is specially useful in large-scale choreography deployments where manual deployment would be too much time consuming and error prone. Automated deployment is also very useful when choreographies must be redeployed frequently, which may happen for testing purposes. Therefore, automated deployment leverages the construction of an automated acceptance test suite, which brings agility to the software development process.


The main requirements to run Enactment Engine are an IaaS provider account and a Chef Server account.

The IaaS providers supported out of the box are Amazon EC2 and Open Stack. Please note that, when using Amazon as the IaaS provider, you are responsible for the costs. Similarly, when using Open Stack, you are responsible for setting up and administering an Open Stack instance (or getting access to an already existing one).

Chef is an open source management system used to maintain software configuration in cloud nodes, where software configuration encompasses Operational System packages, etc. You may install your own Chef Server or pay to use a Hosted Chef Server from Opscode.

You need also a server to install and run Enactment Engine as a service. Such server may be able to run Java 6 and Maven 3.

Supported technologies

Enactment Engine deploys web services developed by their clients. Such services may use different technologies, standards, languages, etc. Out of the box, EE supports SOAP services distributed as JAR or WAR packages. EE has an extensible design to allow for its customization so new types of services may be deployed by it.

Enactment Engine also supports multi-cloud deployment, which means the services of a single choreography may be distributed among different clouds. The current supported cloud technologies to instantiate virtual machines are Amazon EC2 and Open Stack. Enactment Engine may be also easily extended to support new cloud technologies.

Source code


The EE's license is the Mozilla Public License v2, which means you are free to use Enactment Engine within your business, and that services provided by EE may be invoked from any software application. It also means you are invited to contribute to the EE improvement as long the original source code remains open.

User guide


  • Leonardo Leite.
  • E-mail: leofl at ime dot usp dot br

This wiki is licensed under a Creative Commons 2.0 license - Legal Notice
XWiki Enterprise 5.4.6 - Documentation
Site maintained by