Forum .LRN Q&A: Re: Anyone working on Scorm ?

Collapse
Posted by Ola Hansson on
Andrew, I read the ADL (NATO's standard) pdf and as you point out it is based on (and mandates) a JavaScript implementation. However, it describes the data model and the API in a detailed way, which is nice, and we should be able to take various pieces out of it. The IMS specification and description of SCORM, OTOH, doesn't specify which programming language to choose and appears rather to assume a server side API.

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