Frequently Asked Questions
How to avoid infinite automatic loop in workflow?
Posted by Hannu Anttila (M-Files) on 26 March 2019 03:21 PM
If you have automatic state transitions back and forth then M-Files sees that there is a possibility to create infinite loop and does not allow to save the workflow. You see an error message: "The automatic state transitions of this workflow can lead into an infinite automatic loop.". It doesn't check your settings further if that is really possible or not.
You can avoid this with scripting and extra state.
1. Create a new state between your automatic state transitions, e.g. between "State1" and "State2". Here in my example I use the name "Extra state" but you can of course use whatever name you want to for your new state.
2. You can use the same automatic transition from "State1" to "Extra state" as you have now between "State1" and "State2".
3. Draw a regular state transition from "Extra state" to "State2"
4. Add script to "Extra state" action tab
Dim workflowState : workflowState = 151 ' State ID to move to, check the ID from Workflow states value list
Dim oPropVal: Set oPropVal = CreateObject("MFilesAPI.PropertyValue")
oPropVal.PropertyDef = 39 ' Workflow states
oPropVal.TypedValue.SetValue MFDatatypeLookup, workflowState
Vault.ObjectPropertyOperations.SetProperty ObjVer, oPropVal
So the trick is to fool M-Files engine that there is no chain of automatic state transitions which could create an infinite loop - you should not get the error. But when the object moves to the state "Extra state", it is immediately moved to the correct state automatically by the script.
But please be careful, you can create an infinite loop this way.
The only thing you have to change in the script above is value 151 to correct one. You must check that in your Admin tool in "Value lists" from the built-in value list "States" (value list ID is 8). Open that value list and see the "Contents". Check what is the ID of your state "State2" and replace 151 in the script with that value.