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 (;).
example:
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
CMISetScore
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.
MM_cmiSendInteractionInfo
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
MM_StartSession
arguments: (loginURL, activityID, activityName)
Example:
fscommand(“MM_StartSession”,”<null>;101;Quiz1”)
MM_cmiSendObjectiveInfo
MM_cmiSendScore
Unknowns: How does it track slide viewing?
Where does it get the “question” string used in
reports?