So far this library has been awesome, I'd really like to get this one feature working but for some reason transitioning back to a history state is mangling some of my parallel state machines.
I have four parallel state machines running under the "Main" state machine:

My button state machine is pretty straightforward and looks something like this:

When the button is released, it will transition my "Workout" state machine from "Workout__Active__Running" to "Workout__Active__Paused" and vice versa. "Workout__Active__Running" has some nested states that I'd like to restore when coming back from "Workout__Active__Paused":
Here's my workoutActive.scxml with the irrelevant bits removed (note that I'm using the xi:include feature so these states all get preprended with "Workout__Active__" in my generated state machine):
<scxml initial="SetUp" version="1.0" xmlns="http://www.w3.org/2005/07/scxml" >
<state id="Running" initial="Running_Squeezing">
<transition event="HW_BUTTON_RELEASED" target="Paused" type="external" />
<state id="Running_Squeezing" >
...
</state>
<state id="Running_Resting" >
...
</state>
<history type="deep" id="RunningHistory" />
</state>
<state id="Paused">
<transition event="HW_BUTTON_RELEASED" target="RunningHistory" type="external" />
<invoke srcexpr="on0301_Paused" />
</state>
</scxml>
Something gets screwed up when trying to transition to "RunningHistory" from the "Paused" state. I've printed out the active states during the transition:
1) Main, Button, Workout, Led, Haptics, Haptics__Off, Workout__Active, Workout__Active__Paused, Led__Blinking, Led__Blinking_Off, Button__Pressed
--- TRANSITION TO HISTORY (event: HW_BUTTON_RELEASED, state: Workout__Active__RunningHistory, previously active: Workout__Active__Running_Squeezing) ---
2) Main, Button, Workout, Led, Haptics, Workout__Active, Led__Blinking, Workout__Active__Running,
3) Main, Workout, Led, Workout__Active, Workout__Active__Running, Workout__Active__Running_Squeezing,
- Is right before the transition back to the history, and all seems good.
- It re-enters the "Workout__Active__Running" state, but for some reason "Haptics__Off", "Led__Blinking_Off", and "Button_Released" (the new button state) get removed.
- It re-enters the "Workout__Active__Running_Squeezing" but now the "Button", "Haptics" and "Led_Blinking" states are gone
So it seems like it is popping off the leaf states on the parallel state machines for each history state it restores.
My expected final state:
Main, Button, Workout, Led, Haptics, Haptics__Off, Led__Blinking, Led__Blinking_Off, Button__Pressed, Workout__Active, Workout__Active__Running, Workout__Active__Running_Squeezing,
Hopefully this makes sense. Let me know if it doesn't and I'll try to provide more information.
So far this library has been awesome, I'd really like to get this one feature working but for some reason transitioning back to a history state is mangling some of my parallel state machines.
I have four parallel state machines running under the "Main" state machine:

My button state machine is pretty straightforward and looks something like this:

When the button is released, it will transition my "Workout" state machine from "Workout__Active__Running" to "Workout__Active__Paused" and vice versa. "Workout__Active__Running" has some nested states that I'd like to restore when coming back from "Workout__Active__Paused":
Here's my workoutActive.scxml with the irrelevant bits removed (note that I'm using the
xi:includefeature so these states all get preprended with "Workout__Active__" in my generated state machine):Something gets screwed up when trying to transition to "RunningHistory" from the "Paused" state. I've printed out the active states during the transition:
So it seems like it is popping off the leaf states on the parallel state machines for each history state it restores.
My expected final state:
Hopefully this makes sense. Let me know if it doesn't and I'll try to provide more information.