我已经在 Eclipse 中添加了 Knime 的所有插件,我想创建自己的自定义节点。但我无法理解如何将数据从一个节点传递到另一个节点。
我看到了 Knime 本身提供的一个节点,即“文件阅读器”节点。现在我想要这个节点的源代码或这个节点的 jar 文件但是我找不到它。
我在 eclipse 插件文件夹中搜索类似的名称,但我仍然没有得到它。
有人可以告诉我如何将数据从一个节点传递到另一个节点,以及如何识别 knime 和源代码给出的任何节点的类或 jar。
我已经在 Eclipse 中添加了 Knime 的所有插件,我想创建自己的自定义节点。但我无法理解如何将数据从一个节点传递到另一个节点。
我看到了 Knime 本身提供的一个节点,即“文件阅读器”节点。现在我想要这个节点的源代码或这个节点的 jar 文件但是我找不到它。
我在 eclipse 插件文件夹中搜索类似的名称,但我仍然没有得到它。
有人可以告诉我如何将数据从一个节点传递到另一个节点,以及如何识别 knime 和源代码给出的任何节点的类或 jar。
KNIME 节点的源代码现在可以在git hub上找到。
或者,您可以在您的项目>插件依赖项>knime-base.jar>org.knime.base.node.io.filereader 下检查 Eclipse KNIME SDK 中的文件阅读器源代码。
使用 KNIME SDK 创建时,默认情况下 Knime-base.jar 将添加到您的项目中。
假设您的数据是标准数据表,那么您需要继承 NodeModel,并调用超类型构造函数:
public MyNodeModel(){
//One incoming table, one outgoing table
super(1,1);
}
您需要覆盖默认#execute(BufferedDataTable[] inData, ExecutionContext exec)
方法 - 这是完成节点工作并创建输出表的地方。理想情况下,如果您的输入和输出表具有一对一的行映射,则使用一个ColumnRearranger
类(因为这会大大减少磁盘 IO,并且如果您需要它,允许您的节点进行简单的并行化),否则您的执行方法需要迭代通过传入的数据表并生成一个输出表。
#configure(DataTableSpec[] inSpecs)
如果可以在节点执行之前确定该方法,则至少需要为输出表提供规范(通常可以,这允许下游节点也可以配置,但“转置”节点是不能这样做的节点的示例)。
您还需要实现各种其他方法,但在某些情况下,这些方法将是空方法。
除了 NodeModel,您还需要实现一些其他类 - NodeFactory、可选的 NodeSettingsPane 和可选的 NodeView。
在 Eclipse 中,您可以查看许多节点的源代码,而且 KNIME 社区“书籍”页面都有指向其源代码的链接。查看https://tech.knime.org/developer-guide和https://tech.knime.org/developer/example以获取分步指南。此外,向 knime 论坛(包括开发者论坛)提出的问题通常会得到快速响应 - 如果您想花几天时间了解更多信息,KNIME 每年会举办几次开发者培训课程。最后但并非最不重要的一点是,值得让自己熟悉一下节点指南,该指南描述了节点应如何表现的最佳实践