1 Reply Latest reply on Mar 12, 2008 8:19 AM by asm0d

    AICC Communication Between Flash and Breeze

    asm0d Level 1
      Hi all,

      You know it, you hate it: building quizzes (and other interactions) using Presenter. But there *is* another option: Build your quiz completely in Flash and upload it directly to Breeze. That way, you have 100% control over how it looks, how it works, and what it does. However, you need to add a little extra code to get it to talk with Breeze if you want to use the LMS functions (completion tracking and such) built in to the server.

      The key is that Breeze is somewhat AICC compliant. I say *somewhat* because the CMI Guidelines for Interoperability from the AICC is next to useless. I had to hack out the commands myself.

      To talk with Breeze, your Flash module requires an HTML "wrapper" which handles the actual commuication. Simply put, the Flash module uses "fscommand()" to send data to the wrapper, which then uses JavaScript to pass the data on to Breeze. Luckily for us, Flash will automatically generate the AICC wrapper files necessary; under your publishing options, make sure HTML is one of the formats, and set it to "Flash with AICC Tracking".

      Now, Flash has a bunch of built-in "learning interaction" components, and even a quiz template. If you don't want to delve any deeper into Flash than that, use the quiz template, publish with AICC support, and upload the resulting fileset to Breeze. The only problem I ran into doing this was that the wrapper files generated by Flash 8 were not compatible with our copy of Breeze (5.5); I had to use the wrapper files from Flash 2004 instead.

      But, if you're like me, you want to make your own learning interactions (with moving conveyor belts and dancing bears and such), and need to write your own code to support that. This is simply a matter of knowing which commands to send to the wrapper to pass the data along. Pasted below is the results of my experimenting to date; I ended up making a small utility to test communication with Breeze to figure out which of the commands that the wrapper recognized actually did something in Breeze. Enjoy!

      AICC Communication between Flash and Breeze

      AICC Abbreviations

      AICC Aviation Industry CBT Committee
      AU Assignable Unit (the module, quiz, presentation, etc.)
      CMI Computer Managed Instruction (a.k.a. LMS, or Breeze)

      Typical format in Flash:

      fscommand (command, argument);

      where both the command and its arguments are strings. If there is more than one argument, they are contained in one string and separated by semicolons (;).

      fscommand (“MM_cmiSetLessonStatus”, “i”);

      fscommand (“MM_StartSession”, “obj_1;101;Quiz1”);

      Commands and What They Do

      MM_cmiSetLessonStatus and CMISetStatus

      arguments: c or complete
      i or incomplete
      p or passed
      f or failed

      Sets the status of the AU under the Curriculum Contents. Can be sent at any time; status updates in Breeze when student closes the presentation. Typical use: Set the status to incomplete at the start of the training (changing it from not taken to incomplete) and complete when they get to the end.

      It also appears that Breeze uses these flags to determine the “time complete” and “time taken” values. Whenever you send a status change in to the server, it sets the “time complete” to that time. For example: The current status is “incomplete”. At 10:56 you send in a “passed” status, and at 10:58 you manually close the AU. The “time complete” will be 10:56, not 10:58. The “time taken” value (available under reports) seems to be cumulative for all attempts.

      Aliases (no arguments):
      Sets status to:
      CMISetStarted incomplete
      CMISetCompleted complete
      CMISetFailed failed
      CMISetPassed passed


      arguments: grade, in %

      example: fscommand(“CMISetScore”,”98”);

      Sets the overall grade for the AU, in percent. The session must include a status change command (before or after) to be updated in Breeze. If a status change message is sent without a set score message somewhere in the session, the grade for the AU changes to 0.


      arguments 1. Date, in YYYY/MM/DD “2008/01/09”
      2. Time, in HH:MM:SS “01:25:07”
      3. Interaction name “Interaction_01”
      4. Object name – usually null?
      5. Interaction Type
      T – true / false
      F – fill in the blank
      M – matching
      S – Short answer
      C – choice (multiple guess or T/F)
      P - performance
      L – Likert
      6. Correct answer “True”
      7. Student answer “False” or “1.a, 2.b”
      8. Result
      W – wrong
      C – correct
      9. Weight – point value for question
      10.Latency – HH:MM:SS – time required to answer

      Example: fscommand (“MM_cmiSendInteractionInfo”, arguments);
      where the “arguments” string is: “2008/01/07;13:51:14;Interaction_01;;C;{1.a,2.b,3.c,4.d};{1.a,2.b,3.c,4.d};C;1;00:02:51”

      This is the command used to send interaction (question) info to the server. The AU must also send a state change message before closing for Breeze to update. NOTE: Breeze tracks a “question” value, which is a string with the text of the question which is used in reports. This string does not appear to be one of the arguments for this command.

      Argument notes:
      Date – no apparent use
      Time – no apparent use
      Interaction ID – used to distinguish one from another for tracking purposes. Numbers are not respected; if you send in two interactions (“int_01” and “int_05”), they will be tracked as questions 1 and 2 on Breeze. It does keep track of names, so sending in “int_01” on first test and “int_02” on a second test will produce a report with two questions.
      Object ID – no apparent use
      Interaction type – no apparent use
      Correct answer – a string with the right answer or set of answers. Not used.
      Student answer – a string with the student’s answer. Used for reports
      Result – C for correct or W for wrong – how Breeze grades the question
      Weight – number of points the question is worth. Used when Breeze calculates the grade for reports.
      Latency – how much time was spent on the question, in HH:MM:SS. required, but usage unknown.

      Non-Responsive Commands

      arguments: (loginURL, activityID, activityName)

      Example: fscommand(“MM_StartSession”,”<null>;101;Quiz1”)



      Unknowns: How does it track slide viewing?
      Where does it get the “question” string used in reports?