I am new to KNIME, I want to use it for a project in which I’m working. The idea for this project is to use KNIME capabilities and add a couple of new nodes (not very complex) that will add a couple of very specific actions but nothing fancy.
I feel like I’m hitting a wall trying to accomplish this. Many doubts arise.
How is the development process of a new node? What are all the steps necessary?
What happens after I install that Eclipse piece of software? I run KNIME from Eclipse and see the node but if I make changes to the node (from Eclipse) they don’t appear in KNIME. How should this be handled? Should I always need to close KNIME and re open it and do all the steps to recreate my setup and test changes?
How can I use the code from another already existing node to learn how it works and extrapolate that knowledge to my own node? For example what if I want to use the Python node to extend it?
How can I build the node so I can use is it in a non-development environment? I don’t want to have to use Eclipse to run KNIME so how can I export it to be used by one of my colleagues with a standard version of KNIME?
I see examples in the website but an exact cooking recipe is missing.
I feel the documentation is poor in this subject which is a shame since KNIME feels very capable but for someone new trying to extend it feels like a 90º uphill climb. It also feels that the information exists but that it is spread across many URLs so this should probably be centralized.
I’ve made a couple of posts (this and this) presenting my frustration with this subject. I might be missing something.
Please point me in the right direction or improve the documentation.
Hi @caballerofelipe,
I understand your frustrations, getting started with developing your KNIME node is indeed not as clearly documented as they should be. We are aware of this and are currently working on a comprehensive developer guide, as well as a blog post that contains just the cooking recipe you are missing. Keep your eyes open, it should be released in the next weeks.
Now to your questions:
Eclipse is able to hot swap some changes into the running application, but things like adding new methods, member variables or classes requires a restart of the KNIME Analytics Platform. You do not need to recreate your setup though, when you save your test workflow it will be restored after a restart.
By creating an update site project (tutorial) you can create an update site you can host on any webserver or distribute it as a zip file.
If you have any more questions, please feel free to ask them here on the forum. We are happy to help you out. Also, If you ever want to distribute your nodes as a KNIME community extension (Community Extensions | KNIME), we can provide hosting, automated building and testing for you.
" After the export has finished, the selected folder will contain a .jar file containing your plugin. To install it into any Eclipse or KNIME Analytics Platform installation, place the .jar file in the dropins folder of the KNIME/Eclipse installation folder. Note that you have to restart KNIME/Eclipse for the new plugin to be discovered. In this example, the node is then displayed at the top level of the node repository in KNIME Analytics Platform."
Must be a lot of comments on the forums saying don’t use the dropins folder
I think it would be worth noting that people need to make sure they increment their version number (e.g. with .qualifier) otherwise subsequent versions placed into the dropins folder won’t be picked up.
I’m reading right now and I believe there is a small error in:
In the Package Explorer view of Eclipse (left side) you should now see three projects. The two projects org.apache.xmlbeans and org.knime.sdk.setup which you imported in the SDK Setup, and the project org.knime.examples.numberformatter that you just created using the KNIME Node Wizard.
thanks for pointing that out. The project org.knime.example.node is the old example we included in the knime-sdk-setup repository. We already deleted it on master. You are seeing it because you are on the release branch.