The behavior of my function node is strange, basically i have 2 paths which product data will be sent, 1 for brand A and brand B, on brand A’s path i have a function node to reformat the product codes and it is still being triggered even if the if node before it does not send any data to it?? It will then proceed to error out and stop the workflow, which is an example of what would occur if there was only data for one brand and not the other.
Why does it do this? I have tried changing to a split node and even so it will activate the node even if no data output is sent to the node. I would really prefer not setting continue on fail and always output data on every single node in each path, that just seems like a very improper way to do things.
Can you please help me understand why data flow behaves like this?
I have attached a test spreadsheet file which should reproduce this here at this link if anyone would be so kind to try it for me??
Okay I understand why this is happening now, I have the loop from product A run to Product Bs loop if it fails, because of this product B’s loop triggers the previous nodes of this failed product A path to run. this is why it is why the function node is running without any input.
Okay so that assumption was not correct it still behaves that way after making a separate loop, maybe because they are joined at the merge nodes they are asked to activate, however the opposite is not true when I test the case where there are only Product A data, it still runs to completion…?
okay so the solution was to give all of the nodes continue on fail + always output data privileges. but i still don’t like this but its all i got for the moment
Thank you again for your input, Im loving the community node!!
Yes i dont think that the way i have used merge nodes are proper best practice. If only i could do it another way…
I guess what im really looking for is a community merge node that takes in more than 2 inputs and appends them into one data output, if some of the inputs are empty by the end of the execution it shall continue to merge without them. Is there something like that??
There is nothing like that, that I know of.
Would also be kinda difficult to make I think. As the UI will not allow unlimited inputs.
For the switch node, I created the Switch9000, but it is a dirty solution, which will not work with inputs.
edit: workflow-wise. It will probably be possible to combine those 2 paths you got there into one. I haven’t looked at it properly, but using set node to set parameters and using those could do the trick. Also simply appending it to a spreadsheet (no clue on what kinda data we are looking at) and then taking it from that spreadsheet onwards could also help you out.
yes sounds like the proper way, I sort of implemented the set nodes inside the loops so that the workflow could still function, the way i had it before, if non of the items failed the workflow would not complete because it was always expecting something to fail.
its tricky working with nodes because it outputs data but at the same time it triggers the next node, theres no way to just send data without triggering or vice versa, so what ive done is use a if node and make an impossible criteria so that it will never trigger the next node but the data is still available.
that was to send the products that were unsuccessful in that loop to the second loop to try and see if it would work there. but i did remove it and it still behaves that way so its definitely the merge node as you said earlier
Also one more thing
Having multiple inputs into a single node can cause some funky stuff.
The splitInBatches node was created for it, but some others might not always give you the outcome you would expect in a workflow.
yes thats exactly right, i will keep that in mind next time because i hate having 2 executions of a workflow when there should only be one, this can cause havoc sending out several slack messages when 1 with all the data is sufficient