UIM/CABI - Scheduled dashboards to pdf files, show the graph layout but the data section displays as "Loading.."

Document ID : KB000075006
Last Modified Date : 17/09/2018
Show Technical Document Details
Introduction:
Scheduled dashboards to pdf files, show the graph layout but the data section displays as "Loading.." 

Depending on the circumstances, a given graphical element (such as a chart, a map, or a widget) in a report can be rendered in two ways:

• When run directly in the web UI, the browser itself renders the chart.
• When scheduled to run later or run in the background, an internal engine renders the chart.

By default, JasperReports Server's internal JavaScript engine is Rhino, which is an excellent solution for most cases; most JasperReports Server users can accept this default. However, you may want to investigate other engines if you encounter any of the following issues when scheduling chart-based reports or running them in the background:

• Poor performance when generating complex charts or charts that contain large volumes of data.
• Out of memory messages.
• Incorrect scaling when certain Pro Chart reports are printed.
• Results that don't match those generated when the report is run directly in the web UI. For example, text elements incorrectly sized or placed.

An alternative engine is provided in our installers; PhantomJS executes JavaScript when generating graphical reports that are run in the background or scheduled. PhantomJS is a headless WebKit with JavaScript API. To use PhantomJS when JasperReports Server is installed from the WAR file, download the correct version for your environment from PhantomJS and install it on the computer hosting JasperReports Server. For installation instructions, refer to the documentation provided with PhantomJS.

Once PhantomJS is installed, point JasperReports Server to its location. You can configure several processes to use PhantomJS: HighCharts generation, Pro Charts generation (including Pro Widgets and Pro Maps), and exporting dashboards.

More details here, Configuring a JavaScript Engine for Graphical Report Rendering - https://community.jaspersoft.com/documentation/tibco-jasperreports-server-administrator-guide/v640/configuring-jasperreports-library#Configuring_a_JavaScript_Engine 
Environment:
Environment details: 
- UIM 8.51 
- cabi probe (bundled) v3.20 
- robot v7.80 (where cabi is running) 
- uim_cabi_health_report_pack v1.20 
- uim_core_dashboard_pack v2.40 
- uim_unified_report_pack v1.02 
- ump_cabi v3.20
Instructions:
*YOU MUST HAVE phantom.js INSTALLED AND IN PLACE PRIOR TO MAKING THESE CHANGES*

See the following article for steps on installing phantom.js: UIM/CABI, Export Dashboards to PDF files, appear blank as an empty document - https://comm.support.ca.com/kb/uim-cabi-scheduled-dashboards-to-pdf-files-appear-blank-and-display-no-data/KB000074494

1. Stop the CABI robot service. 

2. Take a backup of the \Nimsoft\probes\service\wasp\webapps\cabijs\WEB-INF\classes\jasperreports.properties file. 

3. Once a backup file has been created, modify the file and add the following properties: 

- com.jaspersoft.jasperreports.fusion.phantomjs.executable.timeout=600000
- com.jaspersoft.jasperreports.highcharts.phantomjs.executable.timeout=600000

Example of where to add those lines: 

# highcharts: phantomjs's executable absolute path
#com.jaspersoft.jasperreports.highcharts.phantomjs.executable.path=path/to/phantomjs
com.jaspersoft.jasperreports.highcharts.phantomjs.executable.path=D:\\phantomjs-2.1.1\\bin\\phantomjs.exe
com.jaspersoft.jasperreports.highcharts.phantomjs.executable.timeout=600000

# fusioncharts: phantomjs's executable absolute path
#com.jaspersoft.jasperreports.fusion.phantomjs.executable.path=path/to/phantomjs
com.jaspersoft.jasperreports.fusion.phantomjs.executable.path=D:\\phantomjs-2.1.1\\bin\\phantomjs.exe
com.jaspersoft.jasperreports.fusion.phantomjs.executable.timeout=600000

*NOTE: The value 600000 is milliseconds*

4. Save the jasperreports.properties file.

5. Restart the CABI Robot Service and wait for all probes to turn green (get port and pid) 

6. Re-test generating a scheduled report.