2016-11-26 44 views
0

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

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

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

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

+0

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

+1

https://tech.knime.org/developers –

回答

0

假设你的数据是一个标准的数据表,那么你需要继承节点模型,具有超类型构造函数的调用:

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

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

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

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

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

在Eclipse中,您可以查看许多节点的源代码,并且KNIME社区的“书籍”页面也都链接到它们的源代码。请参阅https://tech.knime.org/developer-guidehttps://tech.knime.org/developer/example以获得逐步指导。此外,针对编程论坛(包括开发人员论坛)的问题通常会得到快速响应 - 如果您想花费几天的时间学习更多内容,KNIME每年会运行一次开发人员培训课程。最后但并非最不重要的一点,值得熟悉的节点指南描述了节点应该如何表现的最佳实践

0

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

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

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