Devcon 2012 Goldweic Nielsen Towards Bboogle 3.0.0 - a Technical Walkthrough
1. 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
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. 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. 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
4
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. 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
7
8. 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 its mapped breakout
• Course tool: exposes team content to course
• Control panel tool: used for (re) synchronization
8
11. 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
11
12. Technical Walkthrough: Best Practices
Services 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. 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 the hook to use Bb’s database
with JPA
• Created BlackboardSessionCustomizer class for Eclipselink
• Created schema.xml
13
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. 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. 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!)
16
17. 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
17
18. Bboogle Roadmap
Bb Certification of Bboogle 3.0.1
Add 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 domains
Keep up with Google’s ever changing platform
• Provisioning auth upgrade
• Migrate over to newer Google apis
18
19. Bboogle Contacts
Blackboard Certified Building Block
• Download from the Bb Extensions Catalog
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
(post feedback, questions and bug reports)
Join project’s mailing list and monthly adopters meetings
• Third Wednesday of each month, 2 pm CDT
pgoldweic@northwestern.edu
bnielsen@northwestern.edu
19
20. We value your feedback!
Please fill out a session evaluation.
20