Platform extensions
There are several ways to extend the functionalities of Netgrif Platform. If you need some more functions or integrate your processes with external systems, you can use two ways to extend the platform.
Module
A module is a Java Spring bean that is loaded into a worker (Application Engine instance), extending the worker with additional functionality.
Modules are loaded during worker startup using the same classloader as the worker. As a result, they have access to the Application Engine services.
Because a module is loaded at startup, it cannot be updated or changed at runtime. Any changes require restarting the worker. For this reason, modules are not recommended for integrations or functions that need high computational power or need to scale the use of the platform.
Plugin
A plugin is a microservice that extends the platform by defining additional functionality (APIs) and/or it listens to the platform events.
Currently, plugins are implemented as Spring Boot applications and are maintained as nodes within the platform cluster. The cluster fully manages the plugin lifecycle, including registration, API propagation, and communication with other cluster components.
Because plugin runs as standalone microservice, it can be scaled independently of cluster workers as needed. Plugins can be added or removed from the cluster at runtime. For this reason, it is recommended to implement platform extensions as plugins first.
