Is SCORM communication asynchronous?

313 views
Skip to first unread message

James Jordan

unread,
Jun 28, 2017, 4:27:21 PM6/28/17
to eLearning Technology and Development
I'm trying to troubleshoot an issue we're having with dropped connections.  We're on SumTotal 8.9.3 and IE11. I have a Storyline 2 CBT that's 2.5 hours long.  SumTotal opens the CBT in a new window and maintains communication with the server, but some time during the 2.5 hours the SumTotal window logs out, but the CBT keeps going.  They get to the end and take the test and pass, close out the CBT window and the SumTotal window is at a login screen.  When I log back in and restart the CBT it goes back to the last place that communication was received.  My question is if the session for the SumTotal window timed out would the CBT know that or would it just keep sending data?

Ethan Estes

unread,
Jun 28, 2017, 4:46:03 PM6/28/17
to elearning-technolo...@googlegroups.com
Could be the Storyline codebase. Good coding practice would have the runtime generate some form of visual alert for the user that it is not receiving responses to the cmi commits.

It also could be Sum Total if for example they config the CMI javascript API to gather api get/set calls on the client side, always send success responses to the course code and then deal with local CMI API <--> remote LMS asynchronously and separate from the course "flow reality".  Some LMSs do this to smooth over any latency or temp loss of connection.

I personally would see if you can add in extra commits to the SL course to force a CMI API<-->LMS communication and keep the time out delayed.

June 28, 2017 at 4:27 PM
I'm trying to troubleshoot an issue we're having with dropped connections.  We're on SumTotal 8.9.3 and IE11. I have a Storyline 2 CBT that's 2.5 hours long.  SumTotal opens the CBT in a new window and maintains communication with the server, but some time during the 2.5 hours the SumTotal window logs out, but the CBT keeps going.  They get to the end and take the test and pass, close out the CBT window and the SumTotal window is at a login screen.  When I log back in and restart the CBT it goes back to the last place that communication was received.  My question is if the session for the SumTotal window timed out would the CBT know that or would it just keep sending data?
--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
Visit this group at https://groups.google.com/group/elearning-technology-and-development.
To view this discussion on the web visit https://groups.google.com/d/msgid/elearning-technology-and-development/3a32c284-44d1-43ce-ab10-683ba86978a6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
-EÆ

James Jordan

unread,
Jun 28, 2017, 6:35:36 PM6/28/17
to elearning-technolo...@googlegroups.com
Thanks Ethan! I'll check on that. I've launched the CBT and tracked suspend_data in real time. The CBT sends data every 10 min to the LMS, but at a certain point the last update time and the suspend_data stays the same. This corresponds to when SumTotal logs me out of the main window for inactivity, but the CBT still functions as normal except nothing is getting saved. An added layer of complexity is that we use SSO so that doesn't help either.

Sent from my iPhone

Philip Hutchison

unread,
Jun 28, 2017, 6:36:07 PM6/28/17
to elearning-technolo...@googlegroups.com
Unfortunately, return values from Commit() are not reliable. The SCORM API is typically just a client-side JavaScript running in the main LMS window. When Commit() is invoked, the SCORM API will use AJAX to submit the changes to the LMS's database (HTTP/S POST). There is no mechanism within the SCORM spec for alerting the course or student when the SCORM API is unable to successfully post the data. And since AJAX is usually not synchronous (it would lock up the browser), the return value from Commit() is usually faked. It will pretty much always return 'true' unless the API session has been terminated or hasn't been initialized.

Since the API and the course itself are both client-side, and the return value of Commit() is not trustworthy, and there is no error handling for failed SCORM API AJAX calls, it would be quite easy for a course to keep going and going even if the LMS has timed out in the background.

There's really not much you can do about it. 





On Wed, Jun 28, 2017 at 1:45 PM, Ethan Estes <ees...@gmail.com> wrote:
Could be the Storyline codebase. Good coding practice would have the runtime generate some form of visual alert for the user that it is not receiving responses to the cmi commits.

It also could be Sum Total if for example they config the CMI javascript API to gather api get/set calls on the client side, always send success responses to the course code and then deal with local CMI API <--> remote LMS asynchronously and separate from the course "flow reality".  Some LMSs do this to smooth over any latency or temp loss of connection.

I personally would see if you can add in extra commits to the SL course to force a CMI API<-->LMS communication and keep the time out delayed.

