External Groups and Hierarchy

There are often many questions about how to provide groups and hierarchy into the Evaluation System. This is my attempt to explain how the Evaluation System works and what your options are.

OOTB, the Evaluation System allows you to deploy evaluations to sakai sites that you are a member of or to create an ad-hoc group. As you'll see in the image below, those are both options. The third option, deploy to hierarchy node, only works if you have created a hierarchy, either via the hierarchy GUI or via a HierarchyProvider.

At this point, you need to decide what your needs are. Do you want to leverage the course site memberships (which are also considered groups) that are already in sakai and perhaps organize them into a hierarchy, OR do you want to provision group memberships from some system outside Sakai (with or without a hierarchy organization).

There are two 'providers' for the Evaluation System - EvalGroupProvider and EvalHierarchyProvider. If you're unfamiliar with the provider approach in Sakai, it's commonly used to bring external data into the Sakai system on the fly. Your LDAP integration is probably implemented via the Sakai provider designed for that purpose.

I need to bring in external groups!

University of Maryland uses Sakai solely for course evaluations, so they do not have any course membership data in Sakai. They have implemented the GroupProvider to bring those courses and memberships into Sakai so they can deploy evaluations to them. They do not use the HierarchyProvider, but have figured out a way to populate the data into the correct database tables in order to achieve the same result.

They can provide more details on the way their GroupProvider works, but as far as I know, the groups provided will show up for the user under the 'Assign to Evaluation Groups' link in the absence of any Hierarchy implementation.

....more details from UM here?

Here are links to an example implementation of the GroupProvider: http://collab.sakaiproject.org/pipermail/evaluation/2009-August/000110.html http://jira.sakaiproject.org/browse/EVALSYS-807 https://source.sakaiproject.org/contrib//evalgroup/trunk/

I want that hierarchy stuff to work!

First, let's look at the hierarchy in the GUI.

OOTB, you only get a root node. Via the GUI, you can quite easily build up a hierarchy of Schools and Depts like we have done here. However, none of this will work if no groups (or course sites) are associated with the bottom-level nodes of the hierarchy. See how under the 'Assigned Groups' column it's mostly all zeros? These nodes won't truly be functional unless some groups/sites are associated with them. For example, you can deploy evaluations to the English Dept node all day long, but unless Sakai knows what course sites make up the English Dept, nothing will work.

You'll notice if you click the 'Assign Groups' link, that only course sites where the 'admin' user is enrolled are shown. It's not really sustainable to enroll the 'admin' user in all your course sites, plus many institutions have so many courses that picking them out of a list would be a nightmare. Plus, you'd have to update the node membership every time you created a new course. Ugh! Wouldn't it be nicer to just be able to make rules about which course site should be associated with which node based on Site Title?

That's what we thought, so we decided to try implementing the HierarchyProvider. Essentially the idea is that you will use some external source to tell Sakai how your hierarchy should work.

SimpleEvalGroupProviderImpl.java
SimpleEvalHierarchyProviderImpl.java