Not signed in (Sign In)

Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.

Welcome Guest!
Want to take part in these discussions? If you have an account, sign in now.
If you don't have an account, apply for one now.
    • CommentAuthorbjsammons
    • CommentTimeSep 11th 2008
     
    Thanks for a great SCORM wrapper.

    On a governemnt LMS we had an issue where the API is intentionally initialized before the course actually loads and the wrapper would detect the API as initialized and end up dropping it.

    starting at Line 249
    ...
    switch(scorm.version){
    case "1.2" : success = makeBoolean(API.LMSInitialize("")); break;
    case "2004": success = makeBoolean(API.Initialize("")); break;
    }
    //added this section
    errorCode = debug.getCode();
    if(errorCode===103)
    {
    success = true;
    }
    //end added section

    if(success){
    //Double-check that connection is active and working before returning 'true' boolean
    errorCode = debug.getCode();
    ...

    This resolved the issue and prevented the wrapper from dropping the API if it was already initialized.

    Not sure about the intent and whethor or not this was the best approach.

    Any thoughts?
    • CommentAuthorphilip
    • CommentTimeSep 11th 2008
     
    Isn't that non-standard behavior on the LMS's part? The SCO is supposed to be responsible for initializing the session:

    SCORM 1.2 docs:

    3.3.2
    All communication between the API Adapter and the SCO is initiated by the SCO.

    3.3.2.1 LMSInitialize
    It is a requirement of the SCO that it call this function before calling any other API functions.

    The SCO tells the API Adapter that the content wants to establish communication with the LMS.


    SCORM 2004 docs:

    3.1.3.1 Initialize
    A SCO uses session methods to initiate and terminate data communication between itself and an API Instance.

    Description: The function is used to initiate the communication session. It allows the LMS to handle LMS specific initialization issues.

    3.1.6. Communication Session State Model
    Running: This describes the conceptual communication state once the Initialize("") API method is successfully invoked by the SCO and before the Terminate("") API method call is successfully invoked by the SCO.


    So the LMS is not supposed to initialize the API until the SCO tells it to. I guess your LMS vendor has a different way of interpreting these statements.

    As far as impact on the wrapper, what you suggest seems logical enough. I'll add it to my list.

    Thanks!
    - philip
    • CommentAuthorbjsammons
    • CommentTimeSep 11th 2008
     
    Yep, typically government for you. I just wondered how isolated this was and thought I'd share what we did in case others have to endure gov work. With deadlines and no control over their LMS ... what's one to do?