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

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

Jan 24, 2015

Download

Technology

greenoch

This is a presentation I gave at BBWorld 2011 on integrations with Blackboard Learn 9.1, Vista 8, PeopleSoft and other applications on campus.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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) ;