Hi,
I'd say from the current experience I am gaining, that I use global state in two cases.
1: when the even is triggered from outside, say another fsm wants to inform another about something. If you divide your behavior in several fsm, global event allows you concurrent behaviors, because one single fsm can only have one active state ( as Alex mentionned as well). So global events mixed with splitted fsm is really powerful stuff.
2: When my fsm gets too complicated and within it I want to shortcuts and avoid hardwiring. Say a fsm is a sequence of logical steps, and at some point you would like to reuse or jump to another state in that process, instead of hardwiring, I simply create a global event and call that. The fsm look less like a spider's web...
Also, I think it's very dangerous to use too much global transitions without a tight framework or very well managed project, because loose coupling will give you headaches down the road if it gets out of control. Who sent what to who?, you'll get weird behaviors not knowing why ( just because you forgot that little fsm in the corner firing the wrong event at the wrong time. You gain fantastic freedom, but this isn't it ideal without a proper framework during debugging to really show you clearly events activities.
Bye,
Jean
Bye,
Jean