如何在knime中创建自定义节点?

时间:2016-11-26 10:58:17

标签: knime

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

我看到了一个由Knime本身提供的节点,它是"文件阅读器"节点。现在我想要这个节点的源代码或这个节点的jar文件但是我无法找到它。

我在eclipse插件文件夹中搜索相似的名字,但我仍然没有得到它。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

除了NodeModel之外,你还需要实现一些其他类 - 一个NodeFactory,可选一个NodeSettingsPane和一个NodeView。

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

答案 1 :(得分:0)

KNIME节点的源代码现在可在git hub上获得。

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

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