Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-67734

Create basic skeleton for a global xAPI library needed for H5P content

    XMLWordPrintable

    Details

    • Sprint:
      Moodle 3.9 - Moppies Kanban

      Description

      A basic xAPI LRS support is needed In order to get statements from H5P content.

      This first issue will cover the following needs:

      • Have a "lib/xAPI" library for the main LRS access point
      • A generic Moodle webservice layer which wraps a xAPI statement processing
      • xAPI handler base classes which every plugin can extend to use xAPI on their code
      • xAPI statement class to generate xAPI statements with all related classes for handling actors (user, group), objects and verbs (the rest of xAPI properties would be compatible but validations will be responsibility of every plugin for now).
      • PHPUnit test
      • Null privacy provider

      The web service for processing a xAPI statement will delegate part of the process to specific plugins like the future mod_h5p.

      xAPI generic webservice (component, statement)

      The web service receive a frankenstyle component responsible to handle part of the statement and a xAPI statement structure.

      xAPI Statement generic processing method will:

      1. xAPI checks the statement structure, if any check fails, it returns an error. That means:
        1. Check that only supported xAPI attributes are used
        2. Check all users and groups are created in the LMS
      2. xAPI checks if the component has a xAPI handling class implementation. Otherwise it returns an error.
      3. For every statement:
        1. xAPI asks again the plugin to you convert into a standard event. In case the plugin could not convert some statement into an event, this statement will be marked as “rejected” and xAPI continue to the next statement.
        2. xAPI handler will trigger all the generated events
      4. Once all statements are processed:
        1. If ALL statements are marked as “not processed” it returns an error.
        2. If some statement could be processed, returns an array containing “true” if the statement is processed and “false" otherwise.

       

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              tusefomal Ferran Recio
              Reporter:
              tusefomal Ferran Recio
              Peer reviewer:
              Carlos Escobedo
              Integrator:
              Andrew Nicols
              Tester:
              CiBoT
              Participants:
              Component watchers:
              Amaia Anabitarte, Carlos Escobedo, Ferran Recio, Sara Arjona (@sarjona), Víctor Déniz Falcón, Amaia Anabitarte, Carlos Escobedo, Ferran Recio, Sara Arjona (@sarjona), Víctor Déniz Falcón
              Votes:
              2 Vote for this issue
              Watchers:
              11 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Fix Release Date:
                11/May/20

                  Time Tracking

                  Estimated:
                  Original Estimate - 0 minutes
                  0m
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 4 weeks, 6 hours, 12 minutes
                  4w 6h 12m