JSA App Development Overview
Use the JSA GUI Application Framework to develop new application modules that integrate with JSA and provide new capabilities.
Applications or apps are small plug-in modules to the GUI Application Framework. Apps serve endpoints from within a secure container to inject the content directly into the JSA web interface.
Each app has its own dedicated memory allocation and a defined amount of CPU resources that are allocated to it.
The main web language that is used to author an application is Python, and the Flask framework is integrated and available for use by the application.
If an app is running in an IPV6 environment and the app sends log messages to the JSA host's Syslog (e.g. via the qpylib.log function), then the app container must be configured to use Python 2.7 in order for the Python SysLogHandler to successfully send the messages. For more information, see Use Python 2.7 in Your App .
How an Application Runs and Interacts with JSA
JSA applications run inside an isolated Python Flask environment that is independent of the JSA user interface.
The application can also use static images, scripts, and HTML pages.
All interaction with the application is proxied through the JSA user interface. No direct access to network ports or web services is usually permitted.
The combined memory requirements of all the apps that are installed on a JSA Console cannot exceed 10 per cent of the total available memory. If you install an app that causes the 10 per cent memory limit to be exceeded, the app does not work.
If your app requires a minimum memory allocation, you must provide information about it in your app's documentation.
Apps That Require Internet Access
If the app that you develop requires internet access, you must implement proxy support in your app. Apps can't use the proxy support that is built into JSA.
Types Of App
The JSA GUI Application Framework supports the following app types that are described in the following table.
Table 1: Types Of App
Areas (or visualizations)
New screen that is presented in a new tab.
New right click menu options available with the JSA GUI.
New toolbar buttons, with the enabling code that runs from the confines of the app.
New dashboard widgets, with the HTML served from a particular app.
New Admin tab, configuration, and setup screens.
Hover Over metadata
Injection of hover over metadata into existing hover over areas.
Partial support of Java style key value pair properties files to provide some level of globalization support.
Inject custom HTML fragments into the JSA UI.
Add columns with custom content to tables in the JSA
The app type content is dynamically injected back into the GUI display.
Apps are packaged as compressed archives (.zip), within the extension archive. You can install and uninstall apps by using RESTful endpoints. More RESTful endpoints exist to control the lifecycle of an app within JSA.
As a best practice, store your app configuration and data in
/store because data in this directory is protected
during app upgrades.
For more information about JSA application framework REST API endpoints, see GUI Application Framework REST API Endpoints.