By Sean Putman (VP Learning and Development, Altair Engineering)
Adobe Captivate will publish content to xAPI version 1.0. Captivate will publish statements that are readable using the slide name. For the most part with Captivate you are tracking very similar things to SCORM with the xAPI output. Captivate uses ADL registered verbs for its output.
Captivate will output statements for the following interactions:
- Slides,
- Course Attempts,
- Course Completions,
- Questions Slides
The verbs will map as follows:
- Slides use the verb experienced when a slide is viewed;
- Quizzes use the verb experienced when a questions is answered,
- Courses use attempted when the course is started and when the course is completed with the quiz score.
Slide Best Practices
There are important considerations for designers when laying out a course in Captivate. In a normal usage of Captivate one might create an interaction on a slide that uses Advanced Actions to open elements as items are clicked, such as opening a lightbox on a slide to display additional content.
Best Practice
When designing for xAPI with Captivate the interaction should go on a new slide instead of using Advanced Actions.
Rationale
Captivate only reports on the slide views, not on the elements within the slide. By breaking the interaction up over slides you will get views on each of the slides. So when you see the output you will see 3 statements for 1 interaction.
Statement 1 will be experiencing the base slide. Statement 2 will be experiencing the interaction. Statement 3 will be experiencing the base slide after closing the interaction. There will be a few extraneous statements, but without setting up the slides in this manner you will not get the interaction data.
Since we will be using the slides to track the interactions, the slide names are important. The slide names will be what appears in the statement for the object. If you do not enter a name for the slide, Captivate will use a default of slide_# where # is the number of the slide. Making sure to enter meaningful names is critical to useable data from Captivate. When we see the statement we see the actor (which will be set later), the verb (which will always be experienced), and the object (which will be the slide name). While this adds a number of slides in your Captivate file, it will enable tracking the path that a user takes through a course and what interactions he/she opens. This practice works for all types of interactions, whether they are click interactions or rollovers.
Quiz Best Practices
For quiz slides, the slide name will use the question that is entered on the slide. The second statement will be the score of the answered question. The verb for the slide will be experienced and the slide name will appear. When a quiz is finished Captivate produces a statement with the verb attempted, the course name, and the score received on the quiz.
Best Practice
When creating the question slide, be sure to give the slide a meaningful name as with the other slides.
Rationale
When the statement is created for experiencing the question slide it will grab the name of the slide for the object.
Publishing and Launching the Content
IN the publishing window enter a Project Name and a Description. The Project Name will be used to generate the object for the course attempt statements. The Description will appear in the JSON for the course.
The settings for output of statements can be found in the Reporting selection in the publish dialog. When publishing content click the eLearning Output link to open the preferences. In the Standard menu select the TinCan output.
Captivate 9.0 Differences
There is only one slight difference in Captivate 9.0, the option has been renamed from TinCan to xAPI. The other functions work the same as version 8.0.
Identify how the student will be graded in the preferences.
You can use slide views or quiz results. Once the setup is complete the course is published and a .zip file is created.
If you are using a compatible LMS or Grassblade xAPI Companion the zip file can be uploaded directly to the system.
There is a launcher available from Saltbox http://launcher.saltbox.com that allows the content to be launched without customizing the URL by hand. The link from the launcher can then be used in other systems.
JSON Examples
Slide
Sean Putman http://adlnet.gov/expapi/verbs/experienced ‘Introduction’
{ "id": "c48a6d6f-56ff-4af1-88f4-0f2d2a928115", "timestamp": "2015-08-30T00:08:42.514Z", "actor": { "objectType": "Agent", "mbox": "mailto:sputman34@gmail.com", "name": "Sean Putman" }, "verb": { "id": "http://adlnet.gov/expapi/verbs/experienced", "display": { "und": "experienced" } }, "context": { "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e", "contextActivities": { "parent": [ { "id": "http://Course_ID1", "objectType": "Activity", "definition": { "name": { "en-US": "Captivate E-Learning Course" }, "description": { "en-US": "This is a description" } } } ] } }, "object": { "id": "http://Course_ID1/Introduction", "objectType": "Activity", "definition": { "name": { "en-US": "Introduction" } } }, "stored": "2015-08-30T00:07:40.934Z", "authority": { "account": { "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/", "name": "15-557d7b8d7eda474" }, "objectType": "Agent" } }
Quiz Question
Sean Putman http://adlnet.gov/expapi/verbs/experienced ‘How many JavaScript files need to be linked at the head of the file?’
{ "id": "27615b18-d61d-438d-b6da-7acbc018ac2a", "timestamp": "2015-08-30T00:09:08.916Z", "actor": { "objectType": "Agent", "mbox": "mailto:sputman34@gmail.com", "name": "Sean Putman" }, "verb": { "id": "http://adlnet.gov/expapi/verbs/experienced", "display": { "und": "experienced" } }, "context": { "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e", "contextActivities": { "parent": [ { "id": "http://Course_ID1", "objectType": "Activity", "definition": { "name": { "en-US": "Captivate E-Learning Course" }, "description": { "en-US": "This is a description" } } } ] } }, "object": { "id": "http://Course_ID1/What is the variable that stores the actor information?", "objectType": "Activity", "definition": { "name": { "en-US": "What is the variable that stores the actor information?" } } }, "stored": "2015-08-30T00:08:07.266Z", "authority": { "account": { "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/", "name": "15-557d7b8d7eda474" }, "objectType": "Agent" } }
Course Start
Sean Putman http://adlnet.gov/expapi/verbs/attempted ‘Captivate E-Learning Course’
{ "id": "f8f8f02f-4f5e-4d29-9216-4affe60e91e0", "timestamp": "2015-08-30T00:08:40.245Z", "actor": { "objectType": "Agent", "mbox": "mailto:sputman34@gmail.com", "name": "Sean Putman" }, "verb": { "id": "http://adlnet.gov/expapi/verbs/attempted", "display": { "und": "attempted" } }, "context": { "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e" }, "object": { "id": "http://Course_ID1", "objectType": "Activity", "definition": { "name": { "en-US": "Captivate E-Learning Course" }, "description": { "en-US": "This is a description" } } }, "stored": "2015-08-30T00:07:38.619Z", "authority": { "account": { "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/", "name": "15-557d7b8d7eda474" }, "objectType": "Agent" } }
Course Complete
Sean Putman http://adlnet.gov/expapi/verbs/attempted ‘Captivate E-Learning Course’ with score 20
{ "id": "85c1dc3e-37be-4ed7-bcae-54e0092b5791", "timestamp": "2015-08-30T00:09:50.107Z", "actor": { "objectType": "Agent", "mbox": "mailto:sputman34@gmail.com", "name": "Sean Putman" }, "verb": { "id": "http://adlnet.gov/expapi/verbs/attempted", "display": { "und": "attempted" } }, "result": { "duration": "PT6M8.26S", "score": { "raw": 20, "min": 0, "max": 30 } }, "context": { "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e" }, "object": { "id": "http://Course_ID1", "objectType": "Activity", "definition": { "name": { "en-US": "Captivate E-Learning Course" }, "description": { "en-US": "This is a description" } } }, "stored": "2015-08-30T00:08:48.419Z", "authority": { "account": { "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/", "name": "15-557d7b8d7eda474" }, "objectType": "Agent" } }
SEAN PUTMAN (VP, Learning and Development, Altair Engineering)
Sean Putman, the Vice President of Learning Development for Altair Engineering and the Owner of Intellectus Learning, has been an instructor, instructional designer, and developer for over 15 years. He has spent his career designing and developing training programs, both instructor-led and online, for many different industries. Sean has also spent the last few years focusing on the use and deployment of the Experience API and its affect on learning interventions. Sean has spoken at many industry conferences on xAPI and related topics.
Hi Sean
Thanks for the great post. I am using wordpress with Grassblade xAPI plus their LRS. Once the data is stored in the LRS what is the best way of analysing the data and visualising. I have seen some interesting learning analytics radar and all. WHat can I do with the data I am collecting in the LRS?