创建和上传自定义节点


除了使用 流设计器 中提供的标准节点之外,你还可以根据需求开发并上传自定义节点。


开发并上传一个自定义节点,首先需要创建一个 Maven 项目,配置节点参数、内部逻辑,生成一个 YAML 文件。将测试通过的代码打包成 JAR 包后,压缩 JAR 包和 YAML 文件为一个 ZIP 文件,最后上传 ZIP 文件,完成自定义节点导入。使用的集成框架是 Camel,JAR 包需要遵循 Camel 规范。

开始前准备

  • 你需要下载 JDK,安装 IDEA 和 Maven,配置 Java 环境。建议使用 1.8.0 版本的 JDK 和 3.X 版本的 Maven。

  • 你需要通过 OU Admin 的邮箱或手机授权验证,才能完成最后的上传。


创建 Maven 项目

  1. 使用 Maven Archetype 创建一个 Maven 项目。Archetype:com.envisioniot.enos:orch-component-archetype:1.0.1。


    ../_images/maven_project_archetype.png


    如果找不到,可以点击 添加 Archetype 手动添加。


    ../_images/maven_project_archetype_add.png


  2. 定义项目的基本信息,如 项目名称 Name、组 ID GroupId 和 工件 ID ArtifactId 等。


    ../_images/maven_project_info.png


  3. Properties 中添加以下 2 个 Maven 属性。

    名称

    描述

    name

    CustomNode

    用于自动生成组件类名。

    scheme

    custom-node

    Camel SPI,作为 Camel 发现组件的依据。

  4. 创建项目成功后,代码结构如下。


    ../_images/maven_project_code_struct.png


配置节点参数和逻辑

  1. /process/CustomNodeEndpoint 类中定义节点的参数以及 getter 和 setter 方法,该参数的值可以从前端动态传入。


    ../_images/maven_project_endpoint.png


    根据上图的参数,你将创建一个具有 Input 字符输入框和 InputNumber 数字输入框的自定义节点。


    备注

    需要为参数添加注解。@UriParam 注解表示该参数为组件参数,@ComponentParam 注解帮助生成节点 UI 描述的配置文件。


  2. 执行 main 函数,在当前项目的根目录下自动生成 custom-node.yaml 文件,用于后续上传。如有特殊需要,可以继续手动编写该 YAML 文件。有关组件类型的代码示例,参见 自定义节点

  3. 可以根据需要,通过以下方式继续添加不同处理逻辑:

    • 如果节点需要实现 Logic 或 Action 等数据处理操作,则在 /process/CustomNodeProcessor 类的 process 方法中实现对节点输入数据的处理逻辑。


      ../_images/maven_project_processor.png


    • 如果节点作为触发集成流的 Input 节点,则在 /process/CustomNodeConsumer 类的 doStart 方法中实现集成流的触发逻辑。


      ../_images/maven_project_consumer_dostart.png


    • 如果节点需要在流程结束后触发事件,则在 /process/CustomNodeProcessor 类的 doAfterFailerdoAfterComplete 方法中实现。


      ../_images/maven_project_consumer_doafter.png


测试代码

可以通过将 /process/CustomNodeEndpoint 类中定义的参数值输入到 /test/java/CustomNodeComponentTest 类来测试自定义节点。


../_images/maven_project_test.png


上图的 to 中,“custom-node” 是创建节点时自定义的 scheme 值。“bar” 是占位符,“?” 后面是 /process/CustomNodeEndpoint 类中定义的参数和测试值,各参数之间用 “&” 隔开。

生成 fat JAR 包

为避免不同节点依赖冲突,需要将节点打包成 fat JAR。执行 Maven package 进行打包。打包成功后,将在 target 目录下自动生成名为 custom-node-1.0-SNAPSHOT.jaroriginal-custom-node-1.0-SNAPSHOT.jar 的两个 JAR 包,前一个 JAR 包为 fat JAR。

上传 ZIP 文件

  1. 将名为 custom-node-1.0-SNAPSHOT.jar 的 JAR 包和 custom-node.yaml 文件压缩为一个 ZIP 文件。

  2. EnOS 管理控制台 里, 点击 设备数据集成 > 流设计器 (云端/站端集成流) 或者 设备数据集成 > 站端集成(站端集成流)。

  3. 创建新集成流或点击现有的流以进入设计画布。有关如何创建集成流,参见 创建集成流

  4. 点击画布顶部的 导入节点,选择验证方式,点击 获取验证码

  5. 输入 OU Admin 的邮箱或手机中收到的验证码,点击 下一步。验证码的有效期为 5 分钟。


    ../_images/custom_node_verification.png


  6. 上传 ZIP 文件,然后点击 确定 创建自定义节点。


    ../_images/custom_node_import.png


  7. 上传成功后,该节点将出现在左侧的节点列表中,你可以像其他标准节点一样拖放自定义节点。