FDC3 Compliancy

Overview

FDC3 aims at developing specific protocols and classifications in order to advance the ability of desktop applications in financial workflows to interoperate in a plug-and-play fashion without prior bilateral agreements.

FDC3 for Glue42 Enterprise

Below are explained the specifics for running an FDC3 compliant app within Glue42 Enterprise. For a detailed information on the FDC3 API itself, see the FDC3 documentation.

Configuration

If you have developed an FDC3 compliant application and want to deploy it in Glue42 Enterprise, all you need to do is to apply a few configuration settings in order to include your app in Glue42 Enterprise and start using the FDC3 API. You do not need to reference an FDC3 library, as Glue42 Enterprise provides configurable injection of an FDC3 API.

First, you need to enable injection of the FDC3 API in your application. To do that, set the autoInjectFdc3 property to true under the details top-level key of your application configuration file.

Below is an example application configuration enabling auto injection of the FDC3 API provided by Glue42 Enterprise:

{
    "title": "My FDC3 App",
    "type": "window",
    "name": "my-fdc3-app",
    "hidden": false,
    "details": {
        "url": "http://localhost:8047/index.html",
        "autoInjectFdc3": {
            "enabled": true
        }
    }
}

For more information on configuring your apps for Glue42 Enterprise, see the Application Configuration section.

FDC3 configuration standards are supported by Glue42 Enterprise, so you can also supply the above Glue42 configuration .json file as a string to the manifest property of an FDC3 application configuration file.

Next, you need to configure Glue42 Enterprise to auto inject the FDC3 API and specify which apps to inject with it. In the system.json file of Glue42 Enterprise (located in %LocalAppData%\Tick42\GlueDesktop\config) set the autoInjectFdc3 property under the windows top-level key:

{
    "windows": {
        "autoInjectFdc3": {
            "enabled": true,
            "version": "1.1.0",
            "whitelist": ["my-fdc3-app"]
        }
    }
}

Now the FDC3 API will be available globally as a property of the window object.

fdc3.addContextListener(context => console.log(`Context: ${context}`));

Intents

The FDC3 Intents concept serves the purpose of enabling the creation of cross-application workflows on the desktop. An application declares an Intent through configuration. An Intent specifies what action the application can execute and what data structure it can work with.

In Glue42 Enterprise, Intents are defined in the application configuration file. Configuration files are stored either remotely (e.g., in an FDC3-compliant App Directory) or locally. Local user defined application files are usually located in the %LocalAppData%\Tick42\UserData\<REG-ENV>\apps folder, where <REG-ENV> should be replaced by the region and environment of your Glue42 Enterprise copy (e.g., T42-DEMO). Intents can be configured under the intents top-level key of the application configuration file.

Below is an example configuration for an Intent:

"intents": [
    {
        "name": "ShowChart",
        "displayName": "BBG Instrument Chart",
        "contexts": ["Instrument"]
    }
]
  • name - Required. The name of the Intent;
  • displayName - The human readable name of the Intent. Can be used in context menus, etc., to visualize the Intent;
  • contexts - Required. The type of predefined data structures that the application can work with (see FDC3 Contexts).

For more information on using Intents, see the FDC3 Intents API.

Channels

An FDC3 Channel is a named context object that an application can join in order to share and update context data and also be alerted when the context data changes. By specification, Channels can either be well-known system Channels (one of which is called "default") or Channels created by apps. On a UI level, Channels can be represented by colors and names.

All system defined Channels in Glue42 Enterprise can be found in the channels.json file in the %LocalAppData%\Tick42\GlueDesktop\config folder. There you can easily define as many custom Channels as you want. For instance, to add a purple Channel to the existing list of system Channels, you need to add the following configuration:

{
    "name": "Purple",
    "meta": {
        "color": "#6400b0"
    }
}

To add a Channel Selector (UI component from which the user can manually switch between Channels) to your window, you need to set allowChannels to true in your application configuration file, under the details top-level key:

{
    "title": "Client List 🔗",
    "type": "window",
    "name": "channelsclientlist",
    "icon": "https://dev-enterprise-demos.tick42.com/resources/icons/clients.ico",
    "details": {
        "url": "https://dev-enterprise-demos.tick42.com/client-list-portfolio-contact/#/clientlist",
        "mode": "tab",
        "allowChannels": true
    }
}

For more information on using Channels, see the FDC3 Channels API.

App Directory

The goal of the FDC3 App Directory REST service is to provide trusted identity for desktop apps. Application definitions are provided by one or more App Directory REST services where user entitlements and security can also be handled.

To configure Glue42 Enterprise to retrieve application definitions from remote application stores, you only need to add a new entry to the appStores top-level key of the system.json file located in the %LOCALAPPDATA%\Tick42\GlueDesktop\config folder:

"appStores": [
    {
        "type": "rest",
        "details": {
            "url": "http://localhost:3000/appd/v1/apps/search",
            "auth": "no-auth",
            "pollInterval": 30000,
            "enablePersistentCache": true,
            "cacheFolder": "%LocalAppData%/Tick42/UserData/%GLUE-ENV%-%GLUE-REGION%/gcsCache/"
        }
    }
]
  • auth - authentication configuration;
  • pollInterval - interval at which to poll the REST service for updates;
  • enablePersistentCache - whether to cache and persist the layouts locally (e.g., in case of connection interruptions);
  • cacheFolder - where to keep the persisted layout files;

Note that currently only application configurations that comply with Glue42 specifications are supported.

For a reference implementation of the FDC3 App Directory, see our Node.js REST Config Example on GitHub.

For more information on using App Directory, see the FDC3 App Directory documentation.