Agents Ecosystem Developer Guide


The Agents Ecosystem is composed of a set of agents built to communicate with each other and with other platform’s components to perform an automated negotiation. To achieve this, an Agent includes modules to support different communication protocols using their own communication language called CXL (Composition eXchange Language) derived from the FIPA ACL communication standard.

Agents are differentiated by the following roles:

  • Requester: Represents a company who is requesting for a service or/and a related good
  • Supplier: Represents a company who provides a service

Agents register themselves to the Agent Management Service (AMS) once they join the Agent Ecosystem. The AMS keep track of each agent running on the system and provide them with additional services, also leveraging on the Matchmaker.

The Online Bidding Process is a stand-alone component that is also made of agents representing companies to enable them to perform automated negotiation following predefined protocols and logics. The platform coming from the COMPOSITION project expects that each agent should be manually built and deployed together with an ad-hoc designed UI for each company taking into account the needs and the use cases. The general design approach for EFPF was to move from a custom solution to a more generic one in order to satisfy user requirements.

Design and architecture

The agents are designed to join a distributed ecosystem where each component lives by his own and communicate between each other through a broker. Each agent can be deployed ideally everywhere, joining the ecosystem by registering to the AMS and communicating with the other agents through a broker. For EFPF Ecosystem purposes the agents are deployed by the Agent Deployer to the Agent Pool behind a Nginx proxy server to make them reachable independently.

Each Agent represents a company and could be of one of the two type specified above (requester or supplier). An agent is written in Python and lives inside a Docker container, equipped with modules to support communication protocols, logics and REST interfaces.

Each Agent provides a set of APIs to enable the User Interface to interact with it by starting new bidding processes or by changing configurations parameters. The Agent updates and makes available the data about the running bidding processes by the means of the APIs exposed by the UI.

The dashboard of each Agent is available through the EFPF Portal that offers a full control over it, from the creation time to the bidding processes management and configuration.

Figure 1. Agent Ecosystem communications


The table below contains the technology used for the development of each Agent Ecosystem architecture component.

Component Technology
Agents Python - Docker
Agent Management Service Python
Rest Services Flask - CherryPy
Broker RabbitMQ
Database MySQL