Accessibility

Output Options in Captivate – Part 3: SCORM Tracking

Andrew Chemey

AEC Consulting

This article is part of a larger series that reviews the new tracking options available in Macromedia Captivate. To be more specific, these tracking options are not exactly new but the mechanism—or the code behind the tracking options—is new and the functionality has improved.

In this article I focus on the SCORM tracking mechanism—what's new and what you need to know to deploy Captivate content successfully in a SCORM-compliant learning management system (LMS). I do not discuss the specific benefits of using a SCORM-compliant LMS or integrating with any SCORM-compliant LMS. You can find more information about these topics—and general information on the tracking options available, or any other specific tracking mechanisms available in Captivate—in the Captivate Developer Center, including the following:

This article is intended for all types of users. It provides an overview for new users as well as an entry point for any user looking for specific SCORM information and integration issues with Captivate. This article does not describe the SCORM standard or its benefits.

To understand some of the terminology in this document better and view links to other informative sites, you may want to visit the Macromedia eLearning site.

Requirements

To complete this tutorial you will need to install the following software and files:

Captivate (and Captivate-published files)

Flash Player (version 6 or later)

Additional software if you are publishing for AICC, SCORM, Authorware, QuestionMark, or e-mail


Tutorials and sample files:

Using the Sample Files

Sample files are available for each tracking mechanism in Captivate. They provide you with both source and packaged files for each option. You can view the source code to see how the project was created, and you can also see what is published or distributed for each tracking mechanism. Because the provided content has already been tested in each of the tracking environments, you can test the existing content in your environment(s) before comparing the results of creating and publishing your own Captivate content. The sample content available with this article is specific to the SCORM tracking mechanism (see Parts 1 and 2 in this series to understand and download other tracking mechanism sample files). To use the content, download the sample content from the links above. Extract the contents into a working directory. Additional information can be found in ReadMe.txt documents within the extracted files.

Packaged

This folder contains the packaged files (from the source folder) for both SCORM 1.2 and SCORM 2004. The Non-PIF folder contains all the files that are used to import or play the Captivate file in a SCORM-compliant environment. These files are uncompressed, according to the SCORM standard. The PIF folder or file is a compressed version of the Non-PIF folder, where imsmanifest.xml has to reside in the root of the ZIP file. Some LMSs allow you to reference just the HTML file of the content, other LMSs allow you to import or reference the IMSManifest.xml file, and some LMSs allow you to import the PIF file. Contact your LMS administrator for more information.

Note: The folder for SCORM 1.2 contains additional (optional but recommended) XSD files.

Publishing Template

Captivate creates SCORM-compliant content (for both SCORM 1.2 and SCORM 2004 versions). While the manifest that is generated by Captivate was proven to pass the SCORM Test Suites, there were questions regarding its compliancy. To resolve these issues, the publishing templates in this folder are updated to ensure that the manifest generated by Captivate is SCORM-compliant.

Source

This folder contains the source files of Captivate content that is created for SCORM tracking. This gives you an idea of what the source files look like. Please review the packaged folder so that you'll know which packaged files you need to deploy for successful integration with your SCORM-compliant LMS.

Overview

The tracking options found in the Quiz Manager dialog box (see Figure 1) are very similar to what existed in previous versions of RoboDemo. However, the communication architecture has been modified to better support the SCORM standard, in general, and to support SCORM 2004 and additional tracking mechanisms. This support now includes two-way content communication, where the Captivate content is capable of both sending and receiving information from a SCORM-compliant LMS. Previous versions of RoboDemo content only sent SCORM-formatted data to an LMS.

Quiz Manager Dialog box

Figure 1. Quiz Manager Dialog box

The tracking options available in Captivate are as follows:

Note: This article is focused on SCORM tracking. Please visit the Developer Center for information on each of the other tracking mechanisms available in Captivate and to learn how to extend the tracking mechanism to support your own proprietary tracking system.

SCORM Tracking Options

To publish for SCORM, simply create your content, publish for SCORM, and upload or import your Captivate published files to your SCORM-compliant LMS. This process is very simple, just like publishing for other tracking mechanisms. However, there are more options and files that may be generated when you publish for the SCORM standard. Captivate supports two SCORM standards: SCORM 1.2 and SCORM 2004. The runtime files that Captivate generates are the same for both SCORM versions; however, the packaging files are different.

Runtime files are the content or HTML and SWF files that Captivate generates. These files are used to display the content to students and communicate tracking data with the LMS at runtime. The runtime files are exactly the same for both SCORM 1.2 and SCORM 2004. Captivate is capable of communicating to both versions of the SCORM standard but uses the appropriate standard by dynamically determining which one to communicate to at runtime.

