2. XAPI and Moodle
§ XAPI Plug-in
§ Exposes Moodle Logs as XAPI Streams
(Read only LRS)
§ PowerTLA Drop-In
§ Full XAPI LRS with Document Support
§ Configurable User Identification
§ Authorization Layer for Tools and Users
§ Client-side API
my baby!
3. Why do I want XAPI?
§ Document student activities (E-Portfolios)
§ More flexible assessment
§ Gamification
§ Personalised OER
§ Tool integration
LMS plugins are too complicated
for building cool solutions
7. Senses
learner activity
Access a resource
Take a test
Post on a forum
Update a Wiki page
Upload an assignment
LMS Sensors
click
scroll
comment
align
9. Unlock a resource
Example Actuators
Makes VLEs
respond
Evaluate test scores
Provide an assignment
Update Portfolio
Message updates
Provide feedback
10. XAPI allows us to implement crazy
complex learning environments
VLEDigital Library
Mobile App VLE
LRS
LRS
ensor
twork
Mobile App
LRS
ensor
twork
Mobile App
LRS
Local
Sensor
Network
Mobile App
LRS
Local
Sensor
Network
VLE
LRS
VLE
LRS
VLE
LRS
Sensors
Output
Actuators
Mobler Cards App LMS E-Portfolio
System
LRS LRS LRS
nsor
twork
E-Portfolio
System
LRS
E-Portfolio
System
LRS
SCORM
Mobile App
LRS
Local
Sensor
Network
Simulation
LRS
Local
Sensor
Network
VLE
LRS
VLE
LRS
E-Portfolio
System
LRS
HR-
Mangement
System
LRS
SCORM
PLE V
LRS
LR
V
LR
CMI /
LRS
CMI /
LRS
Content
Interaction Script
Proxy Content
DRM
Just a few settings I toyed with
11. simple is best ...
XAPI & Interactive Content
Educational Resource
LRS
ActuatorSensor
12. XAPI & Interactive Content
You have to code interactive resources
HTML and JavaScript are mandatory
Moodle Theme
Client XAPI
Moodle UI API
Educational
Resource
Resource Logic
(JavaScript)
Moodle Server
Moodle
Logging
API
XAPI LRS
Moodle
Services
Moodle Auth
API
13. Educational Design and
Privacy Issues with Moodle
Moodle does not offer a privilege system that
supports student collaboration
§ Logs are tool- and teacher-centric
§ Each activity can have separate privilege sets
§ Privileges are not object orientated
§ Privileges are agnostic towards social relations
Hence, PowerTLA has no collaboration support
14. A Word on
SCORM-style CMI
AICC CMI (Computer Managed Instruction)
New CMI-5 defines XAPI extensions and runtime
requirements
§ Not always smartly, but it’s mainly for aviation people …
New CMI-5 concerns no longer client APIs
15. Let’s have a closer look at the
PowerTLA Client XAPI
16. PowerTLA Client XAPI
§ Event-based API discovery
§ Abstracts and exposes XAPI Logic
§ Context management
§ Documents
§ Provides meaningful default values
§ Actors (default: yourself)
§ Objects (default: the page you’re on)
§ Long-running and nested activities
24. The Statement more Readable
{
"timestamp" : "2016-02-12T09:30:54.869Z",
"object" : {
"id" : "https://mdl-tst.htwchur.ch/mod/page/view.php?id=51"
},
"id" : "3909970f-0b50-401f-9e12-0511435b8721",
"actor" : {
"openid" : "https://mdl-tst.htwchur.ch/tla/restservice/identity/profile.php/user/YTxpSdh",
"objectType" : "Agent"
},
"stored" : "2016-02-12T10:30:55+0100",
"verb" : {
"id" : "http://xapi.ch/verb/gui/click"
}
},
The page we
looked at
PowerTLA controlled
Student-ID
Our XAPI verb
All this has been generated by this JavaScript
lrs.recordAction(verbClick);
Student
Time
Moodle
Time
25. Use Activities from other
Resources
var verbClick = 'http://xapi.ch/verb/gui/click';
lrs && lrs.ready(function() {
lrs.fetchMyActions({verb: verCLick, object: document.location.href},
actuatorFunction);
});
function actuatorFunction() {
var activityStream = lrs.getStream();
$("#myActionCount").text(activityStream.length);
// we can now analyse the individual objects in the activityStream ...
}
Remove the
object filter to
get all clicks
28. Complex Interactions
– Nested Activities
mainUUID = lrs.startAction(mainActionVerb);
lrs.startContext({"statement": mainUUID});
lrs.recordAction(nestedActionVerb);
lrs.recordAction(nestedActionVerb);
lrs.recordAction(nestedActionVerb);
lrs.endContext({"statement": mainUUID});
lrs.finishAction(mainUUID);
lrs.push();
Automaticaly link all
following actions to
the main activity
Wrap things up and
gather the results
29. Complex Interactions In Practice
Brainstorming+Categorisation Activity
The activity is just1 interactive Moodle page
30. Complex Interactions In Practice
Step 1: Brainstorming
Students enter
their ideas
Students mark
when they are
ready to proceed
31. Complex Interactions In Practice
Step 2: Categorisation
Student ideas are
expanded with
predefined terms
Students drag&drop
the ideas into
predefined categories
Students mark
when they are
finshed
32. Complex Interactions In Practice
Step 3: Feedback
Immediate
Feedback and
Results
Provided Ideas
Categorisation
Accuracy
33. Complex Interactions In Practice
Step 4: Flow-control
(when visiting the page again)
Students can
perform the activity
only once
Students &
teachers can look
at the results
35. Nested Activities from Step 1
{
"id" : "e3118f32-3753-4700-bb6a-4e1b5f939e13",
"object" : {
"id" : "https://mdl-tst.htwchur.ch/mod/page/view.php?id=53"
},
"result" : {
"extensions" : {
"http://mobinaut.io/xapi/result/input" : "ETH LET"
}
},
"actor" : {
"openid" : "https://mdl-tst.htwchur.ch/tla/restservice/identity/profile.php/user/-FDKeRx",
"objectType" : "Agent"
},
"verb" : {
"id" : "http://mobinaut.org/xapi/verb/creative/ideacontribute"
},
"timestamp" : "2016-02-13T02:08:05.844Z",
"context" : {
"statement" : "b68b9c22-de8b-4b4c-b6d2-88883b291d66"
}
}
Student
Input Result
Link the framing
activity via its ID
The kind of
activity
lrs.startContext()
creates the context for
all following activities
Passed to
lrs.recordAction()
36. Nested Activities from Step 2
{
"id" : "147037b6-8b0d-492e-a21a-80ff5378c774",
"object" : {
"id" : "https://mdl-tst.htwchur.ch/mod/page/view.php?id=53"
},
"result" : {
"extensions" : {
"http://mobinaut.io/xapi/result/associate" : ["block2“,"Blackboard“]
}
},
"verb" : {
"id" : "http://mobinaut.org/xapi/verb/reflective/ideaassociate"
},
"actor" : {
"openid" : "https://mdl-tst.htwchur.ch/tla/restservice/identity/profile.php/user/-FDKeRx",
"objectType" : "Agent"
},
"context" : {
"statement" : "b68b9c22-de8b-4b4c-b6d2-88883b291d66"
},
"timestamp" : "2016-02-13T02:08:18.446Z"
}
Categorisation Result
Link the framing
activity via its ID
The kind of
activity
37. The Framing Activity
{
"result" : {
"duration" : "PT0H0M21S"
},
"actor" : {
"openid" : "https://mdl-tst.htwchur.ch/tla/restservice/identity/profile.php/user/-FDKeRx",
"objectType" : "Agent"
},
"object" : {
"id" : "https://mdl-tst.htwchur.ch/mod/page/view.php?id=53"
},
"id" : "b68b9c22-de8b-4b4c-b6d2-88883b291d66",
"verb" : {
"id" : "http://mobinaut.org/xapi/verb/creative/brainstormassign+state"
},
"timestamp" : "2016-02-13T02:08:05.842Z"
}
The ID for the result
document
The verb tells us that
there is a state
document
lrs.startAction() &
lrs.finishAction()
automatically produce the
activity‘s duration
38. The Activty State Document
{
"correcterms":3,
"ownterms":["ETH LET","Moodle Café"],
"association":{
"block1":[{"value":"SAMOO","match":1},
{"value":"Moodle Partners","match":0}],
"block2":[{"value":"Moodle Moots","match":0},
{"value":"Blackboard","match":1},
{"value":"Moodle Café","match":0}],
"block3":[{"value":"HTW BLC","match":0},
{"value":"ETH LET","match":0},
{"value":"Moodle User Association","match":1}]
}
}
Assessment
Result
Brainstorming
Result
Correct
Categorisation
Wrong
Categorisation
The state document storeswhat the activity needs
39. Conclusions
§ XAPI allows us to create lightweight activities
for Moodle
§ The PowerTLA Client XAPI simplifies the
activity tracking for interactive resources
§ The most complex part is the interaction design
not the experience tracking
40. FHO Fachhochschule Ostschweiz
Christian Glahn
Blended Learning Center
@phish108 @htwblc
http://www.htwchur.ch http://xapi.ch
https://github.com/phish108/PowerTLA