Hello guys,
I’ve found a potential problem source in the device
framework, related to the state machine control.
Consider an instance that has 3 states (A, B and C) and 2
transitions (A->B, A->C). The instance is initially at state A.
At the instance view, the services that execute both
transitions are enabled. Say we execute the service that transitions from A to
B.
While the transition is ongoing, the device is neither in
state A or B, but at the state machine it is still considered in state A before
a result is available. Therefore the transition A->C is still enabled. What
happens if we execute A->C?
I think it is necessary to define new rules for state
maintenance. One simple solution would be to disable all services while a transition
is ongoing, but there are cases in which two or more services can be executed
in parallel. Does anyone have ideas about what would be the most effective
algorithm to deal with a state machine generically, allowing robustness and parallelism
at the same time?
Thanks and best regards,
Fabio Rigo