HDF Product Designer has three main components: Desktop Client, RESTful Server, and Data Store. The fourth component, HDF5 Server, at present provides the online validation services, such as those afforded by the Hyrax and THREDDS data servers. The best approach to integrating it with the other components is being investigated.
The main components are described in more detail below.
The client is the only part of the system directly accessible to users. It serves as the GUI front end to the capabilities provided by the RESTful server. It is written in Python using the wxPython GUI toolkit. This makes it possible to support the three major computing platforms (Windows, macOS, and Linux) from the same source code while maintaining the native GUI look and feel.
Besides providing GUI functionality to the standard HDF5 content editing, the capabilities unique to the client are design import and convention-based support during design development phase. For design import, the client reads in file content description in several supported formats and translates it into the series of web requests to the RESTful server which is responsible for storing that information.
Convention support during design development phase is achieved by running internally a CLIPS rule engine and executing a set of rules applicable for specific convention and editing action, for example, creating an HDF5 dataset and the CF convention. PyCLIPS module is used as the interface between the client and the CLIPS engine.
This server provides the back end support for all the capabilities of the HDF Product Designer. These capabilities are exposed as RESTful application programming interface with the intention to allow more than one client application to be developed. The client-server communication is secure because only requests that use the HTTPS communication protocol are accepted.
Capabilities unique to the server are:
- User authentication
- Create, read, update, delete project/design actions
- Design export (template file, source code)
- Generate design template files for validation services
The store is the data persistence layer of the HDF Product Designer. It keeps all the information about users, projects, designs, HDF5 objects, and their relationships. The RESTful Server communicates exclusively with the store via the SSL-encrypted connection thus all the exchanged information is secure.
The Data Store is using the PostgreSQL relational database. Because of the variety of possible HDF5 content the store utilizes JSON in the database extensively. This permits greater flexibility while not jeopardizing the proven data consistency safeguards of relational databases. For example, all design modifications are executed as database transactions.