【问题标题】:how to create custom node in knime?如何在 knime 中创建自定义节点?
【发布时间】:2023-11-15 14:22:01
【问题描述】:

我已经在 Eclipse 中添加了 Knime 的所有插件,我想创建自己的自定义节点。但我无法理解如何将数据从一个节点传递到另一个节点。

我看到了 Knime 本身提供的一个节点,即“文件阅读器”节点。现在我想要这个节点的源代码或者这个节点的jar文件但是我找不到。

我在 eclipse 插件文件夹中搜索类似的名称,但还是没找到。

谁能告诉我如何将数据从一个节点传递到另一个节点,以及如何识别 knime 和源代码给出的任何节点的类或 jar。

【问题讨论】:

  • 请从帖子中删除您的电子邮件。 * 的答案不是通过电子邮件给出的,如果把它留在这里,只会导致大量垃圾邮件被发送给它。您也可以用“Eclipse”标记您的问题,以便人们能够找到它。

标签: knime


【解决方案1】:

假设您的数据是标准数据表,那么您需要继承 NodeModel,并调用超类型构造函数:

public MyNodeModel(){
     //One incoming table, one outgoing table
     super(1,1);
}

您需要覆盖默认的#execute(BufferedDataTable[] inData, ExecutionContext exec) 方法——这是完成节点工作并创建输出表的地方。理想情况下,如果您的输入和输出表具有一对一的行映射,则使用 ColumnRearranger 类(因为这会大大减少磁盘 IO,并且如果您需要它,允许节点的简单并行化),否则您的执行方法需要遍历传入的数据表并生成输出表。

#configure(DataTableSpec[] inSpecs) 方法需要实现至少为输出表提供一个规范,如果这可以在节点执行之前确定(通常可以,这允许下游节点也可以配置,但是'Transpose' 节点是不能这样做的节点示例)。

您还需要实现各种其他方法,但在某些情况下,这些方法是空方法。

除了 NodeModel,您还需要实现一些其他类 - NodeFactory、可选的 NodeSettingsPane 和可选的 NodeView。

在 Eclipse 中,您可以查看许多节点的源代码,而且 KNIME 社区“书籍”页面都有指向其源代码的链接。查看https://tech.knime.org/developer-guidehttps://tech.knime.org/developer/example 以获取分步指南。此外,向 knime 论坛(包括开发者论坛)提出的问题通常会得到快速响应 - 如果您想花几天时间了解更多信息,KNIME 每年会举办几次开发者培训课程。最后但并非最不重要的一点是,值得熟悉一下节点指南,该指南描述了节点应如何表现的最佳实践

【讨论】:

    【解决方案2】:

    KNIME 节点的源代码现已在git hub 上提供。

    或者,您可以在您的项目>插件依赖项>knime-base.jar>org.knime.base.node.io.filereader 下查看eclipse KNIME SDK中的文件阅读器源代码。

    使用 KNIME SDK 创建时,Knime-base.jar 默认会添加到您的项目中。

    【讨论】: