I have noted similar topics but either have missed the answer or doesnt quite match my requirements…
I am trying to run a “parent” workflow calling multiple “child” local workflows. To test this as an example, all the “child” local workflows are doing is updating a table with a value
if all workflows are in a reset state, running the “parent” workflow results in all workflows executing and the table being updated (this is correct)
The problem occurs when re-running “parent” workflow. It runs as if everything has worked, however, the table is not updated. I believe this is due to the fact that the “child” workflows have not been reset and are in a “success” state from the previous run…
I am possibly trying to use Knime in an incorrect manner. I am trying to have a daily task that runs multiple transformations (“child” workflows) but as its currently stands, I need to manually reset all workflows before running which is not ideal.
I would like to simply open Knime each morning and execute the single “parent” workflow. At a later stage, Id like to run the parent in a batch process but just trying to get this to work in a suitable manner right now
Am I misunderstanding how to best utilise Knime to achieve this? Is there a way to programatically reset the workflows before running them from the “parent”? Or possibly a global setting to reset workflows/nodes on start-up?
Unfortunately I have not found a way to force the workflow to be reset at the start. This only seems to work with KNIME server. And well maybe this is a step of productivity KNIME wants you to actually pay for.
It might be possible to use a cron job on Unix/Linux that calls a batch version of KNIME to achieve something similar. But I have no real experience with that.
What does work is to have a parent workflow that calls sub-workflows which are in a reset state at the beginning. With the call structure you might be able to have some indicator that the workflow is finished and if it stopped in an unfinished mode you could restart at a specific workflow but still all of them would not be in a saved state. Although during the time of execution you could open them and see what is going on.
I have thought about a way to connect all nodes within one workflow to a node I could sort of force to do something regardless of how it is called but have not been successful with my imagination.
A simple example of a sub-workflow structure being called can be found here:
I don’t think you are using KNIME in a incorrect manner and even better news is there is no need to reset all child workflows each time as they shouldn’t be saved after execution. What seems is happening is when re-running the parent workflow without closing it first. As @mlauber71 picture shows then there is green dot left on all of your child workflows(after first execution). In this case child workflow is in state executed and re-running parent workflow won’t have effect of course. Resetting parent workflow doesn’t help here as connection between workflows is left (green dot is still there). Solution would be to close parent workflow and re-run it then. Your table should be updated
Regarding calling KNIME in a batch mode using nodes calling other workflows check this topic:
First, you need the “Call Local Workflow” node to do it. I started with a “Table Creator” to put a field called “Status” with the information “WF Started!”. Then, I inserted the node, one after one, about a five (5) nodes at all.
At each node, you set the workflow path directly. When the master workflow will be run, each node will run sequentially.