Enterprise Integration in Sakai 2.4 An overview of what’s new and (hopefully) improved
Sakai Basics: What needs integrating? Users  Groups of users Institutional structures (Schools, Departments, Courses, etc) Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Sakai Basics: Enterprise Integration Options Bulk load the Sakai database Uses web services and/or quartz jobs to populate users, create sites, and maintain site & group memberships Providers Calls out to enterprise systems at runtime (not all providers are integration oriented) Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Enterprise Integration Options Pros & Cons In Sakai < 2.4, bulk loading and providers have no impact on users In Sakai 2.4, providers give new capabilities to course tools Section Info can maintain sections automatically Roster can display course & enrollment info More tools in the pipeline that will rely on runtime access to enterprise data Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Automated Section Creation w/ Provider Approach to Integration Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Student enrollment data w/ Provider Approach to Integration Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Pre-2.4 Integration Providers UserDirectoryProvider Integrates Sakai with your user directory GroupProvider (formerly RealmProvider) Provides group IDs and memberships to Sakai CourseManagementProvider Decorates the group IDs with course data, instructors, and enrollments Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Changes in 2.4 UserDirectoryProvider No changes GroupProvider (formerly RealmProvider) Now configured OOTB to use the CM service (more on that soon) CourseManagementProvider Removed, replaced with CM service SectionFieldManager Poorly named (should have been SectionFieldProvider) provider for Site Info / WS Setup tool Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
I. Users Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
UserDirectoryProvider Relatively mature API Examples and documentation in the source code, confluence, sakai-dev mail list, etc See  /component/src/webapp/WEB-INF/components.xml Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
II. Groups of Users Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Group Provider Exposes enterprise defined groups in Sakai Map getGroupRolesForUser(String userId); Map getUserRolesForGroup(String id); String preferredRole(String one, String other); Defines how to do compound group IDs String packId(String[] ids); String[] unpackId(String id); Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
GroupProvider (continued) Pre-2.4, no OOTB Group Provider impl. In 2.4, GroupProvider must be configured to map between enterprise-defined roles and Sakai roles Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Group Provider (continued) OOTB Implementation maps hierarchical enterprise memberships to flat Sakai site & group memberships Resolves roles in higher level structures Resolves roles based on enrollment status Resolves roles based on instructor status Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
CM impl. of the Group Provider (continued) Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
CM impl. of the Group Provider (continued) From  https://source.sakaiproject.org/svn/providers/tags/sakai_2-4-0/component/src/webapp/WEB-INF/components.xml <bean class=“...SectionRoleResolver&quot;> <property name=&quot; roleMap &quot;> <map> <entry key=&quot;I&quot; value=&quot;Instructor&quot; /> <entry key=&quot;S&quot; value=&quot;Student&quot; /> <entry key=&quot;GSI&quot; value=&quot;Teaching Assistant&quot;/> </map> </property> <property name=&quot; officialInstructorRole &quot; value=&quot;Instructor&quot; /> <property name=&quot; enrollmentStatusRoleMap &quot;> <map> <entry key=&quot;enrolled&quot; value=&quot;Student&quot; /> <entry key=&quot;waitlisted&quot; value=&quot;Student&quot; /> </map> </property> </bean> Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
III. Institutional Structures Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Institutional Structures in the UI Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Replacing the Legacy CMProvider CourseManagementService Models an institution of higher education Academic Sessions (Terms, Semesters, etc) Course Sets (Schools, Departments, etc) Courses, Sections, Enrollments, Memberships, etc SectionFieldManager Should be named SectionFieldProvider Allows Site Info / WS Setup to construct Enterprise IDs from user input Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
CourseManagementService Sakai 2.4 comes with a hibernate-based reference implementation Institutions may: Use the RI, populating the hibernate tables with the CourseManagementAdministration API Use the RI, customizing the hibernate mappings to your custom DB schema Write a custom implementation of the CM API Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
CM Implementations UC Berkeley Spring JDBC against Oracle Views from SIS Stanford RI, loading tables via XML feeds from SIS UC Davis RI against Oracle views from SIS Others, see  http://confluence.sakaiproject.org/confluence/x/Apc Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
SectionFieldManager Simple provider that translates from user input to Section EIDs Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Institutional Decisions Bulk add users vs UserDirectoryProvider All accounts are internal to Sakai UserDirectoryService.addUser(String id, String eid) Allows access to externally defined users Requires a UserDirectoryProvider implementation Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Institutional Decisions Course Site & Section Creation Automated, based on institutional structures Requires either CM or some custom data feed Manual (custom), as required by Instructors Requires a CM implementation Requires a SectionFieldManager implementation Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Tasks for using the Provider Approach to Integration Implement (or borrow) a UserDirectoryProvider Implement CM Service Configure the GroupProvider How do institutional roles map to Sakai roles How does enrollment status affect Sakai roles Which Sakai roles take precedence over others Implement SectionFieldManager Email  [email_address]  for help Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
Questions, Comments, Discussion Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley

