FDC3 Desktop Agent Bridging
This feature is experimental. It might change substantially over time. Use at your own risk.
The FDC3 Desktop Agent API, supported in Finsemble, has been very successful in enabling standards-compliant interoperability between applications running as part of a smart desktop. However, financial services desktops can be complex environments which include multiple desktop agents from different vendors, 'external' or 'stand-alone' application and even multiple physical devices.
To achieve interoperability between all the different applications running in such an environment it is necessary for the different desktop agents and stand-alone apps to collaborate, allowing interop to span across them. From FDC3 2.1, this may be achieved via FDC3 Desktop Agent Bridging, which is an @experimental
5th Part of the FDC3 Standard, which was developed by the interop.io eam in collaboration with FDC3's Desktop Agent Bridging discussion group.
In the following sections we provide a brief introduction to Desktop Agent Bridging and details of support for it in Finsemble. For more details on the bridging protocol itself see the FDC3 Standard documentation for Desktop Agent Bridging.
Please note that the Desktop Agent Bridging protocol has been designed such that an application using the FDC3 API does not need to make any significant changes in order to make use of the Bridging connection between its Desktop Agent and another agent. Hence, there is no need for Finsemble Desktop users, app developers or desktop assemblers to interact with the protocol directly. Rather, simply enable the feature via configuration.
If you intend to use Desktop Agent Bridging you will need access to a bridge implementation, which you will run locally on your device. The Finsemble team has developed an in-house bridge implementation for testing and works closely with the FDC3 Backplane project (a multi-device, open-source bridge implementation). Hence, if you are intending to work with Bridging please get in touch with our in-house FDC3/Bridging maintainers or the Finsemble support team.
The Bridge and connections to it
The Desktop Agent Bridging Part defines the concept of a 'bridge' (a websocket server) that Desktop Agents may connect to in order to communicate with other Desktop Agents. Each Desktop Agent is a peer of all other agents connected to the bridge:
At present, the Standard assumes that the bridge is running on the local device (localhost), with multiple device use-cases handled as internal concern of the bridge implementation, by interconnecting copies of the bridge running on different devices:
The FDC3 Backplane project, also hosted by the Fintech Open Source Foundation (FINOS) and contributed by Finsemble customer NatWest Markets, is intended to provide an implementation of a Desktop Agent Bridge which supports multiple devices per user.
The bridge exposes a websocket server, which Desktop Agents connect to in order to communicate with it. It is the responsibility of the bridge to receive messages from Desktop Agents connected to it and to forward them onto other Desktop Agents also connected to it. For message exchanges requiring replies (which includes most interactions other than simple broadcasts onto channels) the bridge must then receive and collate responses from the other agents, before returning a consolidated response to the Desktop Agent that sent the original request.
Connection and Messaging Protocols
The FDC3 Desktop Agent Bridging Part of the FDC3 Standard defines both a connection protocol (message exchanges necessary to connect to a Bridge and to perform initial state synchronization) and a messaging protocol (message exchanges that allow FDC3 API interop to extend across multiple Desktop Agents).
The format of each message in the protocols are defined in JSON Schema, which may be used to validate that individual messages are in the correct format. Typescript types for each message are also provided in the FDC3 NPM module. However, applications are not expected to interact with these messages directly as the Finsemble Desktop Agent implementation will handle all such communication, automatically sending and receiving context broadcasts to and from other agents, and farming out other queries (such as which apps are able to resolve intents or actually delivering raised intents) to other agents connected to the bridge.
Enabling Desktop Agent Bridging in Finsemble
By default bridging is disabled in Finsemble. To enable it set finsemble.servicesConfig.interop.fdc3BridgingEnabled to true as shown below.
"servicesConfig": {
...
"interop": {
...
"fdc3BridgingEnabled": true
}
},
When bridging is enabled, the bridging service's address can also be configured as shown below. By default the service address is "ws://127.0.0.1:3333" as specified by the standard.
"servicesConfig": {
...
"interop": {
...
"fdc3BridgingServerAddress": "ws://127.0.0.1:3334"
}
},
Troubleshooting
All output to and input from the bridging service can be seen using the Central logger and filtering on interop.bridging. Also filtering on interop.interop and tag:FDC3 shows more logging context as well as the Finsemble's DesktopAgent's local behavior.
See also
For an introduction to interop with FDC3 and its use in Finsemble, see Interop (FDC3).
To learn more about FDC3 and how to make your apps compliant, see Integrating FDC3-compliant apps into a workflow using the FDC3 workbench and the FDC3 Standard documentation.
To go beyond the FDC3 Standard with Finsemble' extended FDC3 feature set, see Augmenting FDC3: selectConnect.