Showcase and discover digital art at yex

Follow Design Stacks

Subscribe to our free newsletter to get all our latest tutorials and articles delivered directly to your inbox!

Output Options in Captivate – Part 2: Captivate AICC Issues

Captivate AICC Issues

There were some big changes to the AICC tracking mechanism in Captivate. Most of the changes facilitated two-way communication between Captivate files and AICC-compliant LMSs. Previous versions of RoboDemo content used frames in framesets to facilitate the AICC communication, where the RoboDemo (SWF) file didn’t actually send tracking data directly to the LMS, but rather communicated to the HTML wrapper file(s), which performed HTTP Posts to send data to the LMS. The results of the posts were never communicated back to the RoboDemo file. Instead, whenever a user opened a RoboDemo file from an AICC-compliant LMS, the RoboDemo file always opened from the beginning and always assumed the user had opened the content for the first time. Results, such as score and status, were automatically reset with this assumption. Users who had previously opened a RoboDemo file from their LMS already had a status and score stored in the LMS; those figures were immediately overwritten (based on the rules and capabilities of the LMS) with a status of “incomplete” and a score of “0.”

The issues you might encounter as you develop and implement Captivate content into an AICC-compliant LMS are:

  • Cross-domain communication
  • AICC Course Structure Files
  • Closing [Captivate] browser window
  • LMS/Browser-specific issues

Cross-domain communication

Captivate provides a better tracking mechanism when communicating to AICC-compliant LMSs. This includes two-way communication and support for more tracking options. With this new mechanism, there are some issues that may prevent the content from tracking properly. The biggest issue deals with cross-domain posting of data. Captivate uses ActionScript to perform HTTP Posts to AICC-compliant LMSs. The Flash Player places some restrictions on ActionScript when attempting to post data to servers that reside on different domains from where the content is hosted. You can find more information on the Flash Player security restrictions in the article, Security Changes in Flash Player 7.

If the Captivate files (content) are hosted on the exact same domain as the LMS, then there shouldn’t be any problems attempting to communicate with an AICC-compliant LMS. The different scenarios for hosting and opening Captivate-based content from an AICC-compliant LMS are:

  1. Captivate files reside on the same domain/server as the AICC-compliant LMS.
  2. Captivate files reside on a different domain/server from the AICC-compliant LMS, and a file called “crossdomain.xml” is properly configured and available on the root of the LMS server and the end-user (student) uses Flash Player 7 or higher.
  3. Captivate files reside on an n-1 domain/server from the AICC-compliant LMS, and the end-user (student) uses Flash Player 6 (not FP7) and allows cross-domain posting to occur.
  4. Captivate files reside on a different domain/server from the AICC-compliant LMS, if they are properly configured and opened from an AICC frameset. Opening Captivate files in this manner limits the communication to one-way and resume/bookmark data is unsupported.

The following sections give more details on the above scenarios.

Captivate files reside on the same domain/server as the AICC-compliant LMS

If the Captivate published files reside on the same domain/server as the AICC-compliant LMS, there shouldn’t be any issues with tracking. When you open the HTML wrapper file from the LMS, the AICC parameters are attached to the URL of the Captivate file and used to communicate data to the LMS. This is the best method for hosting and opening/tracking AICC-based Captivate content.

Captivate files reside on a different domain/server from the AICC-compliant LMS

If Captivate files will reside on a different server than your AICC-compliant LMS and you have control over both the LMS and student environments, you can have a successful deployment. For additional information, read the article, Security Changes in Flash Player 7. This section provides a brief summary of how the new security settings affect Captivate files and how you can host your Captivate files on a different domain from your LMS.

Essentially, you must have the following environment to successfully host and track Captivate content when it is on a different domain from your AICC-compliant LMS:

  • A properly hosted/configured file named crossdomain.xml on the root of your LMS server
  • Student (client) machines with Flash Player 7 installed

The purpose of the crossdomain.xml file is to indicate to the web server that hosts your LMS, which domain(s) are allowed to post data. Captivate content uses an HTTP-POST to send tracking data to AICC-compliant LMSs. You must indicate to the LMS server (through the crossdomain.xml file), which servers will host your Captivate content. You don’t need to explicitly indicate which servers will host your Captivate content, but it’s always a good measure to only allow specific servers post data.

The most basic crossdomain.xml file would look like the following:

<CROSS-DOMAIN-POLICY>
<ALLOW-ACCESS-FROM secure="false" domain="*" />
</CROSS-DOMAIN-POLICY>

You must copy/paste the code above into a file called crossdomain.xml and make it available in the root of the web server that hosts the LMS. An example crossdomain.xml file is available in the AICC folder of the example files associated with this document.

For the policy file to work, your students must use Flash Player 7 or higher.

Captivate files reside on an n-1 domain/server from the AICC-compliant LMS

