Index: openacs-4/packages/assessment/www/doc/sequencing.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/sequencing.adp,v diff -u -r1.1.2.2 -r1.1.2.3 --- openacs-4/packages/assessment/www/doc/sequencing.adp 25 Aug 2015 18:02:19 -0000 1.1.2.2 +++ openacs-4/packages/assessment/www/doc/sequencing.adp 4 Jul 2016 11:33:12 -0000 1.1.2.3 @@ -7,26 +7,27 @@ vexing problem confronting the Assessment package is how to handle conditional navigation through an Assessment guided by user input. Simple branching has already been accomplished in the "complex -survey" package via hinge points defined by responses to single -items. But what if branching/skipping needs to depend on +survey" package via hinge points defined by responses to +single items. But what if branching/skipping needs to depend on combinations of user responses to multiple items? And how does this relate to management of data validation steps? If branching/skipping depends not merely on what combination of -"correct" or "in range" data the user submits, but also on -combinations of "incorrect" or "out of range" data, how the heck do -we do this?
+"correct" or "in range" data the user submits, +but also on combinations of "incorrect" or "out of +range" data, how the heck do we do this?One basic conceptual question is whether Data Validation is a distinct process from Navigation Control or not. Initially we thought it was and that there should be a datamodel and set of procedures for checking user input, the output of which would pipe to a separate navigation datamodel and set of procedures for -determining the user's next action. This separation is made (along -with quite a few other distinctions/complexities) in the IMS -"simple sequencing" model diagrammed below). But to jump the gun a -bit, we think that actually it makes sense to combine these two -processes into a common "post-submission user input processing" -step we'll refer to here as Sequencing. (Note: we reviewed several -alternatives in the archived prior discussions +determining the user's next action. This separation is made +(along with quite a few other distinctions/complexities) in the IMS +"simple sequencing" model diagrammed below). But to jump +the gun a bit, we think that actually it makes sense to combine +these two processes into a common "post-submission user input +processing" step we'll refer to here as Sequencing. (Note: +we reviewed several alternatives in the archived prior discussions + here.
So here is our current approach. We note that there are two scopes @@ -44,21 +45,22 @@The goal is to have a flexible, expressive grammar for these
checks to support arbitrary types of checks, which will be input
-validation ("Is the user's number within bounds?"; "Is that a
-properly formatted phone number?"). One notion on check_sql.
-Instead of using comparators we store the whole SQL command that
-makes up this check with a predefined variable "value" that
-contains the response of the user to the item the item_check is
-related to. If we want to make sure the value is between 0 and 1 we
-store "0 < :value < 1" with the check. Once an item is
-submitted, the system looks up the related checks for this item and
-replaces in each of them ":value" with the actual response.
+validation ("Is the user's number within bounds?";
+"Is that a properly formatted phone number?"). One notion
+on check_sql. Instead of using comparators we store the whole SQL
+command that makes up this check with a predefined variable
+"value" that contains the response of the user to the
+item the item_check is related to. If we want to make sure the
+value is between 0 and 1 we store "0 < :value < 1"
+with the check. Once an item is submitted, the system looks up the
+related checks for this item and replaces in each of them
+":value" with the actual response.
Item Checks thus will have these attributes: