SlideShare ist ein Scribd-Unternehmen logo
1 von 20
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

                                                       2
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
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
Demonstration




  SSO available

                  5
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
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
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
How we approached it: Bboogle Teams




                                      9
Technical Walkthrough: Architecture




                                      10
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
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
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
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
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
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
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
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
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
We value your feedback!
Please fill out a session evaluation.




                                        20

Weitere ähnliche Inhalte

Andere mochten auch

Resume 1
Resume 1Resume 1
Resume 1aks671
 
Zulfiya tong kuychisi aslonova nafisa muxammadovna
Zulfiya tong kuychisi aslonova nafisa muxammadovnaZulfiya tong kuychisi aslonova nafisa muxammadovna
Zulfiya tong kuychisi aslonova nafisa muxammadovnaNafisa Aslonova
 
Investigación y desarrollo solla sa tecnnova
Investigación y desarrollo solla sa tecnnovaInvestigación y desarrollo solla sa tecnnova
Investigación y desarrollo solla sa tecnnovatecnnovauee
 
Producto1_Alexandra Rossano Ortega
Producto1_Alexandra Rossano OrtegaProducto1_Alexandra Rossano Ortega
Producto1_Alexandra Rossano OrtegaAlexa Rossano
 
sociales e historia josé david tomases cantillo historia
 sociales e historia josé david tomases cantillo historia sociales e historia josé david tomases cantillo historia
sociales e historia josé david tomases cantillo historiaJosé D Tomases C
 
Collage De Almacenes
Collage De AlmacenesCollage De Almacenes
Collage De Almacenesmanagers
 

Andere mochten auch (8)

Campo elétrico
Campo elétricoCampo elétrico
Campo elétrico
 
Resume 1
Resume 1Resume 1
Resume 1
 
La crisis del antiguo régimen
La crisis del antiguo régimenLa crisis del antiguo régimen
La crisis del antiguo régimen
 
Zulfiya tong kuychisi aslonova nafisa muxammadovna
Zulfiya tong kuychisi aslonova nafisa muxammadovnaZulfiya tong kuychisi aslonova nafisa muxammadovna
Zulfiya tong kuychisi aslonova nafisa muxammadovna
 
Investigación y desarrollo solla sa tecnnova
Investigación y desarrollo solla sa tecnnovaInvestigación y desarrollo solla sa tecnnova
Investigación y desarrollo solla sa tecnnova
 
Producto1_Alexandra Rossano Ortega
Producto1_Alexandra Rossano OrtegaProducto1_Alexandra Rossano Ortega
Producto1_Alexandra Rossano Ortega
 
sociales e historia josé david tomases cantillo historia
 sociales e historia josé david tomases cantillo historia sociales e historia josé david tomases cantillo historia
sociales e historia josé david tomases cantillo historia
 
Collage De Almacenes
Collage De AlmacenesCollage De Almacenes
Collage De Almacenes
 

Ähnlich wie Devcon 2012 Goldweic Nielsen Towards Bboogle 3.0.0 - a Technical Walkthrough

Google App Engine for Python - Unit01: Basic
Google App Engine for Python - Unit01: BasicGoogle App Engine for Python - Unit01: Basic
Google App Engine for Python - Unit01: BasicWei-Tsung Su
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Derek Jacoby
 
Chennai Drupal Meet
Chennai Drupal MeetChennai Drupal Meet
Chennai Drupal Meetsivaji2009
 
Google Devfest 2009 Argentina - Google and the Social Web
Google Devfest 2009 Argentina - Google and the Social WebGoogle Devfest 2009 Argentina - Google and the Social Web
Google Devfest 2009 Argentina - Google and the Social WebPatrick Chanezon
 
S2U november 2013
S2U november 2013S2U november 2013
S2U november 2013Neal Caidin
 
