DevCon 2012 Chris Greenough Migrating Data Feeds to IMS Learning Information Services(LIS)

Post on 01-Nov-2014

571 views 5 download

Tags:

description

Client Presentation

Transcript of DevCon 2012 Chris Greenough Migrating Data Feeds to IMS Learning Information Services(LIS)

Migrating Data Feeds to IMS Learning Information Services(LIS)

Chris GreenoughEnterprise Web Team LeadNorthern Arizona University

@GreenO

2

Overview

• Background

• Enterprise 1.1 -> IMS

• Learn Setup

• Logging

• Mapping

• LIS WSDL

• Bb LIS B2 Code

• Bb Enabled Methods

• Sample Python Code

3

Background

4

Background – Snow Dogs in Arizona

5

Enterprise 1.1 -> IMS

• Based on, but completely different than Enterprise spec

• Vocabulary• E.g. The type of formatted name vocabulary

formatnmetypevocabularyv1p0.xml

• The Vocabulary loosens the spec (Maybe you call it more extensible)

• Add the Vocabulary and it looks kinda, maybe similar to the Enterprise spec

6

IMS Enterprise Person<person> <comments>An useful comment, hopefully.</comments> <sourcedid> <source>IMS-LMS</source> <id>student_123456</id> </sourcedid> <userid>ColinS</userid> <name> <fn>Chris Greenough</fn> <prefix>Mr</prefix> </name> <demographics> <gender>2</gender> <bday>1958-03-31T00:00</bday> <disability>Blind</disability> </demographics> <email>colin@imsglobal.org</email> <url>http://www.imsglobal.org</url> <tel telnum="1">+44-114-2335007</tel>

<adr> <pobox>345</pobox> <extadd>Region Court</extadd> <street>56 Grange Road</street> <locality>Guildford</locality> <pcode>GU12 5XH</pcode> <country>United Kingdom</country> </adr> <photo imgtype="image/jpg"> <extref>http://www.imsglobal.org/staff/photo.jpg</extref> </photo> <systemrole systemroletype="SysAdmin"/> <institutionrole primaryrole="Yes" institutionroletype="Administrator"/> <datasource>CSU-LMS</datasource></person>

7

IMS LIS Person(Simplified)

<person>

<name>

<nameType>Preferred</nameType>

<partName>

<vocab id=“First”>Chris</vocab>

<vocab id=“Last”>Greenough</vocab>

<vocab id=“Middle”>D</vocab>

</partName>

</name>

<name> <nameType>Full</nameType> <partName> <vocab id=“First”>Christopher</vocab> <vocab id=“Last”>Greenough</vocab> <vocab id=“Middle”>Douglas</vocab> </partName> </name>

8

Actual Partial Person Object

"person":{ "name":{"nameType": {"instanceIdentifier":{"textString":"Preferred"}, "instanceValue":{"textString":"Preferred"}, "instanceVocabulary":"http://www.imsglobal.org/lis/pmsv2p0/nametypevocabularyv1p0"}, #B1.2 "partName": [ {"instanceIdentifier":{"textString":"First"}, "instanceName":{"textString":"First"}, "instanceVocabulary":"http://www.imsglobal.org/lis/pmsv2p0/partnamevocabularyv1p0", "instanceValue":{"textString":"Chris"} }, {"instanceIdentifier":{"textString":"Last"}, "instanceName":{"textString":"Last"}, "instanceVocabulary":"http://www.imsglobal.org/lis/pmsv2p0/partnamevocabularyv1p0", "instanceValue":{"textString":"Last"}} ] #B1.3 },

9

Learn Setup

10

End Points

11

Logging!!!

12

Mapping

13

Demo

14

IMS LIS WSDL

http://www.imsglobal.org/lis/

15

IMS LIS WSDL Vocab

16

Bb LIS B2

package blackboard.dataintegration.lis.webservice;

public class PersonManagementServiceSyncService extends BaseLISWebservice

{

public OMElement changePersonIdentifier( @SuppressWarnings( "unused" ) OMElement element )

{

return doUnsupportedOp( CHANGE_PERSON_IDENTIFIER_RESPONSE, LISWebserviceConstants.PERSON_MANAGEMENT_SERVICE_NAMESPACE );

}

LIS_B2_sample_code.zip

17

Bb Enabled Methods• PersonManagementServiceSyncService

• createPerson(GUID.Type sourcedId, PersonRecord.Type personRecord, )

• deletePerson(GUID.Type sourcedId, )

• replacePerson(GUID.Type sourcedId, PersonRecord.Type personRecord, )

• BulkDataExchangeManagementServiceSyncService• announceBulkDataExchange(LUID.Type transactionId,

BulkBlockManifest.Type bulkBlockManifest, )

• CourseSectionManagerSyncService• createCourseSection(GUID.Type sourcedId,

CourseSectionRecord.Type courseSectionRecord, )

• deleteCourseSection(GUID.Type sourcedId, )

• replaceCourseSection(GUID.Type sourcedId, CourseSectionRecord.Type courseSectionRecord, )

18

Bb Enabled Methods cont• GroupManagementServiceSyncService

• createGroup(GUID.Type sourcedId, GroupRecord.Type groupRecord, )

• deleteGroup(GUID.Type sourcedId, )

• replaceGroup(GUID.Type sourcedId, GroupRecord.Type groupRecord, )

• MembershipManagementServiceSyncService• createMembership(GUID.Type sourcedId,

MembershipRecord.Type membershipRecord, )

• deleteMembership(GUID.Type sourcedId, )

• replaceMembership(GUID.Type sourcedId, MembershipRecord.Type membershipRecord, )

19

Python Sample Code

• GitHub

• Contains Enabled Functions

• https://github.com/greeno/PyLis

20

Wrap-up

• No Read!

• Only create, delete, modify methods

• Sample Code needs to be flushed out• Start on GitHub (Fork Me!)

• Vocab make for flexible yet complicated schema

• Logging is GREAT

• Testing is GREAT

• Mapping is GREAT

• Custom scripts are GREAT!!

21

Questions

22

We value your feedback!Please fill out a session evaluation.