Data Sharing

Overview

The io.Connect Channels are globally accessed named contexts that allow users to dynamically group apps via the UI, instructing them to work over the same shared data object. Your apps can join, leave, subscribe and publish to Channels programmatically. Channels are also represented visually via the configurable Channel Selector app shown in the header area of an io.Connect Window. The Channel Selector allows users to join, leave or switch between Channels manually from the UI.

When apps are on the same Channel, they share a context data object which they can monitor and/or update. The following demonstrates how apps interact with each other using the io.Connect Channels:

Channels

io.Connect Desktop supports directional Channels which allow for finer user control over whether an app should publish or subscribe to a Channel:

Directional Channels

Channels are based on Shared Contexts. A context object may contain various types of data such as ids, displayName, and more:

{
    "contact": {
        "ids": [
        {
            "systemName": "sfId",
            "nativeId": "0031r00002IukOxAAJ"
        },
        {
            "systemName": "rest.id",
            "nativeId": "0e23375b-dd4f-456a-b034-98ee879f0eff"
        }
        ],
        "displayName": "Nola Rios",
        "name": {
            "lastName": "Rios",
            "firstName": "Nola",
            "otherNames": null,
            "honorific": "Ms.",
            "postNominalLetters": null
        }
    }
}

Different apps on the same Channel may use different parts of the data:

  • The "Client List" app updates the context object fields with data for the selected user.
  • The "Client Portfolio" app uses the ids property to load the portfolio of the client selected by the user in the "Client List" app.

Defining Channels

To define any number of Channels in io.Connect Desktop to be used by your apps, modify the channels.json file located in the %LocalAppData%/interop.io/io.Connect Desktop/Desktop/config folder. The following example demonstrates adding a custom black Channel to the already existing default list of Channels in io.Connect Desktop:

{
    "name": "Black",
    "meta": {
        "color": "black"
    }
}

Custom Channel

For more details on how to configure Channels, see the Developers > Configuration > Channels section.

For details on using Channels in FDC3 apps, see the FDC3 Compliance section.

Channel Selector

The Channel Selector enables users to manually assign Channels to their apps and also control the flow of data when using directional Channels. io.Connect Desktop supports different types of Channel Selectors with standard and directional Channels. Standard Channels allow apps to publish and subscribe for Channel data unrestrictedly. Directional Channels offer finer user control - besides selecting a Channel for the app, the user can restrict the app from publishing or subscribing to that Channel, depending on the desired direction for the data flow. The Channel Selector is configurable on a global level and per app.

Types

Available since io.Connect Desktop 9.3

Currently, two types of Channel Selectors are supported - single and directional single. The type of the Channel Selector to be used by the io.Connect Windows can be configured globally and per app.

The single Channel Selector is the default one and it allows users to select a single Channel for the window. The window will be able to subscribe and publish to that Channel unrestrictedly:

Single Channel Selector

The directional single Channel Selector allows users to select a single Channel for the window, but also enables them to instruct the window only to publish or subscribe to the selected Channel:

Directional Single Channel Selector

Configuration

You can configure the Channel Selector globally via the system.json system configuration file of io.Connect Desktop located in the %LocalAppData%/interop.io/io.Connect Desktop/Desktop/config folder, and per app via the app definition. The settings in the app definition will override the global system settings.

Available since io.Connect Desktop 9.3

To configure the Channel Selector globally, use the "channelSelector" property of the "windows" top-level key in the system.json file:

{
    "windows": {
        "channelSelector": {
            "enabled": true,
            "type": "directionalSingle"
        }
    }
}

To configure the Channel Selector per app, use the "channelSelector" property of the "details" top-level key in the app definition:

{
    "details": {
        "channelSelector": {
            "enabled": true,
            "type": "single",
            "channelId": "Black"
        }
    }
}

The "channelSelector" object has the following properties:

Property Type Description
"enabled" boolean If true, will allow showing the Channel Selector. Defaults to false.
"channelId" string Name of the Channel to which the window will be joined by default when it's started.
"readOnly" boolean If true, the Channel Selector will be visible, but the user won't be able to switch between Channels from it. Defaults to false.
"type" "single" | "directionalSingle" Type of the Channel Selector to show on the io.Connect Windows. A single Channel Selector (default) allows the window to join a single Channel to which it can subscribe and publish data unrestrictedly. A directional single Channel Selector allows the window to join a single Channel, but also enables the user to restrict the window from publishing or from subscribing to the current Channel. Defaults to "single".

For more details on how to configure the Channel Selector globally and per app, see the Developers > Configuration > System > Window Settings > Channels and the Developers > Configuration > Application > Channels sections.