Upload
blackboard-inc
View
571
Download
5
Tags:
Embed Size (px)
DESCRIPTION
Client Presentation
Citation preview
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>[email protected]</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.