Article

mbluteau's picture
article
Reads:

4031

Score:
5
5
1
 
Comments:

1

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

(View Disclaimer)

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.

ZałącznikWielkość
hsqldb.zip597.14 KB
olatlms.zip111.18 KB

Disclaimer: As with everything else at Cool Solutions, this content is definitely not supported by Novell (so don't even think of calling Support if you try something and it blows up).

It was contributed by a community member and is published "as is." It seems to have worked for at least one person, and might work for you. But please be sure to test, test, test before you do anything drastic with it.




User Comments

mbluteau's picture

Feel free to submit comments and feedback

Submitted by mbluteau on 11 April 2011 - 9:32am.

Feel free to submit comments and feedback

© 2013 Novell