10.3. カスタムコネクターの作成

Fuse Online では、カスタムコネクターは 1 つ以上の接続設定パラメーター、1 つ以上の接続アクション、およびアクションの任意の設定パラメーターで設定されます。

カスタムコネクターを開発するためのタスクの概要を以下に示します。

  1. Red Hat CodeReady Studio で、Fuse Online エクステンションプロジェクトを作成し、エクステンションタイプとして Custom Connector を選択します。
  2. エクステンションのコードを記述します。ベース Camel コンポーネント、コネクターアイコン、グローバルコネクタープロパティー、およびコネクターアクションを定義します。

10.3.1. カスタムコネクターの Fuse Online Extension プロジェクトの作成

Fuse Tooling Fuse Online エクステンションプロジェクトは、カスタムコネクターの開始点を提供します。

Fuse Tooling Fuse Online エクステンションプロジェクトを作成するには、以下の手順に従います。

  1. Red Hat CodeReady Studio で NewProjectRed Hat FuseFuse Online Extension Project を選択します。

    New Fuse Online Extension Project ウィザードが開きます。

    FuseOnlineExtWiz page1
  2. プロジェクトの名前と場所を入力してから Next をクリックします。

    FuseOnlineExtWiz page2
  3. Fuse Online のバージョンを選択します。
  4. 以下のエクステンションの詳細を指定します。

    • ID  — Fuse Online 環境で定義される一意の値。この値は、Fuse Online ユーザーがエクステンションの .jar ファイルをインポートする際に Fuse Online に表示されます。
    • Name  — エクステンションの名前。この値は、Fuse Online にエクステンション名として表示されます。Fuse Online の CustomizationsExtensions タブで、ユーザーは Fuse Online にアップロードされたエクステンションの名前と説明を一覧表示できます。
    • Description  —  オプションの、エクステンションコンテンツの説明。
    • Version  —  エクステンションのバージョン。たとえば、これが最初のバージョンの場合、1.0 を入力します。バージョンを更新する場合は、1.1 または 2.0 を入力します。
  5. 作成する Fuse Online エクステンションの種類として Custom Connector を選択します。

    FuseOnlineExtWiz connector
  6. Finish をクリックします。

新しいプロジェクトが Red Hat CodeReady Studio の Project Explorer ビューに表示されます。これには、カスタムコネクターエクステンションの以下のファイルが含まれます。

  • src/main/resources/META-INF/syndesis フォルダー:

    • 記述子ファイル: syndesis-extension-definition.json

      このファイルを編集します。* 最上位のグローバルプロパティー、コネクターアクション、アクションプロパティーを追加します。* エクステンション Id、名前、バージョン、または説明の値を変更します。

    • デフォルトのアイコンイメージファイル: icon.png

      オプションで、このファイルを独自のアイコンイメージ (PNG または SVG) ファイルに置き換えることができます。

  • Maven Project Object Model ファイル: pom.xml

    このファイルには、Maven がプロジェクトをビルドするために使用されるプロジェクトおよび設定詳細に関する情報 (デフォルトのエクステンション依存関係を含む) が含まれます。このファイルを編集してカスタム依存関係を追加します。Red Hat が出荷する依存関係のスコープが提供されます。以下はその例です。

    <dependency>
        <groupId>io.syndesis.extension</groupId>
        <artifactId>extension-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <scope>provided</scope>
    </dependency>

10.3.2. カスタムコネクターのコードの記述

Fuse Online エクステンションプロジェクトを作成した後、Fuse Online ユーザーによって提供される必要な機能の説明を基にして、カスタムコネクター要素を定義するコードを記述します。表10.1「カスタムコネクター要素」 の表は、Fuse Tooling で作成したカスタムコネクター要素が Fuse Online 要素にどのように対応するか示しています。

表10.1 カスタムコネクター要素

Fuse Tooling 要素Fuse Online 要素説明

グローバル (最上位) プロパティー

接続設定パラメーター

Fuse Online ユーザーがこのコネクターから接続を作成すると、ユーザーは接続設定の一部としてこのプロパティーの値を指定します。

Action

接続アクション

Fuse Online では、Fuse Online ユーザーはこのコネクターから作成された接続に対して、アクションの 1 つを選択します。

アクションで定義されたプロパティー

アクション設定パラメーター

Fuse Online ユーザーが接続で実行するアクションを設定する場合、Fuse Online ユーザーはこのプロパティーの値をアクション設定の一部として指定します。

Fuse Online のカスタムコネクターを実装するコードを記述するには、以下を実行します。

  1. エディタービューで syndesis-extension-definition.json ファイルを開き、グローバルプロパティー、カスタムコネクターが実行できるアクション、および各アクションのプロパティーを定義するコードを記述します。

    グローバルプロパティー は Fuse Online の接続設定パラメーターに対応します。各アクションプロパティーは Fuse Online コネクションアクション設定パラメーターに対応します。Fuse Online では、ユーザーがカスタムコネクターを選択すると、Fuse Online が各接続設定パラメーターの値を要求します。カスタムコネクターは、OAuth プロトコルを使用するアプリケーションのカスタムコネクターであることがあります。この場合、OAuth クライアント ID のグローバルプロパティーと OAuth クライアントシークレットの別のグローバルプロパティーを指定するようにしてください。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 です。Red Hat が出荷する依存関係を追加する場合は、指定されたとおりスコープを定義します。以下はその例です。

    <dependencies>
        <dependency>
              <groupId>org.apache.camel</groupId>
              <artifactId>camel-telegram</artifactId>
              <scope>provided</scope>
        </dependency>
          </dependencies>

カスタムコネクターのコードの作成が終了したら、「Fuse Online エクステンション JAR ファイルのビルド」の説明に従って .jar ファイルをビルドします。