1) When are exitConditionRules actually evaluated and what are they for? Under what conditions are they triggered? If I put a rule like this, what would be expected when the SCO terminates?<imsss:exitConditionRule><imsss:ruleConditions conditionCombination="any"><imsss:ruleCondition condition="always" /></imsss:ruleConditions><imsss:ruleAction action="exit" /></imsss:exitConditionRule>What I see is that nothing happens (visibly). It just merrily moves along to the next SCO with or without the exit condition rule. Help me understand it's purpose.2) Is there any clearly defined place to understand exit, exitAll, abandon, abandonAll and when to use them? I read the books and it's not exactly clear.3) What does choiceExit mean in practice? Here is what I see. If a cluster has choiceExit=false, then once any activity within that cluster is active, there is no way for the learner to leave the cluster via a choice request. They can jump around all they want within that cluster, even going deeper down the tree, but can't pop put and hit another activity that is adjacent or above the choiceExit cluster. Am I close? What should the TOC behavior be with all this? I'm guessing it's not defined, just so they can't "click" on invalid items.
SCORM 2004's sequencing and navigation rules contain a few different concepts of "exiting". To clarify some of the questions above:
1) An exit condition rule exists for one purpose only and that is to "bubble up" the exiting of an activity to its parent. Exit condition rules are evaluated when a post condition rule of a child activity results in an exit parent action. In other words if a child activity has indicated that this activity should exit, these exit condition rules are in place to allow you to either stop the exiting at this activity, or pass the exiting up to the parent.
2) There are two distinctions to understand between these exit types. There is a distinction between the singular exits ("exit" and "abandon") vs the "-All" versions ("exitAll" and "abandonAll"). And, there is a distinction between the concept of exiting and the concept of abandoning. The singular vs all simply indicates whether the exit should be applied to just the current activity, or if the entire activity tree should exit. The distinction between exiting and abandoning is a bit more subtle. The normal way to leave an activity is through an "exit" request. In this situation, the current set of data is rolled up and normal sequencing is executed. An "abandon" request basically throws out the current set of data and exits the activity without doing anything with the current data. You can think of "exit" as turning in your homework and you can think of "abandon" as throwing your homework in the trash can.
3) That explanation of choiceExit is correct. When an activity cannot be selected because of a choiceExit restriction, SCORM Testing Requirement REQ_117.7 indicates that it should be hidden from the table of contents.