© Blackboard, Inc. All rights reserved. Java APIs in Depth: Blackboard Learning System and Community System David Ashman Senior Software Architect, Product.

Slides:



Advertisements
Similar presentations
Walkthrough of Java APIs Presented By Tracy Engwirda 28 September, 2005.
Advertisements

A Blackboard Building Block™ Crash Course for Web Developers
© Blackboard, Inc. All rights reserved. B2 APIs in Detail Tracy Engwirda Principal Consultant Blackboard Inc. July 19 th.
 Copyright Wipro Technologies JSP Ver 1.0 Page 1 Talent Transformation Java Server Pages.
My First Building Block Presented By Tracy Engwirda 28 September, 2005.
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
ASP.NET 2.0 Chapter 6 Securing the ASP.NET Application.
Peoplesoft: Building and Consuming Web Services
Using Third-Party Frameworks in Building Blocks™ David Ashman Principal Architect, Product Development.
UNIT-V The MVC architecture and Struts Framework.
Drupal Workshop Introduction to Drupal Part 1: Web Content Management, Advantages/Disadvantages of Drupal, Drupal terminology, Drupal technology, directories.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Presented by…. Group 2 1. Programming language 2Introduction.
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
© Blackboard, Inc. All rights reserved. Developing Blackboard Building Blocks: Getting Started John Knight Senior Engineer Blackboard Inc. July 18 th.
Java Frameworks Indy Java Users Group January 29, 2003.
JDBC Session 5 Tonight: Data Access Patterns 1.J2EE Architecture & Design Patterns 2.The Data Access Tier 3.Data Access Patterns –DataAccessObject (DAO)
© Blackboard, Inc. All rights reserved. My First Building Block as a Content Type Heather Natour Senior Lead Engineer Blackboard Inc. July 18 th 1:30pm.
.NET: Blackboard Collaborations with Microsoft Presented By Jan Poston Day Director, Standards and Interoperability Ramsey Chambers Manager, Business Development.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Java Beans.
© Blackboard, Inc. All rights reserved. WebCT & Blackboard Bob Alcorn, Senior Architect.
1 Copyright © 2004, Oracle. All rights reserved. Introduction to Oracle Forms Developer and Oracle Forms Services.
Copyright © 2012 Accenture All Rights Reserved.Copyright © 2012 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are.
© D. Wong  Indexes  JDBC  JDBC in J2EE (Java 2 Enterprise Edition)
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
Data Storage: Part 4 (Content Providers). Content Providers Content providers allow the sharing of data between applications. Inter-process communication.
© Blackboard, Inc. All rights reserved. Security and Authentication with Blackboard Building Blocks™ David Ashman Senior Software Architect, Product Development.
Blackboard Building Blocks Introduction to Building Blocks Saturday, October 10, 2015 Bob Alcorn, Director, Platform Architecture.
JSF Introduction Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
CHEF II / Sakai Architecture. CHEF II Changes uPortal replaces Jetspeed –jsr 168 portlet, servlet compliant Spring replaces Turbine component framework.
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
© Blackboard, Inc. All rights reserved. Blackboard Learning System™ Vista Enterprise License The PowerLinks™ Kit Scott Stanley Washington DC 2006.
Seattle Drupal Clinic Introduction to Drupal Part 1: Web Content Management, Advantages/Disadvantages of Drupal, Drupal terminology.
JSF Framework Java Server Faces Presented by Songkran Totiya (6/10/2014)
Copyright © 2002 ProsoftTraining. All rights reserved. JavaServer Pages.
Blackboard Building Blocks Portal Modules and Module Types Monday, November 16, 2015 Tom Joyce, Product Manager, Product Development.
Blackboard Building Blocks APIs, Framework and Security Sunday, November 22, 2015 Bob Alcorn, Director, Platform Architecture.
Blackboard and Content Types John Knight Blackboard Inc.
3 Copyright © 2004, Oracle. All rights reserved. Working in the Forms Developer Environment.
Blackboard Building Blocks Looking Ahead Thursday, December 03, 2015 Dan McFadyen, Tracy Engwirda, Tom Joyce.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
JAVA BEANS JSP - Standard Tag Library (JSTL) JAVA Enterprise Edition.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
DSpace System Architecture 11 July 2002 DSpace System Architecture.
The Sakai Architecture
Blackboard Building Blocks™: Data Integration and Administration Raymond Peterson, Blackboard, Inc.
Copyright (c) 2014 Pearson Education, Inc. Introduction to DBMS.
Matthias Clausen, Jan Hatje, DESY CSS Overview – Alarm System and Management CSS Overview - GSI, 11 Februrary CSS Overview Alarm System and CSS.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
8 Copyright © 2004, Oracle. All rights reserved. Making the Model Secure.
Module 6: Administering Reporting Services. Overview Server Administration Performance and Reliability Monitoring Database Administration Security Administration.
Portal Modules & Module Types Heather Natour Senior Software Engineer, Blackboard Community System.
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
© Blackboard, Inc. All rights reserved. SOAP-based Mobilization for an Efficient Personal Learning Environment Nick Schiavi Blackboard R&D.
10 Copyright © 2004, Oracle. All rights reserved. Building ADF View Components.
Apache Struts Technology A MVC Framework for Java Web Applications.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
CHAPTER 9 File Storage Shared Preferences SQLite.
A Presentation Presentation On JSP On JSP & Online Shopping Cart Online Shopping Cart.
Introduction to J2EE Architecture
CMPE419 Mobile Application Development
The Model Layer What is Model?
AMGA Web Interface Vincenzo Milazzo
JavaServer Faces: The Fundamentals
CMPE419 Mobile Application Development
SDMX IT Tools SDMX Registry
Presentation transcript:

