I have a workflow which I have configured "Start when items are created = yes" and "Start when items are modified = yes". I've added a filter at the beginning which tells the workflow to only continue if a field 'Submitted' value = 1. This gets reset to zero at the end of the workflow to prevent it from re-triggering.
I have discovered that if I make a change to the workflow (e.g. changed an Edit task form) and then republish the workflow, it seems to trigger a new workflow instance on items on which there is a currently running workflow. I don't want this to occur.
This is a link to a screenshot of my workflow.
Any help would be greatly appreciated.
This is by design. In general only one instance of a workflow can run on a specific list item. The first instance will need to complete before another instance will start when an item is modified.
When publishing a new workflow the old instances will keep running but when an item is modified an instance of the new workflow version will kick off. There is no builtin way to prevent this as the two workflow versions are seen as two different workflows.
As a workaround you need a custom list item propery like the one in your explanation. The new workflow version will kick off but then needs to check if "work is to be done". This should be true for your scenario as long as the "Submitted" value is still present.