PM4Py Web Services

PM4Py Web Services

Repositoryhttps://github.com/pm4py/pm4py-ws

Docker imagehttps://hub.docker.com/r/javert899/pm4pyws

PM4Py Web Services are offered with the following goals:

  • Provide an easy entrypoint for the integration of process discovery and other process mining features in custom interfaces or external business intelligence tools.
  • Provide students and academics a platform that they can actually easily develop following modern software engineering guidelines (testing, documentation, clear separation between stacks, separation from the front-end).

In the development of PM4Py-WS, similar guidelines to PM4Py were followed. The chosen paradigma is the RESTful one, with a particular focus on:

  • Ease of integration: each element (logging handler, session manager, log manager) is provided through a factory method.
  • Clear separation between stacks: the method that offers the service shall not contain any business logic/algorithm
  • Usage of well-supported formats: the return objects from the services shall be in a format that could be easily viewed by any browser.
  • Independence from the front-end: the implementation of the web services is independent from the front-end implementation. In such a way, many different front-ends can be integrated with the services.
  • Documentation: extensive documentation is provided for the API and for the handlers, in such a way existing services can be easily called from other applications, new services can be easily integrated in PM4Py-WS and handlers can be easily adapted to any existing solution stack.

Services are exposed as asynchronous REST GET/POST services using the Flask framework. The Flask framework leads to several advantages: possibility to deploy the services using HTTP/HTTPS, to use an enterprise-grade server (e.g. IIS, UWSGI), managing the Cross-Origin Resource Sharing (CORS).