创建和上传自定义节点¶
除了使用 流设计器 中提供的标准节点之外,你还可以根据需求开发并上传自定义节点。
开发并上传一个自定义节点,首先需要创建一个 Maven 项目,配置节点参数、内部逻辑,生成一个 YAML 文件。将测试通过的代码打包成 JAR 包后,压缩 JAR 包和 YAML 文件为一个 ZIP 文件,最后上传 ZIP 文件,完成自定义节点导入。使用的集成框架是 Camel,JAR 包需要遵循 Camel 规范。
开始前准备¶
你需要下载 JDK,安装 IDEA 和 Maven,配置 Java 环境。建议使用 1.8.0 版本的 JDK 和 3.X 版本的 Maven。
你需要通过 OU Admin 的邮箱或手机授权验证,才能完成最后的上传。
创建 Maven 项目¶
使用 Maven Archetype 创建一个 Maven 项目。Archetype:com.envisioniot.enos:orch-component-archetype:1.0.1。
如果找不到,可以点击 添加 Archetype 手动添加。
GroupId:com.envisioniot.enos
ArtifactId:orch-component-archetype
Version:1.0.1
Repository:https://git.envisioncn.com/iotdev/poc/custom-nodev2
定义项目的基本信息,如 项目名称 Name、组 ID GroupId 和 工件 ID ArtifactId 等。
在 Properties 中添加以下 2 个 Maven 属性。
名称
值
描述
name
CustomNode
用于自动生成组件类名。
scheme
custom-node
Camel SPI,作为 Camel 发现组件的依据。
创建项目成功后,代码结构如下。
配置节点参数和逻辑¶
在
/process/CustomNodeEndpoint
类中定义节点的参数以及 getter 和 setter 方法,该参数的值可以从前端动态传入。根据上图的参数,你将创建一个具有 Input 字符输入框和 InputNumber 数字输入框的自定义节点。
备注
需要为参数添加注解。
@UriParam
注解表示该参数为组件参数,@ComponentParam
注解帮助生成节点 UI 描述的配置文件。执行 main 函数,在当前项目的根目录下自动生成
custom-node.yaml
文件,用于后续上传。如有特殊需要,可以继续手动编写该 YAML 文件。有关组件类型的代码示例,参见 自定义节点。可以根据需要,通过以下方式继续添加不同处理逻辑:
测试代码¶
可以通过将 /process/CustomNodeEndpoint
类中定义的参数值输入到 /test/java/CustomNodeComponentTest
类来测试自定义节点。
上图的 to
中,“custom-node” 是创建节点时自定义的 scheme 值。“bar” 是占位符,“?” 后面是 /process/CustomNodeEndpoint
类中定义的参数和测试值,各参数之间用 “&” 隔开。
生成 fat JAR 包¶
为避免不同节点依赖冲突,需要将节点打包成 fat JAR。执行 Maven package 进行打包。打包成功后,将在 target
目录下自动生成名为 custom-node-1.0-SNAPSHOT.jar
和 original-custom-node-1.0-SNAPSHOT.jar
的两个 JAR 包,前一个 JAR 包为 fat JAR。
上传 ZIP 文件¶
将名为
custom-node-1.0-SNAPSHOT.jar
的 JAR 包和custom-node.yaml
文件压缩为一个 ZIP 文件。在 EnOS 管理控制台 里, 点击 设备数据集成 > 流设计器 (云端/站端集成流) 或者 设备数据集成 > 站端集成(站端集成流)。
创建新集成流或点击现有的流以进入设计画布。有关如何创建集成流,参见 创建集成流。
点击画布顶部的 导入节点,选择验证方式,点击 获取验证码。
输入 OU Admin 的邮箱或手机中收到的验证码,点击 下一步。验证码的有效期为 5 分钟。
上传 ZIP 文件,然后点击 确定 创建自定义节点。
上传成功后,该节点将出现在左侧的节点列表中,你可以像其他标准节点一样拖放自定义节点。