Learning Analytics Processor

An open source, Java-based analytics workflow manager

What is the Learning Analytics Processor?

The Apereo Learning Analytics Processor application can be considered the manager of an analytics workflow. Typically, this type of workflow is referred to as a pipeline and consists of three distinct phases: input, model execution, and output. The Apereo Learning Analytics Processor supports this type of pipeline construct. Additionally, the Apereo Learning Analytics Processor exposes output from the pipeline via a collection of web service APIs.

Features

Get Started

Technical Overview

Learning Analytic Processor (LAP) is a Java web application built with Spring Boot. LAP manages configuration using Spring Profiles. A complete listing of the supported profiles is available below.

Requirements

To build and run LAP you will need, at a minimum, the following:

  • Java 7 or higher (either JDK)
  • Maven 3 or higher

Building and Running LAP

To get started quickly for testing or demo purposes you can run LAP with the default profile. This will start the application using an H2 in-memory datastore.

              
              // Just build the jar file
              mvn clean package
              // this produces the test.jar file in the target folder
              
            
              
              // Run in place
              mvn clean package spring-boot:run
              // this starts the application on port 8080
              
            
              
              // Run in place using the jar file
              // as an alternative to using spring-boot:run
              // you can build the jar file using mvn clean package
              // and then run
              java -jar target/lap.jar
              // this starts the application on port 8080
              
            

Now that you have LAP up and running watch the video below to learn how to exercise it.

On some operating systems we have encountered errors with Kettle accessing shared kettle properties. This error may manifest itself as "org.apereo.lap.services.ProcessingManagerService - Pipeline (sample) FAILED" or errors that complain about connecting to mysql. If you run into this problem follow the instructions below:

              
// Kettle uses a file $HOME/.kettle/shared.xml. 
// This is supposed to be automatically created by kettle but 
// I've run into some environments where this doesn't always happen. 
// The following should get you running.

mkdir $HOME/.kettle/

echo '<?xml version="1.0" encoding="UTF-8"?>\
  <sharedobjects>\
    <connection>\
    <name>LAP_connect</name>\
    <server/>\
    <type>H2</type>\
    <access>Native</access>\
    <database>mem:temp-db;MODE=MYSQL;DB_CLOSE_DELAY=-1</database>\
    <port>-1</port>\
    <username>sa</username>\
    <password>Encrypted </password>\
    <servername/>\
    <data_tablespace/>\
    <index_tablespace/>\
    <attributes>\
      <attribute><code>PORT_NUMBER</code><attribute>-1</attribute></attribute>\
    </attributes>\
  </connection>\    
</sharedobjects> >> $HOME/.kettle/shared.xml 

                
            

Branches

Master Branch

The LAP master branch will always contain the most stable version of the code base. If you are just starting out with LAP we recommend that you start with the master branch and, of course, if you plan to deploy LAP in a pilot or production environment use the master branch.

Development Branch

The LAP development branch contains that latest code changes and any experimental features that have not yet been deemed production ready.

GH Pages Branch

The LAP gh-pages branch contains the HTML and supporting assets for this web page.

POC Branch

The LAP poc branch contains work done in the orginial proof of concept. This branch is maintained for historical purposes. No new development should occur in the poc branch.

Profiles

LAP, and all of the Apereo LAI components, make heavy use of Spring Profiles. If you are not familiar with Spring Profile we highly recommend brushing up by reading the excellent Spring documentation.

Default

This profile is activated when you do not specify any other active profiles. This will start the application with H2 as the temporary and persistent data stores.

Mongo

This profile will start the application with H2 as the temporary data store and MongoDB as the persistent data store. You will need to specify the relevant MongoDB properties in your properties file to overide the defaults.

              
// Example of using the mongo profile

// Start with mongo profile for dev purposes
mvn -Drun.jvmArguments="-Dspring.profiles.active=mongo" 
  -Dspring.profiles.active=mongo clean package spring-boot:run

// Run with mongo profile
java -jar -Dspring.profiles.active=mongo lap*.jar

// Active from a properties file
spring.profiles.active=mongo
              
            

Mongo Multi-tenant

This profile will start the application with H2 as the temporary data store and MongoDB as the persistent data store. You will need to specify the relevant MongoDB properties in your properties file to overide the defaults. The difference between this profile and the mongo profile is that each tenant (identified by the organization that the current user belongs to) will use a separate MongoDB database. Unless you're deploying a multi-tenant LAP cluster you probably don't want to use this profile.

              
// Example of using the mongo profile

// Start with mongo profile for dev purposes
mvn -Drun.jvmArguments="-Dspring.profiles.active=mongo-multitenant" 
  -Dspring.profiles.active=mongo-multitenant clean package spring-boot:run

// Run with mongo profile
java -jar -Dspring.profiles.active=mongo-multitenant lap*.jar

// Active from a properties file
spring.profiles.active=mongo-multitenant
              
            

License

Learning Analytics Processor is released under the terms of the Educational Community License, Version 2.0 (ECL-2.0). ECL-2.0 is a slightly less permissive Apache2 license. More details at http://opensource.org/licenses/ECL-2.0

Mailing Lists

To subscribe or unsubscribe send an email to the relevant email address by adding "+subscribe" or "+unsubscribe" to the email address.