Devcon 2012 Goldweic Nielsen Towards Bboogle 3.0.0 - a Technical Walkthrough


Published on

Client Presentation

Published in: Education, Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Use dep720
  • Devcon 2012 Goldweic Nielsen Towards Bboogle 3.0.0 - a Technical Walkthrough

    1. 1. Towards Bboogle3.0.0: a TechnicalWalkthroughPatricia GoldweicSr. Software EngineerAR&T, Northwestern UniversityBrian NielsenManager, Faculty Support ServicesAR&T, Northwestern University
    2. 2. Overview• Bboogle History and Demo• What was missing?• How we approached it: Bboogle Teams • Teams Demo• Putting it all together: Bboogle and Bboogle Teams• Technical Walkthrough • Architecture • Development best practices used• Future Roadmap 2
    3. 3. Bboogle History• Open source project started by Northwestern (2009) • In production at NU by June 2009• Northwestern developed Bboogle Teams in 2010- 2011 • Initially independent from the LMS • Eventually integrated with Blackboard groups• Blackboard contributed certified block in 2011 (2.0.0+) • The Bb – NU partnership resulted in an easier to install package• NU integrated Bboogle and Bboogle Teams in 2012 3
    4. 4. Bboogle HistoryWhat is Bboogle? A Bb-Google Apps integration thatprovides: • Instructor tools to embed Google Apps content in Bb courses • Automatic adjustment of permissions in Google • Integration with Google Single Sign On • (optional) Automated Google Apps user provisioning 4
    5. 5. Demonstration SSO available 5
    6. 6. What was missing?• A convenient way to collaborate in small teams using Google Apps resources• Teams could be fluid, or time-constrained• Shared spaces in Google Apps for each such team• A way to expose these resources within the LMS 6
    7. 7. How we approached it: Bboogle TeamsBboogle Teams Concepts• Community: course or academic program, cohort, etc.• Team: group of people within a given community• Breakout: set of (time-constrained) disjoint teams, which partitions a community• Communities and teams are built on GA groups• A team has a corresponding GA site, GA calendar and GA collection 7
    8. 8. How we approached it: Bboogle TeamsIntegrating Bboogle Teams with the LMS• A Bb course is mapped to a Bboogle Teams community• A Bb group set is mapped to a Bboogle Teams breakout• A Bb group is mapped to a Bboogle Teams team• To update team memberships, one (re) synchronizes a Bb group set its mapped breakout• Course tool: exposes team content to course• Control panel tool: used for (re) synchronization 8
    9. 9. How we approached it: Bboogle Teams 9
    10. 10. Technical Walkthrough: Architecture 10
    11. 11. Technical Walkthrough: Best PracticesServices Oriented Architecture• Gint and Teams services as independent of the LMS• When fully enabled, services can be contacted via httpExample Gint service requests:• (provisioning) group Signup Request, verification• (sharing) share content with GA groupExample Teams service requests:• Community, breakout and team creation• Team membership verification, ownership requests• Membership synchronization 11
    12. 12. Technical Walkthrough: Best PracticesServices Oriented Architecture• Gint and Teams have Java client libraries (facades) which work for local and remote clients (2.1.0)• Teams uses Gint to interact with Google services.• If fully enabled, Teams is a set of restful web services• Gint was expanded to support Teams functionality • Scheduling of requests • Content creation • Group membership voting algorithm 12
    13. 13. Technical Walkthrough: Best PracticesUse of the Java Persistence Framework• JPA is used as an ORM, Eclipselink as JPA provider• Programming is done at a higher level of abstraction • POJO methods used to access content • JPQL is used for (few) database queries; no JDBC • persistence.xml file used to configure JPA provider• Blackboard contributed the hook to use Bb’s database with JPA • Created BlackboardSessionCustomizer class for Eclipselink • Created schema.xml 13
    14. 14. Technical Walkthrough: JPA code snippets (Gint service example)import javax.persistence.*;…@Entity@Table (name="nwu_gintlink")public class GintLink extends TransactionalObject { private String m_contentUrl; // content url for the link private String m_creatorId; // Google id of the content’s creator private int m_id; // generated primary key // ************ Getters and Setters ***************** @Column(name="contentUrl") public String getContentUrl() { return m_contentUrl; } … @Id @GeneratedValue(generator="nwu_gintlink_seq") @Column(name="id") public int getId() { return m_id; } 14
    15. 15. Technical Walkthrough: JPA code snippets@Entity (Teams service example)@Table (name="nwu_btperson")public class Person implements JSonUtilSerializable { … @Id @Column(name="id") private String id; // The Google id (complete email address) of the community member … @OneToMany @JoinTable ( name="nwu_btperson_community", joinColumns= @JoinColumn(name="personId", referencedColumnName="id"), inverseJoinColumns= @JoinColumn(name="communityId", referencedColumnName="id") ) private Collection<Community> communities; @Temporal (TemporalType.TIMESTAMP) @Column(name="created") private Date created; 15
    16. 16. Technical Walkthrough: JPA code snippetsCreating an object (e.g. GintLink) and saving it in the database:…import javax.persistence.*;EntityManager manager;GintLink link = new GintLink(contentURL, creatorId);manager.persist(gintLink);Finding all the Bboogle Teams communities associated with aPerson record:…import javax.persistence.*;Person person;Collection<> communities = person.getCommunities();NOTE: no sql queries were used in the above examples (they’re not needed!) 16
    17. 17. Technical Walkthrough: JPA code snippetsExample use of JPQL in Gint service:…Import javax.persistence.*;…Query linkQuery = manager.createQuery("SELECT l FROM GintLink l where l.contentUrl= ?1 and l.creatorId = ?2");linkQuery.setParameter(1, contentURL);linkQuery.setParameter(2, userid);List<?> links = linkQuery.getResultList();NOTE: JPQL queries use the classes’ public property namesJPA configuration examples:See persistence.xml, schema.xml and BlackboardSessionCustomizer included inBboogle’s distribution 17
    18. 18. Bboogle RoadmapBb Certification of Bboogle 3.0.1Add features to improve instructional use • Admin tools to help manage Google resources • Creation of Google content from within Bb • Expose time-validity ranges for teams • Support primary/secondary Google domainsKeep up with Google’s ever changing platform • Provisioning auth upgrade • Migrate over to newer Google apis 18
    19. 19. Bboogle ContactsBlackboard Certified Building Block• Download from the Bb Extensions CatalogBboogle 3.0.1: (no Blackboard support)• Subversion checkout :• Open source project site: (contributors welcome!) feedback, questions and bug reports)Join project’s mailing list and monthly adopters meetings• Third Wednesday of each month, 2 pm 19
    20. 20. We value your feedback!Please fill out a session evaluation. 20