Forum .LRN Q&A: Re: Anyone working on Scorm ?
Let me suggest that you (and other interested parties) take a peak at IMS Simple Sequencing Content Developer's Guide which talks about grading/tests in tandem with simple sequencing, albeit in a not very detailed way. It may prove strategic to form one's opinion about the "big picture" (LMS) of which grading will be a substancial part. AFAICT the two concepts - grading system / graded survey and LMS / curriculum - go hand in hand (although they can also be used separately). So, that document may not be as off topic as it may seem. I found it quite easy to read, too ...
As mentioned by folks in other threads, methods of the survey/grading package that will answer questions and/or perform actions on behalf of the curriculum/LMS should be exposed to the same by use of service contracts to avoid unnecessery package dependencies and to encourage code reuse, etc.
Example contract for LMS/Curriculum:
create function inline_1() returns integer as ' DECLARE BEGIN PERFORM acs_sc_contract__new ( 'Survey', -- contract_name 'Survey Information Provider' -- contract_desc ); PERFORM acs_sc_msg_type__new ( 'Survey.GetValue.InputType', 'object_id:integer,student_id:integer,element:string' ); PERFORM acs_sc_msg_type__new ( 'Survey.GetValue.OutputType', 'value:string' ); PERFORM acs_sc_operation__new ( 'Survey', -- contract_name 'GetValue', -- operation_name 'Get SCORM element value', -- operation_desc 'f', -- operation_iscachable_p 3, -- operation_nargs 'Survey.GetValue.InputType', -- operation_inputtype 'Survey.GetValue.OutputType' -- operation_outputtype );Example service contract implementation in Survey:
impl_id := acs_sc_impl__new ( ''Survey'', ''GradedSurvey'', ''survey'' ); foo := acs_sc_impl_alias__new ( ''Survey'', ''GradedSurvey'', ''GetValue'', ''lms::get_value'', ''TCL'' );This is an (untested) example of how the LMS/curriculum package would get the value which Andrew set for the "cmi.core.score.raw" element:
set value [acs_sc_call Survey GetValue [list $object_id $user_id "cmi.core.score.raw"] GradedSurvey]If we assume that there is a method in survey that is called like this...:
# Possible OACS/Tcl. lms::get_value [ -object_id $object_id -student_id $student_id -element "cmi.core.score.raw"]... $value should now contain the value "85".