200 likes | 261 Views
Towards Bboogle 3.0.0: a Technical W alkthrough. Patricia Goldweic Sr. Software Engineer AR&T, Northwestern University Brian Nielsen Manager, Faculty Support Services AR&T, Northwestern University. Overview. Bboogle History and Demo What was missing?
E N D
Towards Bboogle 3.0.0: a Technical Walkthrough Patricia Goldweic Sr. Software Engineer AR&T, Northwestern University Brian Nielsen Manager, Faculty Support Services AR&T, Northwestern University
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
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
Bboogle History What is Bboogle? A Bb-Google Apps integration that provides: • 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
Demonstration SSO available
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
How we approached it: Bboogle Teams Bboogle 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
How we approached it: Bboogle Teams Integrating 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 with its mapped breakout • Course tool: exposes team content to course • Control panel tool: used for (re) synchronization
Technical Walkthrough: Best Practices Services Oriented Architecture • Gint and Teams services as independent of the LMS • When fully enabled, services can be contacted via http Example Gint service requests: • (provisioning) group Signup Request, verification • (sharing) share content with GA group Example Teams service requests: • Community, breakout and team creation • Team membership verification, ownership requests • Membership synchronization
Technical Walkthrough: Best Practices Services Oriented Architecture • Gintand Teams have Java client libraries • local and remote clients are supported (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 • GA Content creation
Technical Walkthrough: Best Practices Use 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 hook to Bb’s database in JPA • BlackboardSessionCustomizer class for Eclipselink • schema.xml
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 intm_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 intgetId() { return m_id; }
Technical Walkthrough: JPA code snippets(Teams service example) @Entity @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;
Technical Walkthrough: JPA code snippets Creating 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 a Person record: … import javax.persistence.*; Person person; Collection<> communities = person.getCommunities(); NOTE: no sql queries were used in the above examples (they’re not needed!)
Technical Walkthrough: JPA code snippets Example 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 names JPA configuration examples: See persistence.xml, schema.xml and BlackboardSessionCustomizer included in Bboogle’s distribution
Bboogle Roadmap BbCertification of Bboogle 3.0.1 (when?) Improving instructional use • Admin tools to help manage Google resources • Creation of Google content from within Bb • Support primary/secondary Google domains • Make Bboogle a group-level tool Keeping up with Google’s platform • Provisioning auth upgrade • Migrate over to newer Google apis
Bboogle Contacts Blackboard Certified Building Block • Distributed with Bb software updates Bboogle 3.0.1: (no Blackboard support) • Subversion checkout : https://source.at.northwestern.edu/svn/os/bb-gint/trunk Open source project site: (contributors welcome) http://projects.oscelot.org/gf/project/bboogle Join project’s mailing list and monthly adopters meetings • Third Wednesday of each month, 2 pm CDT pgoldweic@northwestern.edu bnielsen@northwestern.edu
We value your feedback!Please fill out a session evaluation.