Fluent Manager component diagram
Fluent Template Manager
Do you know what goes on behind the scenes of the Fluent Manager? This documentation describes and shows the main components of Fluent Manager, and how these components interact with the Designer, Engine and end user.
The Manager itself consists of three parts: backend, frontend and db. All these parts are essentially Docker containers and each performs its own role.
The backend is developed in Java using Spring and its main role is to provide a REST API for managing templates, data sources, RESTful Engines, workspaces, users, permissions and much more.
The backend communicates with the PostgreSQL relational database by using the jdbc:postgres
driver. Through this communication channel, the backend can receive persistent data about templates, data sources, etc.
The frontend component performs communication with the backend and provides the ability to use a convenient interface to visualize the management of all resources. This UI part is accessible to the user through the browser.
Despite the fact that all 3 components are in different Docker containers, they are still able to see each other. In the event when the Manager is run with Docker Compose, this is achieved by the shared Docker network. If the Manager is deployed using Kubernetes, then all components are in the same cluster and in the same namespace. Thanks to this, for both Docker Compose and Kubernetes, the communication between all components can occur through the service name. For example, the frontend calls the backend with http://[backend-service-name]:8080
, where [backend-service-name]
is backend by default.
Another example is that the backend connects to the database by jdbc:postgresql://[FLUENT_MANAGER_DATABASE_URL]/[FLUENT_MANAGER_DATABASE_NAME]
, where FLUENT_MANAGER_DATABASE_URL
is an environment variable that that corresponds to the address of the database service, and FLUENT_MANAGER_DATABASE_NAME
is the variable responsible for the name of the database. Associated addresses and names can be changed during deployment.
Another component without which the Manager would be meaningless is the Designer. The Designer is an MS Office add-on that allows you to author templates directly in Word, Excel or PowerPoint. The Manager allows you to use the Designer through the WebDav protocol, which means that when you save a template, it will be automatically loaded into the Manager.
Another way for the Designer and Manager to interact is to start editing the template on the local computer and once it's ready, to load it into the Manager, either through a normal import or by going to the Fluent Tools -> Fluent Manager tab in the Designer.
The third part of the puzzle are the Fluent Engines (RESTful Engines or Java/.NET Engines). Fluent Engines are the processing Engines for templates created with the Fluent Designer. The Engines combine the template with data coming from data sources to create the final document and output it in the desired format.
When you initialize the Manager, you will need to attach at least one RESTful Engine to the Manager. The Manager will be able to monitor the health of the attached Engine and will also cache templates on this Engine to speed up reporting. This means that when importing, creating a new version, rolling back to a previous version, or copying a template in the Manager, this template will be placed in the RESTful Engine cache. Documents can then be generated based on this cached template by sending a request to the RESTful Engine containing the following connection string with the path to the cached template file://templates/[template-name]
.
Or another approach to generate a template is to export the latest version of the template, put it in a place where it is available to the Java/.NET Engine, and generate documents based on this template.
REST API services
What if you want to create your own client or implement templates management features and embed them into an existing application? In this case you should consider using our API services.
There are two API services that can be used in this case, but you will get more advantages when using them together.
The first service (RESTful Engine API) is responsible for processing, parsing, and generating reports based on the template with the data sources and parameters specified for it. By using the endpoints of this service, you can upload your template and receive an output document of the specified type. You can also request information about tags, input parameters, data sources and other metadata fields for your template. To use this API service, you will need a corresponding license. You can find more information here and also check the Swagger docs.
The second API service (Fluent Manager REST API) includes additional template management features with which you can not only upload and store your files, but also create and connect your own data sources, manage different versions of templates, configure and separate the environment for different stages of template development. You will also be able to connect the required number of RESTful Engines for file processing. By exposing templates, you can interact with the Designer application. You can easily control templates and its dependencies.
Do you need to limit access to your templates and application aspects? This is possible with the Manager API. Are you getting lost in numerous templates and data? The Manager API also helps here. Your company uses SSO for accessing data and you don't want to waste time on implementing a new authentication mechanism for the app - use the Fluent Manager REST API for the simplest integration. Here you can find more information about the Manager API. Swagger docs are accesible using this URL: http(s)://\<Manager API service path>/api/swagger-ui