9.3. 创建自定义连接器


在 Fuse Online 中,自定义连接器由一个或多个连接配置参数、一个或多个连接操作以及每个操作的可选配置参数组成。

以下是用于开发自定义连接器的任务概述:

  1. 创建 Fuse Online 扩展项目,再选择 Custom Connector 作为扩展类型。
  2. 编写扩展代码。定义基本 Camel 组件、连接器图标、全局连接器属性和连接器操作。

9.3.1. 为自定义连接器编写代码

创建 Fuse Online 扩展项目后,您将根据 Fuse Online 用户为您提供所需功能的描述编写定义自定义连接器元素的代码。表 9.1 “自定义连接器元素” 表显示您在 Fuse 工具中所创建的自定义连接器的元素如何与 Fuse Online 中的元素对应。

表 9.1. 自定义连接器元素
Fuse Tooling 元素Fuse Online 元素描述

global (顶级)属性

连接配置参数

当 Fuse Online 用户从此连接器创建连接时,用户将此属性的值指定为连接的配置的一部分。

操作

连接操作

在 Fuse Online 中,对于从此连接器创建的连接,Fuse Online 用户选择其中之一。

操作中定义的属性

操作配置参数

当 Fuse Online 用户配置连接执行的操作时,Fuse Online 用户将此属性的值指定为操作的一部分。

编写为 Fuse Online 实施自定义连接器的代码:

  1. 在 Editor 视图中打开 syndesis-extension-definition.json 文件,并编写定义全局属性的代码、自定义连接器可以执行的操作,以及每个操作的属性。

    每个 全局 属性都对应于 Fuse Online 中的连接配置参数。每个 action 属性都对应于 Fuse Online 连接操作配置参数。在 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"
        }
      }
    }
  2. 如果自定义连接器需要额外的依赖项,请将它们添加到项目的 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 文件” 所述。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.