PM4Py Web Services
Docker image: https://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).