10.4. 创建自定义步骤

创建 Fuse Online 扩展项目后,您可以编写根据 Fuse Online 用户为您提供所需功能的描述来定义自定义步骤的代码。在单一扩展中,您可以定义多个自定义步骤,您可以使用 Camel 路由或使用 Java Bean 定义每个自定义步骤。

10.4.1. 为自定义步骤创建 Fuse 在线扩展项目

要创建 Fuse 工具 Fuse 在线扩展项目,请按照以下步骤操作:

  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. 指定以下扩展详情:

    • 在 Fuse Online 环境中定义且在 Fuse Online 环境中是唯一的 ID criu-wagonA 值。当 Fuse Online 用户导入扩展 .jar 文件时,该值将在 Fuse Online 中可见。
    • 名称 扩展名为 wagon-wagon。这个值将在 Fuse Online 作为扩展名称中看到。在 Fuse Online 中,在 CustomizationsExtensions 选项卡中,用户可以看到上传到 Fuse Online 的扩展的名称和描述。
    • 描述 扩展内容的可选描述。
    • 版本 criu-MAPPINGThe version of the extension.例如,如果这是初始版本,您可以键入 1.0。如果要更新版本,您可以键入 1.12.0
  5. 为您要创建的 Fuse 在线扩展选择 Custom Step
  6. 为自定义步骤选择模板:

    FuseOnlineExtWiz step
    • Camel route criu-wagonProvides 示例 Camel 路由。
    • Java bean criu-wagonProvides 一个 Java bean 示例。

      注意

      您选择的模板为您的项目提供一个起点。如果要基于 Camel 路由创建一个或多个自定义步骤,以及基于同一扩展中的 Java Bean 的一个或多个自定义步骤,请从其中一个模板开始,然后为其他类型的自定义步骤添加所需的文件和依赖项。

  7. Finish

新项目会出现在 Red Hat CodeReady Studio Project Explorer 视图中。它包括以下文件,具体取决于您为自定义步骤选择的模板:

  • src/main/resources/META-INF/syndesis 文件夹中:

    • 描述符文件: syndesis-extension-definition.json

      这是您编辑的文件: * 添加一个或多个操作。'.json 'file 中的操作成为 Fuse Online 的自定义步骤。在操作元素中,'.json 'file 中的属性成为 Fuse Online 中的 step 配置参数。* 更改 Extension Id, Name, Version, 或 Description 值。

    • 对于 Camel 路由模板,Camel 上下文文件: extensions/log-body-action.xml

      此文件包含带有日志组件的示例路由。您可以在此文件中自定义 Camel 路由。

    • 对于 Java bean 模板,Java 文件: extensions/extension.java

      此文件包含基于 POJO 的日志记录扩展示例。

  • Maven 项目对象模型文件: pom.xml

    此文件包含 Maven 用于构建项目的项目和配置详情的信息,包括默认扩展依赖项。您可以编辑此文件来添加自定义依赖项。红帽提供的任何依赖项的范围,例如:

    <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.4.2. 为自定义步骤编写代码

创建 Fuse Online 扩展项目后,您编写了根据 Fuse Online 用户为您提供所需功能的描述自定义步骤的代码。

表 10.2 “自定义步骤元素” 显示您在 Fuse 工具中创建的自定义步骤元素如何与 Fuse Online 中的元素对应。

表 10.2. 自定义步骤元素

Fuse Tooling 元素Fuse Online 元素描述

操作

自定义步骤

在 Fuse Online 中,在用户导入步骤扩展后,在 Choose a step 页面中显示自定义步骤。

操作中定义的属性

自定义步骤配置参数

在 Fuse Online 中,当用户选择自定义步骤时,Fuse Online 会提示输入配置参数的值。

要编写为 Fuse Online 实现自定义步骤的代码:

  1. 对于基于 Camel 路由的步骤,在 extension.xml 文件中,创建处理扩展目的的路由。每个路由的入口点必须与您在 syndesis-extension-definition.json 文件中定义的入口点匹配,如第 2 步所述。

    对于基于 Java bean 的步骤,编辑 java 文件。

  2. syndesis-extension-definition.json 文件中,编写定义操作及其属性的代码。每个入口点都需要一个新的操作。

    您创建的每个操作都与 Fuse Online 中的自定义步骤对应。您可以为每个操作使用不同类型的代码。也就是说,您可以对一个操作使用 Camel 路由,并将 Java bean 用于另一个操作。

    每个属性都对应一个 Fuse Online step 配置参数。在 Fuse Online 中,当用户选择自定义步骤时,Fuse Online 会提示输入配置参数的值。例如,自定义日志步骤可能有一个 level 参数,它指示要发送到日志的信息量。

    以下是包含扩展元数据的 .json 文件模板,包括用户在 Fuse Online 中用户填充的属性,并在上传扩展并将其自定义步骤添加到集成后:

    {
      "actions": [
        {
          "actionType": "extension",
          "id": "${actionId}",
          "name": "Action Name",
          "description": "Action Description",
          "tags": [
               "xml"
          ],
          "descriptor": {
            "kind": "ENDPOINT|BEAN|STEP",
            "entrypoint": "direct:${actionId}",
            "inputDataShape": {
              "kind": "any"
            },
            "outputDataShape": {
              "kind": "any"
            },
            "propertyDefinitionSteps": []
          }
        }
      ],
      "tags": [
        "feature",
        "experimental"
      ]
    }
    注意

    本发行版本中会忽略标签。保留它们供以后使用。

  3. 要编辑扩展依赖项,请在编辑器中打开 'pom.xml 'file。如果添加依赖项,则必须定义其范围。

完成自定义步骤的代码编写后,构建 .jar 文件,如 第 10.5 节 “构建 Fuse Online 扩展 JAR 文件” 所述。