Prior to Flash Player 7, then only way that Flash-based content could post data to a server in a different domain, was if the content and LMS were on n-1 matching domains. For instance, you would host content on N-1 matching domains, for example, with content.mysite.com and the LMS hosted on lms.mysite.com. Macromedia Flash Player 6 allows posts to occur between these domains.

If you host Captivate files in this type of environment and use Flash Player 6 on the student or client machines, the Captivate content will send tracking data to the LMS. However, if the students are using Flash Player 7, they may see a security prompt they have to explicitly allow before the posts can occur, based on their Flash Player settings.

Read the article, Security Changes in Flash Player 7 for information on the Flash Player settings and security restrictions.

Captivate files reside on a completely different domain/server or do not meet any of the other previous conditions

If Captivate files do not reside on the same domain as the LMS server and do not meet any of the conditions previously listed, the content may track, but may cause additional browser windows to appear while the student interacts with the Captivate content. To let students interact with Captivate content hosted on a different domain from the LMS, you can use a frameset (which is similar to the way RoboDemo content interacts with an LMS). Using a frameset and hosting the content on a different domain does not support two-way tracking, so while the Captivate content will send tracking data to the LMS, the Captivate content cannot use the responses from the LMS (such as location, score, and status).

An AICC-compliant frameset is available in the AICC folder of the example files. Use the two frameset files in that folder for final preparation of your Captivate content with an AICC-compliant LMS. To use these files, use the following steps:

  1. Create and publish your Captivate content for AICC tracking
  2. Copy the two files, frameset.htm and result.htm, to the same folder where you published the Captivate content
  3. Edit frameset.htm in a text editor. Find the following lines in the file:
  4. In the second line, change the text: CAPTIVATE_FILE_GOES_HERE.htm to the name of the HTM file you created when you published your Captivate project.
  5. Reference the frameset.htm file in your AICC Course Structure Files, or open the frameset.htm file directly from your LMS.

Note: You can rename the frameset.htm file. If you rename the content filename or the result filename, you must also change the reference in the frameset.htm file.

AICC Course Structure Files (AICC CSF or CSF)

Once the files are packaged, upload them to your content server and/or import them in to your LMS. The import process may include the ability to both upload the files to your content server and make an entry in your LMS to indicate the files are available for enrollment. Each LMS is different, so you’ll have to contact your LMS Administrator to determine the best process to upload and import your files and course structures into your LMS.

In some cases, you can provide your LMS Administrator the Captivate content files (the HTM/SWF files) or you can send your administrator a ZIP file that compresses your Captivate files and makes them more convenient to distribute. In other cases, however, you may need to provide AICC Course Structure files (AICC CSF or CSF), which are used to import or reference the Captivate content from an LMS.

Note: You often refer to these files by their extensions, which are: AU, CRS, CST, and DES. This might help you understand what users are referring to, when they mention these file formats.

Captivate does not create the AICC Course Structure files for you. A set of example AICC CSFs are included with the example downloads, though they only provide a very simple structure for you to review. Please visit the AICC website for more specific information.

In the future, in addition to the AICC CSF, there may be other means for you to import or notify an LMS when your content is available. Macromedia has been working to define and support the PENS standard; a notification scheme that will enable a content creator’s authoring system to announce that a content package is available and ready for transport from a location that it will provide. Please see the AICC or Macromedia websites for more information about this emerging standard.

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 closing the window. However, the call to close the browser window only works when a user opens the Captivate content in a new browser window and not inside a frameset. If your LMS opens content inside a frameset, or you followed the instructions above to create and explicitly open the Captivate content in a frameset, it won’t close the browser window. Notice this especially 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 must add a window.close function to the HTM file that was generated when you published your Captivate file. One way to handle this is to add the following (or similar) code to the tag of the published HTM file:

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

This code assumes that the user has opened the content in a basic frameset. It also assumes it is unnecessary for the parent frameset to stay 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 (by using window.top.close();), or you can walk the window tree and find the appropriate window to close.

LMS/Browser-specific issues

This section outlines some issues that the Captivate team noticed with specific browsers and LMSs. The list I provide here does not necessarily provide supported solutions; but I have provided to help you troubleshoot issues you may encounter.

Oracle-hosted LMS

If you are using the Oracle iLearning LMS, importing and opening Captivate content may not work properly. When you import AICC-compliant content into Oracle iLearning, the content is hosted on a different n-1 matching domain: The content appears to be hosted on iLearningcontent.oracle.com, with the LMS hosted on iLearning.oracle.com. This can cause the Captivate content to to track improperly to the Oracle LMS. There are a few solutions:

  1. Host the crossdomain.xml file on the root of the Oracle LMS server.
  2. Use a frameset as documented above (which supports one-way LMS tracking).
  3. Modify the AICC_URL parameter to reference the tracking URL on the content domain.

