9.3. 创建自定义连接器
在 Fuse Online 中,自定义连接器由一个或多个连接配置参数、一个或多个连接操作以及每个操作的可选配置参数。
以下是用于开发自定义连接器的任务概述:
- 创建 Fuse Online 扩展项目,然后选择 Custom Connector 作为扩展类型。
- 为扩展编写代码。定义基本 Camel 组件、连接器图标、全局连接器属性和连接器操作。
9.3.1. 为自定义连接器编写代码
创建 Fuse Online 扩展项目后,您可以编写根据 Fuse Online 用户为您提供所需功能的描述来定义自定义连接器元素的代码。表 9.1 “自定义连接器元素” 表显示您在 Fuse 工具中创建的自定义连接器元素如何与 Fuse Online 中的元素对应。
Fuse Tooling 元素 | Fuse Online 元素 | 描述 |
---|---|---|
全局(顶级)属性 | 连接配置参数 | 当 Fuse Online 用户从这个连接器创建连接时,用户会指定此属性的值作为连接的配置的一部分。 |
操作 | 连接操作 | 在 Fuse Online 中,对于从此连接器创建的连接,Fuse Online 用户选择这些操作之一。 |
操作中定义的属性 | 操作配置参数 | 当 Fuse Online 用户配置连接执行的操作时,Fuse Online 用户会指定此属性的值作为操作配置的一部分。 |
编写为 Fuse Online 实现自定义连接器的代码:
在 Editor 视图中打开 syndesis-extension-definition.json 文件,编写定义全局属性的代码,自定义连接器可以执行的操作以及每个操作的属性。
每个 全局 属性都对应 Fuse Online 中的连接配置参数。每个 action 属性都对应于 Fuse Online connection action 配置参数。在 Fuse Online 中,当用户选择自定义连接器时,Fuse Online 会提示输入每个连接配置参数的值。自定义连接器可用于使用 OAuth 协议的应用程序。在这种情况下,请确保为 OAuth 客户端 ID 指定全局属性,以及 OAuth 客户端 secret 的另一个全局属性。Fuse Online 用户需要为这些参数指定值,以便从此连接器创建的连接正常工作。
每个连接器操作都会 声明一个基本 Camel 组件方案。
New Fuse Online Extension Project 向导提供的示例使用
telegram
Camel 组件方案:{ "schemaVersion" : "v1", "name" : "Example Fuse Online Extension", "extensionId" : "fuse.online.extension.example", "version" : "1.0.0", "actions" : [ { "id" : "io.syndesis:telegram-chat-from-action", "name" : "Chat Messages", "description" : "Receive all messages sent to the chat bot", "descriptor" : { "componentScheme" : "telegram", "inputDataShape" : { "kind" : "none" }, "outputDataShape" : { "kind" : "java", "type" : "org.apache.camel.component.telegram.model.IncomingMessage" }, "configuredProperties" : { "type" : "bots" } }, "actionType" : "connector", "pattern" : "From" }, { "id" : "io.syndesis:telegram-chat-to-action", "name" : "Send a chat Messages", "description" : "Send messages to the chat (through the bot).", "descriptor" : { "componentScheme" : "telegram", "inputDataShape" : { "kind" : "java", "type" : "java.lang.String" }, "outputDataShape" : { "kind" : "none" }, "propertyDefinitionSteps" : [ { "description" : "Chat id", "name" : "chatId", "properties" : { "chatId" : { "kind" : "parameter", "displayName" : "Chat Id", "type" : "string", "javaType" : "String", "description" : "The telegram's Chat Id, if not set will use CamelTelegramChatId from the incoming exchange." } } } ], "configuredProperties" : { "type" : "bots" } }, "actionType" : "connector", "pattern" : "To" } ], "properties" : { "authorizationToken" : { "kind" : "property", "displayName" : "Authorization Token", "group" : "security", "label" : "security", "required" : true, "type" : "string", "javaType" : "java.lang.String", "secret" : true, "description" : "Telegram Bot Authorization Token" } } }
如果自定义连接器需要额外的依赖项,请将它们添加到项目的
pom.xml
文件中。依赖项的默认范围是 runtime。如果您添加了红帽提供的依赖项,请自行定义其范围,例如:<dependencies> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-telegram</artifactId> <scope>provided</scope> </dependency> </dependencies>
完成自定义连接器的代码编写后,构建 .jar
文件,如 第 9.5 节 “构建 Fuse Online 扩展 JAR 文件” 所述。