Thursday, June 18, 2015

Internet Domains Used by HR Avatar

These public domains are needed in order to fully access HR Avatar:


http://www.hravatar.com
https://www.hravatar.com
https://test.hravatar.com
http://test.hravatar.com
https://s3.amazonaws.com
http://cfmedia.clicflic.com

Tuesday, February 24, 2015

Lessons Learned for Integrating an IMO with a Testing System

An HR Avatar test module is a client-side object that is intended to be embedded into a dynamically-generated web page with parameters and javascript functions described in our IMO API document, which is at:
http://cfmedia.clicflic.com/web/misc/api/HRAvatar_IMO_API_current.pdf

This guide will show you what the embedding parameters are, the interface for the required javascript functions, and the format of the result XML that has all the test-takers clicks.

An XSD for the result XML is at:

Additionally, the IMO API document provides an explanation of all the elements and attributes in the result XML as well as how the response data is formats for different types of item formats - ie multiple choice, radio buttons, sliders, text boxes, etc.

The contents of the methods for the webpage to be used for reporting status, receiving and storing result XML, etc. are left to your developers. However, since we've built our own testing system we've had to implement these methods ourselves.

Here are a few lessons learned:

1. Pay attention to the eventid verification feature in the IMO API, the title of the section is: Having an IMO Verify an embedded eventid with a third-party server.  This is a security feature to prevent unauthorized use of the test.

2. Also in the integration guide is a section entitled: Capturing Error and Other Messages from the IMO.  Implementing this can assist with troubleshooting down the road.

3. When an IMO loads it always asks for any existing result xml. We use a javascript method that then asks the server for the result xml using a synchronous XMLHttpRequest.  Also, even though the response to the request is an XML document, we treat it as a text string within the javascript. We have found it's better to have the page request the XML from the server every time it's needed rather than embedding it in the dynamic page when you serve the page. This removes any chance of the IMO reloading result XML that is not the most current.

4. When the IMO calls a method with a revised result XML document, we send it back to the server using an asynchronous XMLHttpRequest.  We use the onreadystatechange event to monitor the success of posting and if there's a problem, we tell the test taker that their data is not being recorded.

5. The result XML contains a sub-element called event which has an attribute called pctcomplete. This is a number 0-100 that represents the percent complete. When storing result XML on the server during a test, we parse the XML to obtain this value and if the current percent complete is higher than the one in the most recently received result XML, we don't record it. Percent complete cannot go down. This could happen if a person opened the same test in multiple windows and then switched windows.

6. To prevent the session from expiring while a test is loaded we use a javascript setTimeout() method and XMLHttpRequest to keep the session alive if needed.

Creating Clean Standalone CD-ROM Executables


The standard Windows CD ROM deployment on imo.hravatar.com works, however, the size of the window that opens is not exactly the same as the IMO. To correct this, you can take the following steps. The result is a more professional-looking experience when someone starts the IMO from a CD-ROM or Memory stick or someone's computer.

1. Download the standalone flash player program and save to a handy directory on your computer:
https://cfmedia.clicflic.com.s3.amazonaws.com/web/misc/flashplayer/flashplayer_10_sa_debug.exe

2. Perform a Windows CD Rom deployment of the IMO on http://imo.hravatar.com.

3. Unzip the zip file to a folder on your computer.

4. Do a Standalone Flash-Only deployment of the IMO on http://imo.hravatar.com.

5. Unzip the flash-only deployment to a different folder on your computer.

6. Execute the flash player program from Step 1 above by double-clicking and load the player.swf from the Flash-Only deployment in folder from Step 5 above (File -> Open -> browse to directory and choose player.swf).

7. Choose create projector from file menu and enter G2CDFlashPlayer.exe as the name of the projector file. This should create a file in the directory from Step 5 called G2CDFlashPlayer.exe.

8. Copy this new G2CDFlashPlayer.exe file to the directory from Step 3. This should overwrite an existing file. Be sure to replace the file.

9. Zip the files in directory from Step 3 above being sure NOT to include any absolute or relative path information in the zip file.  You can use Zip Genius (free download) to do this.

10. The newly zipped file can be loaded into a directory or CD-ROM and will play on windows computers with no other software required.

Thursday, January 29, 2015

Media Formats

A common question is what media formats are used by HR Avatar IMOs:

Each audio or video file is converted to four files as follows:

H264 Video / AAC Audio (MP4) for Most Desktop Browsers HTML5 and for Flash
VP8 Video/ Ogg Vorbis Audio (WEBM) for FireFox Desktop Browsers that don't support H264
H264 Video / AAC Audio (MP4)  Baseline Profile for Tablets
H264 Video / AAC Audio (MP4)  Baseline Profile at a reduced aspect ratio (smaller screen size) for mobile phones

Saturday, January 24, 2015

Sim and Simlet Versions

The following objects use a version number system to maintain a full audit trail of test changes and development:
  • Sim
  • Simlet

When you create either a sim or a simlet, it is assigned a version number starting at 1.

For both sims and simlets, new versions are not created unless you tell the system to create a new version. 

Each version of a sim or simlet points to a different IMO.

When you add  a simlet to a sim by typing in the simlet id, the version that is added is always the most recent version of the simlet and the version number of the simlet that is added is tracked by the sim from that point forward.

This means that a particular version of a sim always uses the simlets with the version number when they were first added to that sim.

Example
  1. Create a Sim. Call it MySim.
  2. System assigns version 1 to this Sim.  We'll designate this as MySim V1
  3. Create two simlets, MySimletA and MySimletB.
  4. System assigns version number 1 to these Simlets. So you have MySimletA V1, and MySimletB V1.
  5. Add these two simletsto MySim.  When added the system adds the most recent version number of each simlet to the sim. 
  6. So, you now have MySim V1, which contains MySimletA V1 and MySimletB V1
You test a bunch of people using this sim. All test event records record that you are using MySim V1.

6 months later, you want to make some changes to MySimletA. So you create a new version of the simlet. This becomes MySimletA V2, which creates a new IMO by copying the old one. You then make changes to the new IMO associated with MySimlet V2 .

Now, if you simply rebuild MySim V1, it will continue to use MySimletA V1 and MySimletB V1, since those are the versions that were initially associated wtih MySim. 

To force MySim to use MySimletB V2, you need to tell the system to create a new version of MySim. This will become MySim V2 and the system will automatically check to see what the latest versions are of each simlet and will use the latest version. So, this means, MySim V2 will contain MySimletA V1 and MySimletB V2.

Note that MySim V2 uses a different IMO and other data records than MySim V1. This means that any tests conducted with MySim V1 will always point to MySim V2 and any tests conducted with MySim V2 will always point to MySim V2. So, the audit trail is complete.  Analysis tasks like item response data analysis or reconstructing a test will always use the proper version.

So, to Make changes to an HR Avatar Simlet and then post to a test when ready. 
  1. Create a new version of the simlet. The IMO will be copied when this happens. 
  2. Make changes to the IMO.
  3. Test it out. 
  4. When you are ready to use the new version, create a new version of the sim and rebuild the sim. 
  5. That should be it. The new version of the sim, when rebuilt, will use the new version of the simlet. 
  6. All product records will be updated to point to the new version. Any tests in progress or incomplete will use the old version and any tests started after that point will use the new version.