Usage

Various assessment steps can be enabled for ORA problems, and each defines its requirements slightly differently. A step's requirements are used to determine when a step has been completed, both:

  1. by the learner (submitter_is_finished in code), "has the learner completed all their requirements for this step?) and

  2. for the learner (assessment_is_finished in code), "has everything been done to give the user their grade"?).

Different steps may make use of one, none, or both of these definitions of "completed". These methods are defined in openassessment/assessment/api/XXX.py, where XXX is the name of the step in question. These methods are called when the workflow is trying to update, as seen in update_from_assessments in https://github.com/edx/edx-ora2/blob/master/openassessment/workflow/models.py.

Here are all of the possible steps and the requirement values they define:

Definition

During execution, the requirements are all stored together in a single dictionary, with each step's specific requirements stored as a value entry keyed on the step's name. These steps are not held in-memory, but rather fetched from the assessment modules every time the workflow for a problem is updated (see workflow_requirements() in https://github.com/edx/edx-ora2/blob/master/openassessment/xblock/workflow_mixin.py). The reasoning for this is that a course author may want to change a step's requirements, and have all learners see the effect of this. (Example - a peer grading problem defines must_grade and must_be_graded_by to both be 4, but only 3 learners ever complete the problem. The course author changes this number to be 2 for both values, and the learners see their now-completed grades upon refreshing the problem page.)

Thanks to this "fetch from the assessments" nature, the requirements are defined by the course author when setting up the problem in studio, and are then serialized into the problem's XML, to be loaded by the LMS. For an example, see https://github.com/edx/edx-ora2/blob/master/openassessment/xblock/test/data/peer_only_scenario.xml#L90.