(Since Objectives usage outside of course structure is not defined.)
Objectives are defined for the course structure, but there is no language in the specification concerning their usage in statements. If using Objectives in statements (as Activities) the best practice is to use the Activity Definition type (http://adlnet.gov/expapi/activities/objective) from the ADL vocabulary.
The same Objective can be referenced by multiple AU or Blocks. There are 2 ways to interpret meeting an Objective. The two expected practices are:
It is recommended that LMS developers document how they do this and allow for an extension (in the course structure) to indicate what method should be used.
LMS should always implement the “returnURL”
LMS should not spawn a new window to launch AU (i.e. “popup”). Depending on the settings it could take the following actions to launch an AU:
If the LMS issues a Mastery Score, the AU should respond in the following ways:
LMS should use caution when adding Mastery Scores to AU course structure entries if they are not present in the original course structure. (As the AU may not be designed to handle scores). It is recommended that such changes be tested prior to enrolling learners.
When creating a course structure, always specify a moveOn criteria for each AU. Failing to do so will result in a default of “Not Applicable”. This can have the following unintended consequences:
One of the following options should be used to launch AU’s that are apps on mobile devices:
Option 1: Use an app protocol in the launch URL.
Option 2: Use and HTML wrapper to launch the app AU is an HTML page (wrapper) that directs from the mobile browser to the app.
If the AU is not a mobile app and the LMS does not provide a “returnURL”, the best practice to exit the AU is to close the Window (window.close()) or direct the learner to manually close the browser window.
If an AU sends a statement that doesn’t conform to cmi5, the LMS should reject it (see section 6.3 of cmi5 specification) and return an HTTP error 403.
The AU may not have the capability of sending statements required by any moveOn value that was not in the original course structure. It is recommended that all changes to course structures after import be tested prior to learner assignment.
For recording progress during a session, it is recommend to use a cmi5 allowed statement with the progressed verb (http://adlnet.gov/expapi/verbs/progressed) and a progress extension in the result (see section 22.214.171.124 of specification). Progress statements should not be sent for progress value of 100% as that indicates completion. Once the learner reaches 100% it is recommended that a cmi5 defined “completed” statement be issued instead.
It is strongly recommend to include the registration id provided by the LMS at launch time in the context of all statements issued by the LMS and AU.