No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
=== StateMachine Force Mode. === | |||
StateMachines follow their rules. However, when sometimes you change your model or find a bug, you may find yourself in a situation where the current state of objects is wrong and there is no legal way to get to the correct state. For this reason, we added the StateMachineForceMode operator which is only intended to be used in the debugger or the like. | |||
StateMachines follow their rules. | |||
Calling object.StateMachineForceMode(theStateAttribute) gives you one free pass to set the StateAttribute string directly: | Calling object.StateMachineForceMode(theStateAttribute) gives you one free pass to set the StateAttribute string directly: | ||
Line 11: | Line 10: | ||
But this will work:<blockquote>self.stateMachineForceMode('State');</blockquote><blockquote>self.State:='State3';</blockquote><blockquote>self.stateMachineForceMode('State');</blockquote><blockquote>self.State:='State3'</blockquote>Note! The stateMachineForceMode has the name of the state '''attribute''' as the parameter, not the name of the '''state''' itself. | But this will work:<blockquote>self.stateMachineForceMode('State');</blockquote><blockquote>self.State:='State3';</blockquote><blockquote>self.stateMachineForceMode('State');</blockquote><blockquote>self.State:='State3'</blockquote>Note! The stateMachineForceMode has the name of the state '''attribute''' as the parameter, not the name of the '''state''' itself. | ||
[[Statemachines forcing your hand even if you are admin| | [[Statemachines forcing your hand even if you are admin|This is explained in more detail here.]] | ||
[[State value as a string]] | [[State value as a string]] | ||
[[Category:MDriven Designer]] | [[Category:MDriven Designer]] |
Revision as of 09:20, 3 February 2023
StateMachine Force Mode.
StateMachines follow their rules. However, when sometimes you change your model or find a bug, you may find yourself in a situation where the current state of objects is wrong and there is no legal way to get to the correct state. For this reason, we added the StateMachineForceMode operator which is only intended to be used in the debugger or the like.
Calling object.StateMachineForceMode(theStateAttribute) gives you one free pass to set the StateAttribute string directly:
The stateMachineForceMode is only good for 1 write so this will fail on the 3 line:
self.stateMachineForceMode('State'); self.State:='State3'; self.State:='State3'
But this will work:
self.stateMachineForceMode('State');
self.State:='State3';
self.stateMachineForceMode('State');
self.State:='State3'
Note! The stateMachineForceMode has the name of the state attribute as the parameter, not the name of the state itself.