© Blackboard, Inc. All rights reserved. Java APIs in Depth: Blackboard Learning System and Community System David Ashman Senior Software Architect, Product Development Blackboard Inc.

2 Any statements in this presentation about future expectations, plans and prospects for Blackboard and other statements containing the words “believes,” “anticipates,” “plans,” “expects,” “will,” and similar expressions, constitute forward-looking statements within the meaning of The Private Securities Litigation Reform Act of Actual results may differ materially from those indicated by such forward-looking statements as a result of product development changes and other important factors discussed in our filings with the SEC. We may make statements regarding our product development and service offering initiatives, including the content of future product upgrades, updates or functionality in development. While such statements represent our current intentions, they may be modified, delayed or abandoned without prior notice and there is no assurance that such offering, upgrades, updates or functionality will become available unless and until they have been made generally available to our customers. About Forward Looking Statements

3 Overview » Background » API Overview » High level review of packages, patterns » System Extension Overview

4 Audience » Knowledge of Java programming » People who want an overview of the entire range of functionality exposed » (without resorting to reading the docs) » Thinking of building, don’t know what to look at first…

5 A Little History… Import/Export R6 Portal R6 Gradebook R6 Assessment Module Developer Kit Blackboard Building Blocks™ R7 Discussion Board

6 Blackboard Building Blocks™ Architecture Core Services Data Objects Business Layer Presentation Layer (JSP, Struts, Tag Library) Log Security ConfigPersistence Session I18NVXI ContextPlug-ins DB

7 Road Map » Core Services » How do I log it, authenticate it, etc.? » Persistence » How do I get to the data? » Data Objects » What data can I see?

© Blackboard, Inc. All rights reserved. Service APIs

9 Services » Infrastructure for common utility functions » Exposed as interfaces (mostly) » Lookup via BbServiceManager

10 Service Lookups LogService logService = BbServiceManager.getLogService(); LocaleManager locMgr = BbServiceManager.getLocaleManager(); ContextManager ctxMgr = (ContextManager)BbServiceManager.lookupService( ContextManager.class );