The following gives more detail on the above solutions

  1. Host the crossdomain.xml file on the root of the LMS server.

    Create or modify the crossdomain.xml file provided with the AICC example file downloads. Provide this file to your LMS Administrator, so that he or she can host it at the root of the Oracle LMS server. Modify this file to only allow posts from the domains that Oracle supports.

  2. Use a frameset.

    Copy the frameset files provided in the download for the AICC example files, to the same folder as your content files that are published from Captivate. Modify the frameset files as documented previously to refer to your content files. Make sure you open the frameset document from the Oracle LMS. Using the frameset will not support two-way LMS communication, but will track properly from Captivate content to the Oracle LMS.

  3. Modify the AICC_URL parameter

    For tracking to work properly, the domain referenced by the AICC_URL must match the domain that hosts the Captivate content. For instance, in the hosted environment on ilearning.oracle.com, even though the AICC_URL references the iLearning.oracle.com domain and iLearningcontent.oracle.com hosts it, the tracking won’t necessarily work properly (unless you implement one of the other solutions previously mentioned).

    In Oracle, we found another issue. You must remove the mastery and maximum scores from the AU metadata file, otherwise the LMS would complete the course after reporting a score.

    Note: Captivate does not generate the AICC CSFs.

    Aspen LMS

    When using Aspen, opening AICC-Compliant content might not track properly unless you remove the encoding of parameters passed to the Captivate file. Aspen appears to partially URL-Encode parameters and doesn’t need to further encode the parameters before opening. This is changed in the HTM file that you created during the publish process. To avoid modifying URL-encoding of the AICC parameters:

    1. In a text editor, edit the HTM file that you created during the publish process.
    2. Comment out the following line:
      strURLParams = (strURLParams==
      unescape(strURLParams)?escape(strURLParams):strURLParams);

      So that the line looks like the following:

      //strURLParams = (strURLParams==
      unescape(strURLParams)?escape(strURLParams):strURLParams);

      Saba LMS

      If you are using Saba, similar to Oracle iLearning, you must remove the mastery and maximum scores from the AU metadata file, otherwise, the LMS completes the course after reporting a score. Note: Captivate does not generate the AICC CSFs.

      The Saba LMS does not support passing scores as Raw scores (Raw, Max, Min format). This behavior won’t generate an error and tracking won’t occur, either. Make sure you send the score as a percent. See “General LMS Information” in the next section for additional information on how to send score as a percent.

      General LMS Information

      Here are some general notes about AICC integration with LMSs.

      1. Some LMSs don’t support receiving a score in a “Raw, Min, Min” format (this is also known as “8, 0, 10,” where 8 is the student’s raw score, 0 is the minimum score and 10 is the maximum score). If tracking doesn’t occur properly or you (or your LMS Administrator) knows that score must be sent as a Percent (such as .80), set up Captivate content to send the score as a Percent using the following steps:

        1. Select Movie > Quiz Manager… from the menu
        2. Make sure Percent is selected in the “Report score to LMS as” field
        3. Captivate files report session time several times during each session. Customers reported that some LMSs only store the last reported session time, even though the user reset the timer every time the user sent tracking data to the LMS (according to the AICC standard). As a result, the total time on the LMS might not accurately reflect the actual time that a student spent. Some LMSs don’t support interaction data or how the student responded to each individual question. If your LMS does not support interaction data, make sure you modify your Captivate content to only send tracking data, such as score, to the LMS: Use the following steps to set score reporting in Captivate:
          1. Select Movie > Quiz Manager… from the menu Change Reporting Level to only Report the score.
          2. Some LMSs require you to issue an ExitAU command when content finishes sending tracking data to the LMS. Captivate sends the ExitAU command when the user clicks the Exit button in the Captivate toolbar.
          3. If the students do not click this button or you don’t display the toolbar in your content, Captivate still tries to issue the ExitAU command through the HTML file that opened the file. The HTM file has two methods that you can use to issue this command: spawning a new browser window, and using an embed tag to open a separate Flash file. If the ExitAU command is not issued, you can try to force an embedding of the Flash file to facilitate this communication. To do so, use the following steps:

            1. Publish your Captivate file with AICC selected in the Quiz Manager.
            2. In a text editor, edit the HTM file that you generated during the publishing process.
            3. Find the Finish()JavaScript method.
            4. Comment out the following line:
              var w = varWindow.open("","mm_exitAU",…
            5. Add a new line:
              var w = null;

            This code may force the Finish function to issue the ExitAU command by opening a separate Flash file.

          4. If clicking the Exit button on the Captivate toolbar doesn’t close the browser window, it’s probably because the LMS opened the Captivate content in a frameset. This is expected behavior, though it is still recommended that the students click the Exit button in the Captivate content before closing the browser window or otherwise exiting the content.
          5. Captivate sends tracking data during periods of inactivity and approximately every 2 minutes. This may keep the students’ LMS sessions alive if they never closed the content or logged out of the LMS, even if they aren’t at their computers.

Comments