Sakai Enterprise Integration[1]

  • 1.
    Enterprise Integration inSakai 2.4 An overview of what’s new and (hopefully) improved
  • 2.
    Sakai Basics: Whatneeds integrating? Users Groups of users Institutional structures (Schools, Departments, Courses, etc) Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 3.
    Sakai Basics: EnterpriseIntegration Options Bulk load the Sakai database Uses web services and/or quartz jobs to populate users, create sites, and maintain site & group memberships Providers Calls out to enterprise systems at runtime (not all providers are integration oriented) Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 4.
    Enterprise Integration OptionsPros & Cons In Sakai < 2.4, bulk loading and providers have no impact on users In Sakai 2.4, providers give new capabilities to course tools Section Info can maintain sections automatically Roster can display course & enrollment info More tools in the pipeline that will rely on runtime access to enterprise data Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 5.
    Automated Section Creationw/ Provider Approach to Integration Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 6.
    Student enrollment dataw/ Provider Approach to Integration Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 7.
    Pre-2.4 Integration ProvidersUserDirectoryProvider Integrates Sakai with your user directory GroupProvider (formerly RealmProvider) Provides group IDs and memberships to Sakai CourseManagementProvider Decorates the group IDs with course data, instructors, and enrollments Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 8.
    Changes in 2.4UserDirectoryProvider No changes GroupProvider (formerly RealmProvider) Now configured OOTB to use the CM service (more on that soon) CourseManagementProvider Removed, replaced with CM service SectionFieldManager Poorly named (should have been SectionFieldProvider) provider for Site Info / WS Setup tool Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 9.
    I. Users EnterpriseIntegration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 10.
    UserDirectoryProvider Relatively matureAPI Examples and documentation in the source code, confluence, sakai-dev mail list, etc See /component/src/webapp/WEB-INF/components.xml Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 11.
    II. Groups ofUsers Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 12.
    Group Provider Exposesenterprise defined groups in Sakai Map getGroupRolesForUser(String userId); Map getUserRolesForGroup(String id); String preferredRole(String one, String other); Defines how to do compound group IDs String packId(String[] ids); String[] unpackId(String id); Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 13.
    GroupProvider (continued) Pre-2.4,no OOTB Group Provider impl. In 2.4, GroupProvider must be configured to map between enterprise-defined roles and Sakai roles Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 14.
    Group Provider (continued)OOTB Implementation maps hierarchical enterprise memberships to flat Sakai site & group memberships Resolves roles in higher level structures Resolves roles based on enrollment status Resolves roles based on instructor status Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 15.
    CM impl. ofthe Group Provider (continued) Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 16.
    CM impl. ofthe Group Provider (continued) From https://source.sakaiproject.org/svn/providers/tags/sakai_2-4-0/component/src/webapp/WEB-INF/components.xml <bean class=“...SectionRoleResolver&quot;> <property name=&quot; roleMap &quot;> <map> <entry key=&quot;I&quot; value=&quot;Instructor&quot; /> <entry key=&quot;S&quot; value=&quot;Student&quot; /> <entry key=&quot;GSI&quot; value=&quot;Teaching Assistant&quot;/> </map> </property> <property name=&quot; officialInstructorRole &quot; value=&quot;Instructor&quot; /> <property name=&quot; enrollmentStatusRoleMap &quot;> <map> <entry key=&quot;enrolled&quot; value=&quot;Student&quot; /> <entry key=&quot;waitlisted&quot; value=&quot;Student&quot; /> </map> </property> </bean> Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 17.
    III. Institutional StructuresEnterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 18.
    Institutional Structures inthe UI Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 19.
    Replacing the LegacyCMProvider CourseManagementService Models an institution of higher education Academic Sessions (Terms, Semesters, etc) Course Sets (Schools, Departments, etc) Courses, Sections, Enrollments, Memberships, etc SectionFieldManager Should be named SectionFieldProvider Allows Site Info / WS Setup to construct Enterprise IDs from user input Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 20.
    CourseManagementService Sakai 2.4comes with a hibernate-based reference implementation Institutions may: Use the RI, populating the hibernate tables with the CourseManagementAdministration API Use the RI, customizing the hibernate mappings to your custom DB schema Write a custom implementation of the CM API Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 21.
    CM Implementations UCBerkeley Spring JDBC against Oracle Views from SIS Stanford RI, loading tables via XML feeds from SIS UC Davis RI against Oracle views from SIS Others, see http://confluence.sakaiproject.org/confluence/x/Apc Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 22.
    SectionFieldManager Simple providerthat translates from user input to Section EIDs Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 23.
    Institutional Decisions Bulkadd users vs UserDirectoryProvider All accounts are internal to Sakai UserDirectoryService.addUser(String id, String eid) Allows access to externally defined users Requires a UserDirectoryProvider implementation Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 24.
    Institutional Decisions CourseSite & Section Creation Automated, based on institutional structures Requires either CM or some custom data feed Manual (custom), as required by Instructors Requires a CM implementation Requires a SectionFieldManager implementation Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 25.
    Tasks for usingthe Provider Approach to Integration Implement (or borrow) a UserDirectoryProvider Implement CM Service Configure the GroupProvider How do institutional roles map to Sakai roles How does enrollment status affect Sakai roles Which Sakai roles take precedence over others Implement SectionFieldManager Email [email_address] for help Enterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley
  • 26.
    Questions, Comments, DiscussionEnterprise Integration in Sakai 2.4 Josh Holtzman, UC Berkeley