There’s an odd behavior lurking deep down in the innards of the SCORM 2004 sequencing pseudocode. On the surface, frustrated content developers find that the can’t have their cake and eat it too. I think that’s a stupid saying. What’s the point of cake if you can’t eat it, it certainly seems like a reasonable request to eat my own cake. That’s kind of how it is here. For content developers who want users to resume from where they left off, let also have progress data rollup after every exit, they have a vexing conundrum. The way to get a user to resume where he left off from is to issue a Suspend All navigation request when the content exits. Unfortunately, a Suspend All request doesn’t trigger the sequencer to roll up the current progress data so when the user exits, he doesn’t see the results he received from the last SCO he attempted.
So, what is one to do?
The easiest solution is to punt and not trigger your own exit requests. Often the exit buttons implemented by the LMS will handle this problem for you.
The next easiest solution is to put some simple logic in your content that will issue an Exit All request instead of a Suspend All request when the content is completed and should be rolled up. This solution isn’t perfect, but meets the needs of most use cases.
Alternatively, there are some whacky sequencing rules that you could write in conjunction with global objectives to achieve the correct resume behavior, but these are probably a last resort.