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".