Packaging files are the XML, XSD, and other related files that Captivate creates when you publish. They are used to import the content into your LMS. Although the packaging files that SCORM 1.2 and SCORM 2004 require are different, some of the names may be the same (for example, imsmanifest.xml). Due to SCORM requirements, you need to specify which SCORM version or standard you are publishing for, so that Captivate generates the appropriate packaging files. Click the Manifest button in the Quiz Manager to specify the SCORM version and properties when populating and generating the manifest files (see Figure 2).

Selecting the SCORM version (for Publishing Manifest)

Figure 2. Selecting the SCORM version (for Publishing Manifest)

Captivate allows you to create two types of "packaged" content for SCORM: non-PIF and PIF. Non-PIF files are all the files you create when publishing content without creating a ZIP file. Non-PIF files are all the XSD, XML, and related packaging files and the Captivate runtime files in a folder. You can upload all these files to your LMS or reference the imsmanifest.xml file for importing the files into your LMS, as required by your LMS vendor or administrator.

PIF files are generated when you create the ZIP file in the Publish dialog box. This ZIP file is essentially all the non-PIF files compressed, with the files and folders in the root of the ZIP file. Some LMSs allow you to upload or import this packaged file. At the least, this ZIP file makes it easy to transfer SCORM files because you have to upload or send only one file to your LMS administrator. For more information on PIF and non-PIF files, visit the Advanced Distributed Learning website.

Changes to the SCORM standard also include two-way tracking between Captivate and the LMS. For Captivate, two-way communication allows students to maintain both location and "state" data when launching from an LMS. For example, when a student launches a Captivate file with tracking, Captivate sends the LMS data regarding where the student left off and additional state data (or information about how they answered specific questions), so that when students relaunch a Captivate file, it remembers the information from previous sessions. This allows students to launch Captivate files across multiple sessions and still track their overall progress.

General SCORM Experience

