The architecture of m-Power reports allow them to query data from a variety of sources, including:
- -A database, via a JDBC connection
- -Web Services
This documentation will focus on the final point listed above, In-Memory Reporting. It is important to note that while In-Memory Reporting may offer considerable performance advantages from Web Services and database connections, it is only recommended to use in limited situations. One common use of in-memory reporting is for use in high visibility graphing and dashboards. Other good uses of this feature would include any case where data is somewhat stagnant yet frequently accessed.
To begin, developers first need to create a Summary application type, using the In-Memory Summary template. When this template is compiled and run, the generated data will be stored on the application server rather than the database. It is recommended to use m-Power's Messaging and Scheduled Task feature to automate the regular running of this summary, allowing the data to refresh as needed.
Once the summary has been created, build your Report and select your In-Memory summary table. Please note that since In-Memory Reporting does not utilize the database whatsoever, some common m-Power features will not be available, including table joins and database calculations. If joins or database calculations are needed, you are encouraged to implement these within the summary application.
The embedded video below explains the process in more detail:
Continue building the report as you would build any other standard application. At run-time your application will query the In-Memory data set rather than the database.
Note: The first time the data set is run, the performance may be slower than normal, as extra overhead is required to load the data into memory.
Note: Since the data set was generated from a summary, please remember that the data will be stagnant until the summary is re-run allowing the data to be updated.
Note: Because the data lives in-memory, any dropdown lists that are added to record selections need to access data from an External application.