Overview

OpenFin provides Application Providers the ability to call a Service that can run along side their application. The service will runs as a singleton processes that provides functionality to other applications running in an OpenFin environment. Services are started and managed by the RVM.

Key points

  • Applications declare the services they want to use in the Application Manifest.
  • The lifecycle of Services is managed by the RVM and exists for as long as any applications that require the service are running.
  • Only one version of a service can be running on the desktop, and it will extend across all runtime instances on the desktop.
  • Services are delivered to the desktop via the OpenFin Cloud or an equivalent on-premise source.

Enabling a Service

To enable the a Service Application Providers only need to add a single reference to the Service in their application’s config file (app.json).

JSON example

"services" :[{ "name":"SERVICE_NAME" }] //replace "name"

DesktopOwnerSettings file

The Desktop Owner Settings file allows Desktop Owners to set most global desktop settings in an easy-to-update, remote JSON file as opposed to setting them in the registry. Learn more about how to enable Desktop Services in the Desktop Owner Settings file.

Architecture and lifecycle

1660

Lifecycle

  1. During normal application startup the RVM is pointed to an OpenFin Application manifest specifying a Service dependency.
  2. The RVM resolves the location of the service(s) (resolving detailed below), defaulting to the OpenFin public cloud (if a service is offered by OpenFin).
  3. The RVM starts the service(s) if not already running.
  4. The RVM starts the OpenFin Application.
  5. The Client side API running in the OpenFin Application connects to the service via an InterApplicationBus Channel.

The RVM will shut down a service when the last application that has required the service is closed.

Hosting services on-premise

Services can be configured to be hosted where ever you desire

  • The RVM needs to be instructed to look for the service location. You can accomplish this by specifying the service location in the DesktopOwnerSettings (RVM version 4.7+).

JSON example

"services": [{
   "name": "SERVICE_NAME", 
   "manifestUrl": "https://[YOUR_SERVICE]/app.json"
}]