IDM Driver for LMS (Learning Management System): OLAT Example

0 Likes

In this article, we will look at a basic example of LMS integration through a JDBC driver, and look at a few use cases together.

I selected to use OLAT Open Source LMS as an example, but it would be fairly simple to adapt to other LMS.

For more information on OLAT, see: http://www.olat.org/website/en/html/index.html


Click to view.

Figure 1: Accessing OLAT from a web browser.


Click to view.

Figure 2: Accessing my entries, logged in as Author.


Click to view.

Figure 3: Course Editor.


Click to view.

Figure 4: Test Configuration.


Click to view.

Figure 5: Editing Questions/Answers.


Click to view.

Figure 6: User getting tested in OLAT.


Click to view.

Figure 7: Scores are stored in table.


Click to view.

Figure 8: Modify Settings for the course.


Click to view.

Figure 9: Make sure you select Use evidence of Achievement in Settings, so scores are saved in the table.

Now we need to create a view in front of the OLAT tables, so we can use the IDM JDBC driver to query the view for score information. We can ask the DBA to create the view and configure read only access for the account used by the driver.


Click to view.

Figure 10: Score view in database.

SQL script to create view:

create view View_SCORES AS (select a.ID pk_ID,a.NAME pk_NAME,c.DISPLAYNAME pk_DISPLAYNAME,b.ISPASSED, MAX(b.SCORE) SCORE from O_BS_IDENTITY a,O_QTIRESULTSET b,O_REPOSITORYENTRY c WHERE a.ID=b.IDENTITY_ID and b.REPOSITORYREF_FK=c.REPOSITORYENTRY_ID  GROUP BY ID,NAME,ISPASSED,DISPLAYNAME);

Now let's create the driver. You will need to copy the 3rd party JDBC driver hsqldb.jar (in zip attachment below) to the classes subdirectory for your server.


Click to view.

Figure 11: Driver options.


Click to view.

Figure 12: Publisher Options.


Click to view.

Figure 13: Authentication.


Click to view.

Figure 14: Schema mapping for Score View. We have extended the schema with effective class LMSScore(From Top, contained by Domain, Organization and Oganizational Unit) and optional attributes.


Click to view.

Figure 15: Driver Filter.


Click to view.

Figure 16: Command Transform that updates the user object with Score information. We have assumed that 2 attributes per exam are added to an Aux Class for User to receive score and tell if user attempted exam.

My driver export is provided as an attachment.

Now that we have score information for one or more exams for Users, we can build provisioning rules or workflow form logic to consume that information. Let's look at a simple example using a Provisioning Request.


Click to view.

Figure 17: Form that consumes score attributes. DAL must be modified to expose LMSScore and attributes(single-value).


Click to view.

Figure 18: Adding script to form.


Click to view.

Figure 19: Validation script that performs a validation, and will reject Provisioning Request if minimal score is not achieved.

Validation Script:

// TODO Auto generated function stub. 
function checkMinSecIsPassed(form,IDVault) {
var dn = form.getValue("recipient");
var v = IDVault.get(null, dn,"user","LMSMinimumSecurityIsPassed");
var score = IDVault.get(null, dn,"user","LMSMinimumSecurityScore");
if (score < 4) {
alert("You need to successfully pass the exam for Minimum Security. Your score is " score ". Minimum score is 4. You did not get the minimum score");
form.submit("CancelAction");
return;
}
form.showMsg("Validation ok, please proceed");
}

Let's try to make the Request for a user that did not pass the exam:


Click to view.

Figure 20: User who did not pass the exam cannot submit Provisioning Request to request membership for AD Domain Admin Group.

Labels:

How To-Best Practice
Comment List
Related
Recommended