11 Services – Log » blackboard.platform.log.LogService » Simple write-only log implementation » Supports configurable levels » Decouples system from underlying logging implementation » Log4j » JDK 1.4 logging

12 Services – Filesystem » blackboard.platform.filesystem.FileSystemService » Broker different file system locations » Course and content » E.g., getContentDirectory()

13 Services - Security » blackboard.platform.security.AccessManagerService » Authentication » Authorization

14 Services – Session » blackboard.platform.session.BbSessionManagerService » State for the current browser-based client » Stores authentication status » Cookie-based session management » Persisted to the database to share between Perl and Java processes » Some assembly required » Not all HTTP-clients (e.g., media plugins for browsers) honor the host browser’s cookies

15 Services – Context » blackboard.platform.context.ContextManager » Represents the current request’s state » Who am I? » What course am I in? » What database am I supposed to talk to? » Critical entry point that all code must call » Interact via ContextManager service interface » ContextManager.setContext() » ContextManager.releaseContext()

© Blackboard, Inc. All rights reserved. Persistence APIs

17 Persistence APIs » Interfaces allow replaceable persistence implementations » Currently proprietary to Blackboard » Implements standard DAO Pattern » BbPersistenceManager » Ties together different aspects of persistence » Loader/Persister broker » Container

18 Persistence APIs – Id » Used to encapsulate the unique identifier for each data object » Defines the object’s lifecycle » Id.UNSET_ID – default id for new objects » Primary key, and more… » Data type » Container (database) » GUIDs are not used, so keys can collide

19 Persistence APIs – Loaders » Implements DAO Pattern for finding and loading data objects » All type-specific loaders are geared towards known predicates » loadById() » loadByUserIdandType() » Why? » Performance – Ad-hoc queries can kill the system… » API stability

20 Persistence APIs – Persisters » Implements DAO Pattern for inserting, updating and deleting data objects » “Smart” update » Id object state determines insert vs. update

21 Accessing Persisters and Loaders » Not directly instantiated » Always implemented as interfaces » BbPersistenceManager is the broker » Most have a Default object for direct access ContentDbLoader loader = ContentDbLoader.Default.getInstance()

22 Persistence Example Content content = new Content(); content.setTitle(“Foo”); // etc... ContentDbPersister contentPersister = ContentDbPersister.Default.getInstance(); contentPersister.persist( content );

© Blackboard, Inc. All rights reserved. Data Object APIs

24 Data Objects » blackboard.data.* » Object view of the database » Typed to wrap legacy database constructs » Type-safe enumerations for constrained database columns » User.Role.SYSTEM_ADMIN » Faithful adherence to existing schema has some interesting side effects

25 Data Objects – BbObject » Base object for all data objects » Common attributes » Primary Key (Id) » Creation date » Modification date » “Smart” attributes » Properties stored in an internal map, instead of member variables » Smart load, dirty flag

26 Data Objects – Content » blackboard.data.content » Content is the root object that can be used in the “content” areas of a course » All other objects are simple subclasses of Content that over-ride specific values » Different types of content » Folder » Can the object contain other objects? » Lesson » Should the contents be displayed sequentially? » Reviewable » Can the content be reviewed for Adaptive Release rules?

27 Data Objects – Content

28 Data Objects – Content » Content Handler » Ties content to URI-based “handlers” » Similar to mime types » resource/x-plugin-scorm » This is really the B2 “glue” for custom content » Custom content types should create and manipulate Content objects » Only interact with specific types when you KNOW you’re dealing with the correct type » Generally safer to only use Content object for custom content

29 Data Objects – Course and Organization » blackboard.data.course » Course and Organization » Organization extends Course and overrides specific attributes » Group » Represents a subset of the course members » CourseMembership » Represents enrollment in a course/organization » Enumerated roles » CourseMembership.Role.INSTRUCTOR » CourseMembership.Role.STUDENT » CourseMembership.Role.GRADER

