用户问的是关于FDC3的API部分的详细解读。首先,我需要回忆一下FDC3是什么。FDC3是Financial Desktop Connectivity and Collaboration Consortium的缩写,由FINOS维护,旨在为金融机构的桌面应用提供互操作性标准。主要涉及应用程序之间的通信,比如消息传递、上下文数据共享、应用启动等。
用户提到的是fdc3.finos.org中的API部分,所以需要确认最新的FDC3版本,可能当前是2.0版本。然后,我需要分模块解读API。通常,FDC3的API包括几个核心部分:Intents(意图)、Context Data(上下文数据)、Channels(通道)、App Directory(应用目录)以及Desktop Agent(桌面代理)。每个部分的作用和相互关系需要明确。
首先,Desktop Agent是关键,因为它是实现API的中介,负责协调应用间的通信。用户可能想知道如何使用Desktop Agent的方法,比如open、findIntent、broadcast等。需要详细说明每个方法的功能、参数和返回值,以及使用场景。
接下来是Intents和Context Data。这部分需要解释意图的作用,比如一个应用请求另一个应用执行某个操作,如查看报价。Context Data则是传递的数据结构,如Instrument类型,包含资产ID和名称等。可能需要举例说明如何定义和使用这些上下文数据。
Channels部分,分为全局通道和私有通道。全局通道用于广播上下文数据,所有应用都可以订阅,而私有通道可能用于点对点通信。需要解释如何加入通道、广播数据以及监听频道数据变化的方法。
App Directory是应用目录,用于发现可用的应用和它们支持的功能。用户可能需要了解如何查询应用目录,比如使用findIntent的方法来找到能处理某个意图的应用。
此外,可能还需要考虑安全性和权限控制,比如应用需要声明它们能处理的意图和上下文数据类型。同时,错误处理也是API的一部分,比如当没有找到处理某个意图的应用时如何处理。
用户可能是在开发金融应用时需要集成FDC3,所以实际示例和用例对他们会有帮助。比如,如何从交易应用发送一个上下文数据到图表应用显示图表,或者如何通过意图启动另一个应用执行特定操作。
需要检查是否有遗漏的API部分,比如监听器或事件处理,比如添加IntentListener或ContextListener,这些也是API的重要组成部分,用于接收和处理来自其他应用的消息。
最后,总结部分需要强调FDC3如何促进应用间的互操作性,以及使用这些API的最佳实践,比如正确声明支持的意图和上下文,处理多实例应用的情况等。
可能用户是开发人员,需要具体的代码示例,但问题中没有明确要求,所以详细解读每个API方法的功能和使用方式即可。同时,需要注意术语的准确性,比如Desktop Agent的具体实现可能因平台而异,但API保持一致。
FDC3(Financial Desktop Connectivity and Collaboration Consortium)是由FINOS(Fintech Open Source Foundation)主导的开放标准,旨在为金融行业的桌面应用程序提供统一的互操作性框架。其核心目标是通过标准化的API实现不同金融应用之间的通信、上下文共享和协作。以下是FDC3 API部分的详细解读,涵盖主要模块和功能:
1. Desktop Agent(桌面代理)
作用:Desktop Agent 是FDC3的核心中介,负责协调应用程序之间的通信。它通常由平台(如OpenFin、Glue42等)实现,开发者通过调用其API实现功能。
关键方法:
-
open(app: TargetApp, context?: Context)
打开另一个应用程序(或应用实例),并可选传递上下文数据。
TargetApp
:目标应用标识(如{ appId: 'chartApp' }
)。context
:传递给目标应用的初始数据(如{ type: 'fdc3.instrument', id: 'AAPL' }
)。
-
findIntent(intent: string, context?: Context)
查找能够处理指定意图(Intent)和上下文的应用。
- 返回结果包含应用列表和异步执行方法(
execute()
)。
- 返回结果包含应用列表和异步执行方法(
-
broadcast(context: Context)
向当前频道(Channel)广播上下文数据,所有订阅该频道的应用均可接收。
-
addContextListener(contextType: string | null, handler: ContextHandler)
监听特定类型的上下文数据(若
contextType
为null
,则监听所有类型)。
2. Intents(意图)
作用 :定义应用程序可执行的操作(如查看报价、创建订单),实现跨应用的功能调用。
关键概念:
- Intent 类型 :预定义(如
ViewChart
、StartCall
)或自定义(需符合命名规范)。 - Intent 解析 :通过
findIntent()
或findIntentsByContext()
解析到支持的应用列表。 - Intent 执行 :通过
raiseIntent()
或raiseIntentForContext()
触发操作。
示例:
javascript
// 触发查看某股票图表的意图
const intentResult = await fdc3.raiseIntent('ViewChart', {
type: 'fdc3.instrument',
id: { ticker: 'AAPL' }
});
// 处理目标应用的返回结果
intentResult.addResultListener((result) => {
console.log('Received result:', result);
});
3. Context Data(上下文数据)
作用:定义应用程序间传递的标准化数据格式,确保语义一致性。
常见上下文类型:
fdc3.instrument
:金融工具(如股票、债券),包含id
(如{ ticker: 'AAPL' }
)和name
。fdc3.contact
:联系人信息。fdc3.order
:订单详情。- 自定义上下文 :可通过
type
字段扩展(如myApp.customContext
)。
示例:
javascript
// 广播一个股票上下文
fdc3.broadcast({
type: 'fdc3.instrument',
name: 'Apple Inc.',
id: {
ticker: 'AAPL',
ISIN: 'US0378331005'
}
});
4. Channels(通道)
作用:提供发布-订阅模式的数据通信机制,支持全局频道和私有频道。
关键方法:
getSystemChannels()
:获取系统预定义的全局频道列表(如"Red"、"Blue")。joinChannel(channelId: string)
:加入指定频道。getCurrentChannel()
:获取当前频道信息。leaveCurrentChannel()
:离开当前频道。
使用场景:
- 全局频道:多个应用订阅同一频道,实时接收市场数据更新。
- 私有频道 :点对点通信(需通过
createPrivateChannel()
创建)。
5. App Directory(应用目录)
作用:提供应用注册与发现的元数据服务,声明应用支持的Intent和上下文类型。
应用元数据示例:
json
{
"appId": "chartApp",
"name": "Chart Application",
"intents": [
{
"name": "ViewChart",
"displayName": "View Chart",
"contexts": ["fdc3.instrument"]
}
],
"contexts": ["fdc3.instrument"]
}
目录查询:
- 通过
findIntent()
或findIntentsByContext()
从目录中解析匹配的应用。
6. 安全与权限
- 声明式权限:应用需在清单中声明支持的Intent和上下文类型。
- 用户授权:某些操作(如打开应用)可能需要用户确认。
典型使用场景
-
跨应用协作
- 交易应用广播选中的股票,图表应用自动加载图表。
- 邮件应用中的联系人触发通讯录应用拨打电话。
-
工作流自动化
- 通过
raiseIntent
启动数据分析应用处理当前投资组合。
- 通过
-
数据同步
- 多个应用订阅同一频道,实时同步市场数据变更。
总结
FDC3 API 通过标准化通信协议,解决了金融桌面应用碎片化的问题,使得不同供应商的应用可以无缝协作。开发者需重点关注:
- Desktop Agent 的核心方法调用。
- Intent 和 Context 的合理设计。
- 频道机制实现数据广播与订阅。
如需深入实践,建议参考FDC3官方文档及平台(如OpenFin)的具体实现示例。