integration between blackboard learn™, release 9.1, vista 8, others and peoplesoft - with a catch

18
Integration Between “Things”™ - with a Catch Chris Greenough Northern Arizona University [email protected] du @GreenO

Upload: greenoch

Post on 24-Jan-2015

4.757 views

Category:

Technology


0 download

DESCRIPTION

This is a presentation I gave at BBWorld 2011 on integrations with Blackboard Learn 9.1, Vista 8, PeopleSoft and other applications on campus.

TRANSCRIPT

Page 1: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Integration Between “Things”™ - with a Catch

Chris GreenoughNorthern Arizona University

[email protected]@GreenO

Page 2: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Background

• Initially PeopleSoft extracts were IMS Enterprise 1.01 Vista 3 was IMS Enterprise 1.1

• Needs in our SIS did not match the needs in our LMS

• More need around campus for enrollment data

• Constant development since 2008

Page 3: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

What’s wrong with direct Integration

• Data in your SIS is not Life in your LMS– Incompletes– Guests Lecturers– Cross Listed Classes (What a mess)– Name Changes– Anything else you can think of!

Page 4: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Basic Overview

Export Logic Import

Page 5: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Technical Details

• Originally written in Java ported to Python• “Event”/Snapshot based• LMS Enterprise 1.1 Based• Oracle Backend• Multiple Destinations

Page 6: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Inbound Sources

IMS Enterprise Based ObjectsLIS before LIS?

IMS XML Extract

PeopleSoft

LIS Soon?

Banner

No Idea!

Kuali

Page 7: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Business Logic

IMS Enterprise Based Objects

Business Logic

Update Local Database Apply “Override” Information

IMS Enterprise Based Objects

Page 8: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Outbound Sources

IMS Enterprise Based Objects

Internal Database

Classes.nau.edu

iTunesU

IMS XML

Vista Web SIAPI

Bb Web Services

BBLearn SOAP/WS-

Security

Internal Web

Services

Push Tool

Page 9: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

IMS Objects

• Objects– Group– Relationship– Properties– Membership– Member– Bulk load

• Methods to get override values(default) and underlying values

Page 10: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

DB Schema

• LMS_GROUP_INFO• LMS_MEMBER_INFO• LMS_ENROLLMENT_INFO• LMS_DESTINATION_INFO• LMS_OVERRIDE_INFO

– TABLE_NAME– TABLE_ID– FIELD– VALUE

Page 11: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Web Service Integration

• Vista – Multipart IMS XML Web Upload to SIAPI

• BBLearn 9.1– WS-Security SOAP requests to API– Using Internally Developed BbPy Web

Service Bindings

Page 12: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Conclusion

• There is a need to control every field of data from the SIS to the LMS

• Distil all sources to common data sources, IMS Enterprise Spec

• Separate inbound and outbound data• Hopefully LIS will help the connections• Allows for future expansion

Page 13: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Questions/Links

• IMS Enterprise Spec 1.1 http://www.imsglobal.org/enterprise/

• Python http://code.google.com/p/bbpy/

• About.Mehttp://about.me/greeno

• Twitter@GreenO

Page 14: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Please provide feedback for this session by [email protected].

The title of this session is:

Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

Page 15: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

def processMembership(self,membership): membership.cacheId="%s:%s"%(membership.sourcedidid,membership.sourcedidsource) logger.info("Starting Membership %s:%s"%(membership.sourcedidid,membership.sourcedidsource)) logger.debug(membership) if(self.shouldProcess(membership)): group = self.odb.getGroup(membership.sourcedidid, membership.sourcedidsource) self.setSubroleToNothing(membership) self.addMissingMembershipTags(membership) self.updateRoles(membership) self.emplidToRegid(membership) self.updateMembershipFromOverride(membership) if getattr(membership,"snap",False): self.processSnap(membership) self.updateDb(membership) self.processExpire(membership, group) self.removeGraders(membership) self.markDestinations(membership) self.markVistaUpdates(membership) self.markDuelEnrollments(membership) self.checkRollup(membership,group) self.runEndPoints(membership) logger.info("Ending Membership") logger.debug(membership)

Page 16: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

def processGroup(self,group): group.cacheId="%s:%s"%(group.sourcedidid,group.sourcedidsource) logger.info("Starting Group %s:%s"%(group.sourcedidid,group.sourcedidsource)) self.logInfo(group, "Starting Group") self.checkDeleted(group) self.updateGroupFromOverride(group) if hasattr(group,"incomplete"): raise DatabaseErrors.GroupNotFound("Group Not Found!") self.addMissingGroupTags(group) if group.sourcedidsource == config.datasource: self.updateGroupTitle(group) self.createLCH(group) self.createRollups(group) self.updateDb(group) self.extendEndDates(group) self.markVistaUpdates(group) self.markDestinations(group) self.runEndPoints(group) self.sendMembership(group) self.logInfo(group,"Ending Group")

Page 18: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

CREATE OR REPLACE VIEW "OVERRIDE_VISTA_GROUP_INFO" ("VISTA_GROUP_ID", "SOURCEDID_ID", "SOURCEDID_SOURCE", "LC_PARENT_ID", "ROLLUP_ID", "TYPE_LEVEL", "SHORT_DESCRIPTION", "LONG_DESCRIPTION", "FULL_DESCRIPTION", "ORG_ID", "ORG_NAME", "BKHIERARCHY", "DIVISION", "BEGIN_DATE", "BEGIN_RESTRICT", "END_DATE", "END_RESTRICT", "ADMIN_PERIOD", "EMAIL", "URL", "WEBCT_TEMPLATE", "CREATE_TS", "MODIFY_TS", "EXPIRE_TS", "COMMENTS", "VISTA_DATA_SOURCE_ID") AS (select VISTA_GROUP_ID, SOURCEDID_ID, SOURCEDID_SOURCE, LC_PARENT_ID,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='ROLLUP_ID'), null, i.ROLLUP_ID, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='ROLLUP_ID'), '') as ROLLUP_ID,TYPE_LEVEL,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='SHORT_DESCRIPTION'), null, i.SHORT_DESCRIPTION, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='SHORT_DESCRIPTION'), '') as SHORT_DESCRIPTION, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='LONG_DESCRIPTION'), null, i.LONG_DESCRIPTION, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='LONG_DESCRIPTION'), '') as LONG_DESCRIPTION, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='FULL_DESCRIPTION'), null, i.FULL_DESCRIPTION, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='FULL_DESCRIPTION'), '') as FULL_DESCRIPTION, ORG_ID, ORG_NAME, BKHIERARCHY, DIVISION,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='BEGIN_DATE'), null, i.BEGIN_DATE, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='BEGIN_DATE'), '') as BEGIN_DATE, BEGIN_RESTRICT, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='END_DATE'), null, i.END_DATE, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='END_DATE'), '') as END_DATE, END_RESTRICT, ADMIN_PERIOD, EMAIL, URL, WEBCT_TEMPLATE, CREATE_TS, MODIFY_TS,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='EXPIRE_TS'), null, i.EXPIRE_TS, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='EXPIRE_TS'), '') as EXPIRE_TS,COMMENTS, VISTA_DATA_SOURCE_ID from vista_ims_adm.vista_group_info i) ;