- What is a reporting manager? and how is it configured/setup?
- What are the prerequisites to setup?
Reporting manager is a java module which is used to generate/create report on the basis of reports configuration. It creates/generates reports of xls, xlsx, csv,txt format. It generates report
and save generated report details (report name, path, content, to whom report was generated etc.) into the database.
Main purpose of reporting manager is to generate report and send those reports to an employee or group of employees.
- Generates various type of reports like xlsx, xls, csv,txt on the basis of configuration.
- Log each report generation process in DB tables so that it can be used as statistics and find an issue easily if there is any.
- We can configure a report in following frequency with defined timings:
- Once in a month
- On specific dates of a month
- Once in a week
- On specific days of a week
- On daily basis
- On multiple times in a day (every hour, every two hour etc)
- We can configure a report to be generated/sent to below:
- specific to Employees
- group of Employees
- to a group having specific role
- combination of above three
- Email body for a report can be static or dynamic. Dynamic body & subject of report can be fetched from DB procedure on the basis of report id.
- Report file can be sent as attachment as well as url on the basis of configuration.
- To generate dynamic file name of a report, file name can be appended with Date,Date-Time,Random No(5 digits).
- Reports Deletion on the basis of time frame can be configured. for example: delete all report from a path older than x days.
- We can ZIP a generated report on the basis of configuration
- We can generate password protected reports(Excel, CSV).
- Java & Spring boot framework
- JPA, Lombok
- Maven to build the project
- Java version 8
Below are the steps to configure Reporting Manager in a Project:
Download the latest versioned jar file from git/artifactory. If you don’t know the latest version, contact server infra team or product team
Create a folder ( Reporting Manager ) where you want to keep it in server and put the following files in that directory (sample screenshot of directory structure is given below):
downloaded jar from step-1
new “resource” folder. This folder will have application.properties. application.properties file is attached in document (change details in this file according to your server)
“reporting.sh” file. Example of sample sh file is attached in document (change path in sh file according to your path)
Run Script reporting.sh. If success then it will create required tables in database. If failure then check error and correct this issue.
Schedule “reporting.sh” for every hour(suggested). if any report is configured in less than one hour then schedule as per your requirement.
This is the table that you will do first one time setup:
For any new report to be configured, you will configure in this table:
If USE_TEMPLATE is 1 in Reports_def then template configuration to be provided:
If report is configure for a particular role of the employee and we want to exclude some employees to whom report shouldn’t be send then we’ll configure employee ids for those employee in this table(“rm_exclusion_definition”) along with report id.
If you have configured a report and report is not generated then first you need to check LAST_ATTEMPT_FAILURE_TYPE there in Reports Definition, there might be two issues:
- Validation Error: It means, when cron job ran then this report was allowed to be generated and reason for same can be find out in table “RM_VALIDATION_ERRORS”
- Execution Error: It means, when cron job ran then this report was attempted to generate but could not be able to generate. Error details can be checked in tables “RM_LOGS_SUMMARY” & “RM_LOGS_DETAILS”.
If you want to purge report files then table(“RM_PURGE_DEFINITION”) is used to configure the purge details for a specific path location. We can configure number of days in it to retain reports for a particular report location.
Does it also support Postgres Database?
@VivekBhardwaj Yes, It’s