Launching and tracking a Captivate file successfully through a SCORM-compliant LMS requires several steps (including a number of hidden steps that aren't exposed to students). The typical process is as follows:

  1. SCORM-compliant content is created using Macromedia Captivate.

    Note: This is not exposed to the student.

  2. The LMS is launched.
  3. The student logs in to the LMS.
  4. The student navigates through the course structure to find a Sharable Content Object (SCO). In this case, assume it's content created using Captivate.
  5. The student launches the Captivate content.
  6. The content is located on a web server (for example, "http://myserver/captivatecontent.htm").
  7. The LMS creates a JavaScript API that is used to communicate to the LMS.

    Note: This is not exposed to the student.

  8. The student progresses through the Captivate content.
  9. Captivate content sends tracking data to the LMS by calling the appropriate JavaScript API methods. The tracking data is sent when the student answers a question and progresses through a Captivate quiz.

    Note: This is not exposed to the student.

Captivate Publish Process

To publish Captivate projects for the SCORM standard:

  1. Create your Captivate project.
  2. Add interactivity, such as questions or click box, push buttons, or text-entry fields.

    Note: In addition to the sample files included with this article, there are several articles on the Developer Center that describe building interactive Captivate files, including:

  3. Select Movie > Quiz Manager from the menu.
  4. Check Enable Output Options in the Quiz Manager dialog box.
  5. Click the SCORM option.
  6. If you are publishing for a specific version of SCORM and need to generate the SCORM Manifest (or IMSManifest), click the Manifest button and edit the fields that are appropriate for your file.
  7. Click OK to close the Quiz Manager dialog box.
  8. Select File > Publish from the menu (or use the shortcut key Shift+Ctrl+P or click the Publish button on the button bar).
  9. In the Publish dialog box, make sure Export HTML is selected; all other settings are optional.
  10. Click the Publish button.
  11. After you publish, you should expect to have a number of files (assuming the ZIP option wasn't selected):

    • Content HTM file: File used to launch the content from your LMS
    • Content SWF file: File generated from your Captivate project that represents your content
    • SCORM_support folder: Used to help track to the SCORM standard at runtime
    • IMSManifest.xml: Describes the course hierarchy and structure; used to import the Captivate file into your LMS
    • XSD files: A number of files used during the import process into your LMS

In most cases, you can copy these files to your content server. You could also manually compress or provide a ZIP file from the publish process to your LMS administrator to import into your LMS system. Captivate automatically generates the IMSManifest.xml file for you, which may be used by your LMS or LMS administrator to upload or import the content into your LMS. More information on the Manifest is available in the next section, "Metadata and Manifest." If you leave the Zip Files option unchecked in the Output Options section of the Publish dialog box, the files that are created when the publish process is completed will be considered non-PIF files. If you want to create a SCORM-PIF file, check the Zip Files option of the Publish dialog box or otherwise zip the contents of the published folder.

SCORM Issues in Captivate

The SCORM standard has always required content to reside on the same server or domain as the LMS. The issues in getting Captivate content to work with your SCORM-compliant LMS typically involve the following:

Finding the SCORM API

There are at least two different ways to find the SCORM API. You can start with the current window and work your way up the parent chain until you find a window with the SCORM API; or you can start at the top window and work your way down the children windows until you find the SCORM API.

Previous versions of RoboDemo content used a single method to find the SCORM API. The JavaScript functions that performed this job either worked, or didn't work. Captivate improves this process because the HTML wrapper file that is generated when publishing for SCORM allows you easily to modify the way the SCORM API is found—or at least it allows you to go from the bottom-up or the top-down, as these two methods seem to capture finding the SCORM API with a bulk of the LMSs on the market. If Captivate content doesn't seem to communicate with your SCORM-compliant LMS, test to make sure the SCORM API is found and then modify the HTML wrapper to change the way the API is found to see if that helps with your LMS.

The HTML wrapper sets several JavaScript variables that represent the SCORM API, the version of the API, and ActionScript mechanism that is used to communicate with the API. These variables include the following:

Some of these variables are passed to the Captivate file, so it knows how to communicate to the LMS. If the SCORM API isn't found, the g_objAPI is null or undefined. This can happen if the JavaScript functions were unable to find the API because of the following:

If communication with your SCORM-compliant LMS doesn't work, you might want to determine if the API could be found. To test whether the SCORM API has been found:

  1. In a text editor, edit the HTM file that was generated by the publish process.
  2. Add the following line before any of the document.write lines towards the bottom of the file: alert(g_objAPI);
  3. This should display an alert message box when you launch the file from your SCORM-compliant LMS.

If the SCORM API cannot be found, change the default value of the API order variable (g_intAPIOrder) so that it tries to find the API from the top-down. To change the order for finding the API:

  1. Edit the HTM file that was generated by the publish process.
  2. Find the line that contains the initialization reference to the variable g_intAPIOrder—by default the line/value is var g_intAPIOrder = 0;
  3. Change the value so that it reads: var g_intAPIOrder = 1;

If the API still cannot be found, contact your LMS vendor for the functions necessary to find their SCORM API.

Supporting Two-Way Communication in Your Environment

In addition to finding the SCORM API, Captivate needs to communicate to the LMS and receive responses from it so that Captivate knows the LMS is initialized and can communicate properly with the SCORM-compliant LMS. If the API isn't found or the LMS is not initialized, tracking data is not sent to the SCORM-compliant LMS. In addition, there are a number of calls to the LMS that require the Captivate file to be updated before the next command is sent.

Closing the Captivate Browser Window

Captivate is capable of automatically closing the browser window, or at least closing the browser window after displaying a JavaScript alert dialog box that asks the user to confirm the close of the window. However, the call to close the browser window only works when the Captivate content is launched in a new browser window, not when it resides inside a frameset. If your LMS launches content inside a frameset, or you created and explicitly launched Captivate content in a frameset, the browser window won't be closed. This is especially noticed when you follow the recommendation to display the "toolbar" and ask users to click the "X" (or exit) button in the toolbar, before exiting the course; or if you have any of the options to close the Captivate file at the end.

To close the browser window, you need to add a window.close function to the HTM file that was generated when you published your Captivate file. The best way to handle this is to add the following (or similar) code to the <body> tag of the published HTM file:

if(window.parent!=window)
{
   window.close = function()
   {
      window.parent.close();
   }
}

This code assumes that the content is launched in a basic frameset. It also assumes that the parent frameset isn't something that needs to remain open. For example, some LMSs open content in a child frame. If you use the code above, the LMS is also closed if the parent frameset contains the LMS application. If your frameset is more complicated, you can either explicitly indicate the window to close (for example, window.top.close();) or you can navigate through the window tree and find the appropriate window to close.

Other LMS or Browser-Specific Issues

This section attempts to outline some issues that were noticed with specific browsers and LMSs. Anything that is listed here is not necessarily answered nor supported but is provided for your convenience.

Metadata and Manifest

Launching Captivate Content

General LMS Information

Here are some general notes about SCORM integration with LMSs:

Where to Go from Here

Captivate is a great tool for capturing and building interactive training demonstrations and simulations. It makes it easy for you to integrate with SCORM-compliant LMSs and provides you with a number of customization options.

For additional information and articles on Captivate and LMS tracking or tools integration, stay tuned to the Captivate Developer Center.

About the author

Andrew Chemey has been involved in learning for almost 10 years. Starting with Macromedia on the Authorware 3 development team he eventually moved to the Pathware/Learning Space development teams for Macromedia and Lotus. He is the developer of the LMS Knowledge Objects for Authorware and recently licensed a basic version to Macromedia for release with Authorware 7. He has also helped build/test the Flash Learning Interaction templates. In addition to working with Macromedia as an employee or contractor on the Authorware, CourseBuilder and Flash development teams, he has been an independent consultant for content developers and LMS vendors; helping to build and integrate AICC and SCORM standards-compliant content and LMSs alike.