30 Data Objects - Gradebook » blackboard.data.gradebook » Provides access to Blackboard course management system’s gradebook » LineItem » Represents individual gradeable items in a course gradebook » Score » Wraps the actual outcome for a given line item

31 Data Objects – Discussion Board » blackboard.data.discussionboard » Exposes Blackboard community system’s discussion board subsystem » Conference » Aggregates a collection of forums » Each course/organization has one default Conference » Forum » Encapsulates a collection of messages related to a common topic » Message » Individual message in a Forum » Can be threaded » Supports attachments

32 Other Data Objects » Announcement » Wraps, well, announcements » Can be system or course level » Calendar » Wrap entries in the calendar » Course and System level » CourseToc » Represents navigation paths within a course menu » Displayed inside a course

33 Other Core Objects » blackboard.base.BbList » List implementation that can enforce type safety » Implements java.util.List interface, so use that instead » Will probably be replaced with Java 5.0 Generics based List » blackboard.base.BbEnum » Base class for all type-safe enumerations » Will start using Java 5.0 enum constructs » blackboard.base.NestedRuntimeException and blackboard.base.NestedException » Pre-JDK 1.4 facility for chaining exceptions

34 Other Core Objects » blackboard.base.FormattedText » Encapsulation of text data entered via standard Text boxes » Defines enumeration for Smart, Plain, and HTML text » blackboard.base.GenericComparator » Comparator implementation that can sort based on arbitrary properties » Works with String, Boolean, Dates, and Comparable

© Blackboard, Inc. All rights reserved. Integration APIs

36 Portal » blackboard.portal.external » CustomData is all you’ll need… » Stores module and personalization information for a given module » Store key/value » Value can be string or binary object

37 User Interface Design » Tag Libraries » Encapsulate re-usable UI components to capture the Blackboard look and feel » Caret Pages » List Pages » Headers » Steps and Data Elements for data collection

38 Integration APIs » blackboard.admin.* » Formerly called the “Event” APIs » Repackaged to be more consistent with B2 APIs » Implements data model for Snapshot » Maps Blackboard data model to IMS standard » Person » Course (Group) » Membership » DataSource » Defines logically related entities that can be managed independently via Snapshot

© Blackboard, Inc. All rights reserved. Deployment

40 Anatomy of a Plugin Package (.war/.zip file) Platform Descriptor Blackboard Manifest Web Resources Libraries web.xml Servlets, JSP (Java).class,.jar files (Java)

41 Plugin Deployment » Standard Java-based web application » WEB-INF/bb-manifest.xml » Additional Blackboard metadata » Defines data that is stored into the database » Tools » Content Handlers » Portal Modules » Defines “entry points” » Links that can be rendered from the Blackboard UI

42 Plugin Deployment – General Information

43 Plugin Deployment – Content Handlers

44 Plugin Deployment – Tools Application installed to demonstrate storage techniques

45 Plugin Deployment – Portal Modules <module-type ext-ref="smpl-module" title="plugin.sample-module.title“ uicreatable="true"> module view.jsp edit.jsp admin.jsp

46 Plugin Deployment - Permissions <permission type="socket" name=“ actions="resolve,connect"/> <permission type="java.io.FilePermission" name="&lt;&lt;ALL FILES&gt;&gt;“ actions="read,write,delete"/> <permission type="persist" name="Content" actions="create,modify,delete"/> <permission type="persist" name="Outcome" actions="load,persist,delete"/>

47 Plugin Deployment - Localization » element indicates the extension is localized » Name and description values in bb-manifest.xml are used as bundle keys » Bundles are deployed under WEB-INF/bundles using bb-manifest-xx_XX.properties pattern for all supported locales

48 Plugin Deployment

49 What have we covered? » Core Service APIs » Persistence APIs – DAO Pattern » Data Objects » Integration APIs » Deployment

© Blackboard, Inc. All rights reserved. Questions?