Flash/Captivate and Web Services

Every now and then we get a customer who wants to enhance their project with more advanced features, perhaps to due to a lack of functionality in their LMS, or to integrate a custom content-management service.

For example, a client would like to record specific SCORM data that their LMS does not support. One way around this issue is to send that data to a “web service” on another domain.

One of the more complex aspects of these projects is working with the various security models. Often, especially in the case of the above example where an LMS is delivering the content, ‘cross-domain’ issues may arise. The security reasons for preventing this from working without explicit allowance are reasonable, but it does add complexity to the solution.

Fortunately with our talented folks here at ICS, we have successfully implemented this type of solution for recent customers.

In one situation, a customer with an ‘enterprise’ LMS wasn’t able to track interaction data. Due to contractual issues, they couldn’t just switch to our LMS, so we created a custom web service to track that interaction data separately. We then customized past lessons we’d created for them with a ‘web service flag’ that, when enabled, sent all interaction data to this custom webservice (along with the user, course, and lesson name and ID) to via an SSL connection. While the customer now has to login to a separate site (which we host) to review that interaction data, at least they can now track it!

This customer also creates their own learning content, usually in Captivate, so we’ve created a ‘Widget’ that communicates with the aforementioned webservice. We even placed that widget into a Captivate template for them to use in their own courseware.

In another situation, a customer had a robust, custom content management system (CMS) for their courseware but lacked the ‘lesson engine’ to effectively deliver that content in a SCORM-compliant manner to a variety of LMS products.

To address the need for a robust engine, we developed a product in Flash that pulled relevent data from the LMS (user name, location, etc) and sent it to the CMS, which then delivered content appropriate for that user and/or demographic. This allows one overall courseware engine to be used for a variety of content, and allows content to be updated on the customer’s CMS as opposed to having to rework the course itself.

In those cases, as well as others in the works, communicating with a web service can add significant functionality and flexibility to a lesson. The move from AS2 to AS3 added complexity to a native Flash solution, but the answer is still there in the Flex framework (a nudge from Adobe to push folks into Flex, er, ‘Flash Builder, development).