Google Developer Days Brazil 2009 - Google Social Web
Google Developer Days Brazil 2009 -  Google Social WebGoogle Developer Days Brazil 2009 -  Google Social Web
Google Developer Days Brazil 2009 - Google Social WebPatrick Chanezon
 
Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...
Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...
Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...MongoDB
 
GR8CONF Contributing Back To Grails
GR8CONF Contributing Back To GrailsGR8CONF Contributing Back To Grails
GR8CONF Contributing Back To Grailsbobbywarner
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Pythonwesley chun
 
CloudOps evening presentation from Google
CloudOps evening presentation from GoogleCloudOps evening presentation from Google
CloudOps evening presentation from GoogleAlistair Croll
 
Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015
Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015
Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015Chris Jang
 
[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8
[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8
[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8Wong Hoi Sing Edison
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsBruno Borges
 
Best Practices in Widget Development - Examples and Counterexamples
Best Practices in Widget Development  - Examples and CounterexamplesBest Practices in Widget Development  - Examples and Counterexamples
Best Practices in Widget Development - Examples and CounterexamplesROLE Project
 
Drupal 8 Initiatives
Drupal 8 InitiativesDrupal 8 Initiatives
Drupal 8 InitiativesAngela Byron
 

Ähnlich wie Devcon 2012 Goldweic Nielsen Towards Bboogle 3.0.0 - a Technical Walkthrough (20)

Google App Engine for Python - Unit01: Basic
Google App Engine for Python - Unit01: BasicGoogle App Engine for Python - Unit01: Basic
Google App Engine for Python - Unit01: Basic
 
Github job support.pptx
Github job support.pptxGithub job support.pptx
Github job support.pptx
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
Chennai Drupal Meet
Chennai Drupal MeetChennai Drupal Meet
Chennai Drupal Meet
 
Google Devfest 2009 Argentina - Google and the Social Web
Google Devfest 2009 Argentina - Google and the Social WebGoogle Devfest 2009 Argentina - Google and the Social Web
Google Devfest 2009 Argentina - Google and the Social Web
 
Building a Better BaaS
Building a Better BaaSBuilding a Better BaaS
Building a Better BaaS
 
S2U november 2013
S2U november 2013S2U november 2013
S2U november 2013
 
Google Developer Days Brazil 2009 - Google Social Web
Google Developer Days Brazil 2009 -  Google Social WebGoogle Developer Days Brazil 2009 -  Google Social Web
Google Developer Days Brazil 2009 - Google Social Web
 
Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...
Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...
Socialite, the Open Source Status Feed Part 1: Design Overview and Scaling fo...
 
GR8CONF Contributing Back To Grails
GR8CONF Contributing Back To GrailsGR8CONF Contributing Back To Grails
GR8CONF Contributing Back To Grails
 
Week 1 - ACE.pptx
Week 1 - ACE.pptxWeek 1 - ACE.pptx
Week 1 - ACE.pptx
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Python
 
CloudOps evening presentation from Google
CloudOps evening presentation from GoogleCloudOps evening presentation from Google
CloudOps evening presentation from Google
 
Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015
Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015
Google Tech Talk with Dr. Eric Brewer in Korea Apr.27.2015
 
[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8
[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8
[HKDUG] #20160626 - HKOSCon 2015 - Website DIY with Drupal 8
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
 
Best Practices in Widget Development - Examples and Counterexamples
Best Practices in Widget Development  - Examples and CounterexamplesBest Practices in Widget Development  - Examples and Counterexamples
Best Practices in Widget Development - Examples and Counterexamples
 
Drupal 8 Initiatives
Drupal 8 InitiativesDrupal 8 Initiatives
Drupal 8 Initiatives
 
Codeinator
CodeinatorCodeinator
Codeinator
 

Kürzlich hochgeladen

Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 

Kürzlich hochgeladen (20)

Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 

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
  • 5. Demonstration SSO available 5
  • 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
  • 9. How we approached it: Bboogle Teams 9
  • 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

Hinweis der Redaktion

  1. Use dep720