June 28, 2017 at 4:27 PM
I'm trying to troubleshoot an issue we're having with dropped connections.  We're on SumTotal 8.9.3 and IE11. I have a Storyline 2 CBT that's 2.5 hours long.  SumTotal opens the CBT in a new window and maintains communication with the server, but some time during the 2.5 hours the SumTotal window logs out, but the CBT keeps going.  They get to the end and take the test and pass, close out the CBT window and the SumTotal window is at a login screen.  When I log back in and restart the CBT it goes back to the last place that communication was received.  My question is if the session for the SumTotal window timed out would the CBT know that or would it just keep sending data?
--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

--
-EÆ

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

Philip Hutchison

unread,
Jun 28, 2017, 6:43:01 PM6/28/17
to elearning-technolo...@googlegroups.com
We just crossed email streams. Per my prior email, the method you're attempting -- monitor a CMI element's value -- is also not reliable, as the values are saved within the client-side JavaScript, even if they aren't persisted to the DB.

For example, 

API.SetValue("cmi.lesson_location", "1");
API.Commit();
API.GetValue("cmi.lesson_location");

will save the value "1" in a local JavaScript object before being pushed to the server. When you do a 'get', the codebase is almost always going to get the value from the local JavaScript object, not from the server. (Remember, AJAX is not synchronous, it has too much overhead, so it's easier to query the local object and assume it matches the value on the server.) 

Therefore this example will always return the value "1" within the same course session regardless of whether the backend system actually managed to persist the data. Changing the value to "2" will always return "2", even if the backend connection has stopped working. UNLESS the vendor baked some kind of error-checking into their SCORM API codebase, which is unlikely due to the complexity involved.



On Wed, Jun 28, 2017 at 3:35 PM, James Jordan <jpjor...@gmail.com> wrote:
Thanks Ethan! I'll check on that. I've launched the CBT and tracked suspend_data in real time. The CBT sends data every 10 min to the LMS, but at a certain point the last update time and the suspend_data stays the same. This corresponds to when SumTotal logs me out of the main window for inactivity, but the CBT still functions as normal except nothing is getting saved. An added layer of complexity is that we use SSO so that doesn't help either.

Sent from my iPhone

On Jun 28, 2017, at 4:45 PM, Ethan Estes <ees...@gmail.com> wrote:

Could be the Storyline codebase. Good coding practice would have the runtime generate some form of visual alert for the user that it is not receiving responses to the cmi commits.

It also could be Sum Total if for example they config the CMI javascript API to gather api get/set calls on the client side, always send success responses to the course code and then deal with local CMI API <--> remote LMS asynchronously and separate from the course "flow reality".  Some LMSs do this to smooth over any latency or temp loss of connection.

I personally would see if you can add in extra commits to the SL course to force a CMI API<-->LMS communication and keep the time out delayed.

June 28, 2017 at 4:27 PM
I'm trying to troubleshoot an issue we're having with dropped connections.  We're on SumTotal 8.9.3 and IE11. I have a Storyline 2 CBT that's 2.5 hours long.  SumTotal opens the CBT in a new window and maintains communication with the server, but some time during the 2.5 hours the SumTotal window logs out, but the CBT keeps going.  They get to the end and take the test and pass, close out the CBT window and the SumTotal window is at a login screen.  When I log back in and restart the CBT it goes back to the last place that communication was received.  My question is if the session for the SumTotal window timed out would the CBT know that or would it just keep sending data?
--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

--
-EÆ

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

eloyfq

unread,
Jun 28, 2017, 6:45:46 PM6/28/17
to eLearning Technology and Development
Hi!

I experienced the same issue years ago. I only found two ways to success:

If you are not running SumTotal as a SaaS and you own the server, adjust the session life time to the highest possible value.

Or... And this is probably a silly sounding solution, split your training in smaller scorm packages.

I hope it helps.

Eloy

James Jordan

unread,
Jun 28, 2017, 7:57:48 PM6/28/17
to elearning-technolo...@googlegroups.com
Thanks Eloy! Yes, we host on our own servers. That's one of the things we're looking at.

Sent from my iPhone
> --
> You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/elearning-technology-and-development/2bc8ea2d-c3cf-428d-8497-cb2b735b78e9%40googlegroups.com.

James Jordan

unread,
Jun 28, 2017, 8:01:14 PM6/28/17
to elearning-technolo...@googlegroups.com
Thanks Philip! That makes sense to me. Now to find a workaround.

Sent from my iPhone
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages