DOME Applications and External APIs




Context:

While Dome applications can run in a variety of environments we generally use the following diagram to describe the relationships between the system components. Each layer provides a large level of flexibility.


Layer 0: VM

The entire system can be run on any suitable platform. We shall use a VM for illustrative purposes however the same components can be deployed just as easily on a local laptop or within any container solution.

Layer I: CEED API

This layer exposes a set of APIs to allow for interaction with the DOME server in a RESTful manner. See our documentation for full API specifications but via this mechanism core functions such as app listing and execution are exposed. Interaction with the DOME server can also be accomplished via the thick client and thus bypassing the need for Layer I functionality when working locally.

Layer II: DOME Server

A dome server can be deployed to any proper Java container via war file and provides application execution

Layer III: Application Layer

DOME apps are deployed as .dml bundles to a specific DOME server. The app bundle will specify the location of any necessary system resources or dependencies that the application may need. It is the responsibility of the publisher to ensure the necessary dependencies exist at the system level. Dependencies include the necessary execution engines the applications may need to do their work as well as access to system wide resources. For example if an application needs to access an external API the necessary steps must be taken to allow network communication at the VM layer as well as exposing the right ports or firewall rules.

Layer IV: Execution Engine

Depending upon the various application requirements the system must be configured to provide the appropriate execution engine in order to enable proper application execution. If application requires the python running environment, it and any libraries thereof must be made available in the location the application creator determined. Interrogate the .dml file for explicit location and system dependencies.

Data Flow Steps


When running a DOME application the following data flows will occur given the above stack.

  1. A external party such as the DMC infrastructure exercises the Layer I API to run a particular application.
    POST /runAPP/1
  2. Layer I interrogates Layer II to confirm application exists and is executable
  3. Layer I returns to user the interface parameters (list of inputs and outputs) for the requested app.
  4. DMC infrastructure submits proper input parameters
  5. Upon receipt of input values Layer I provides them to Layer II and triggers application execution
  6. Layer II executes application. As part of the application execution cycle Layer II invokes Layer III resources to provide the solution. In the case of a Python based application, Layer II will provide the resources to the interpreter and await the outputs of the execution. Given application code, should there be a request to external APIs the DOME server will perform those actions should the environments requirements are met such as proper network access, etc. In the case of an Excel based application Layer II will invoke the proper system DLLs and engage with Excel to calculate application outputs.
  7. Once all outputs are collected they are delivered back up the stack and to the initial requesting party.