Presentation is loading. Please wait.

Presentation is loading. Please wait.

Integration Between “Things”™ - with a Catch Chris Greenough Northern Arizona

Similar presentations


Presentation on theme: "Integration Between “Things”™ - with a Catch Chris Greenough Northern Arizona"— Presentation transcript:

1 Integration Between “Things”™ - with a Catch Chris Greenough Northern Arizona University Chris.Greenough@nau.edu @GreenO

2 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

3 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!

4 Basic Overview ExportLogicImport

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

6 Inbound Sources

7 Business Logic IMS Enterprise Based Objects Business Logic Update Local Database Apply “Override” Information IMS Enterprise Based Objects

8 Outbound Sources

9 IMS Objects Objects –Group –Relationship –Properties –Membership –Member –Bulk load Methods to get override values(default) and underlying values

10 DB Schema LMS_GROUP_INFO LMS_MEMBER_INFO LMS_ENROLLMENT_INFO LMS_DESTINATION_INFO LMS_OVERRIDE_INFO –TABLE_NAME –TABLE_ID –FIELD –VALUE

11 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

12 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

13 Questions/Links IMS Enterprise Spec 1.1 http://www.imsglobal.org/enterprise/ http://www.imsglobal.org/enterprise/ Python http://code.google.com/p/bbpy/ http://code.google.com/p/bbpy/ About.Me http://about.me/greeno http://about.me/greeno Twitter @GreenO

14 Please provide feedback for this session by emailing BbWorldFeedback@blackboard.com. BbWorldFeedback@blackboard.com The title of this session is: Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

15 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)

16 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")

17 http://code.google.com/p/bbpy/source/browse/trunk/bbpy/src/BbPy/security/ SignatureHandler.py http://code.google.com/p/bbpy/source/browse/trunk/bbpy/src/BbPy/Context WS.py

18 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) ;


Download ppt "Integration Between “Things”™ - with a Catch Chris Greenough Northern Arizona"

Similar presentations


Ads by Google