© Blackboard, Inc. All rights reserved. B2 APIs in Detail Tracy Engwirda Principal Consultant Blackboard Inc. July 19 th.

Slides:



Advertisements
Similar presentations
Unit Testing in the OO Context(Chapter 19-Roger P)
Advertisements

Walkthrough of Java APIs Presented By Tracy Engwirda 28 September, 2005.
Apache Struts Technology
B2: Storage and Compatibility John Knight Blackboard, Inc.
A Blackboard Building Block™ Crash Course for Web Developers
Seattle Drupal Clinic Introduction to Drupal and Web Content Management.
My First Building Block Presented By Tracy Engwirda 28 September, 2005.
Sage CRM Developers Course
UNIT-V The MVC architecture and Struts Framework.
Presented by…. Group 2 1. Programming language 2Introduction.
Sys Prog & Scripting - HW Univ1 Systems Programming & Scripting Lecture 15: PHP Introduction.
© Blackboard, Inc. All rights reserved. Developing Blackboard Building Blocks: Getting Started John Knight Senior Engineer Blackboard Inc. July 18 th.
JDBC Session 5 Tonight: Data Access Patterns 1.J2EE Architecture & Design Patterns 2.The Data Access Tier 3.Data Access Patterns –DataAccessObject (DAO)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
© 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.
AJAX Chat Analysis and Design Rui Zhao CS SPG UCCS.
Java Beans.
CIS 375—Web App Dev II ASP.NET 2 Introducing Web Forms.
Denise Luther Senior IT Consultant Practical Technology Enablement with Enterprise Integrator.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
© Blackboard, Inc. All rights reserved. Security and Authentication Security and Authentication Tracy Engwirda Principal Consultant Blackboard Inc. July.
© 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.
Keys to Successful Beta Testing Presented by Ron Dinwiddie, Product Director, Blackboard Commerce Suite™ Jessica Finnefrock, Product Director, Blackboard.
© Blackboard, Inc. All rights reserved. My First Java Building Block for the Blackboard Content System Stephanie Cupp Senior Product Analyst Blackboard.
© Blackboard, Inc. All rights reserved. Security and Authentication with Blackboard Building Blocks™ David Ashman Senior Software Architect, Product Development.
® IBM Software Group © 2007 IBM Corporation J2EE Web Component Introduction
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.
© Blackboard, Inc. All rights reserved. Java APIs in Depth: Blackboard Learning System and Community System David Ashman Senior Software Architect, Product.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
CaDSR Freestyle Search June 11, caDSR Freestyle Search Overview Architecture Implementation Dependencies Futures 2.
Chapter 6 Server-side Programming: Java Servlets
Seattle Drupal Clinic Introduction to Drupal Part 1: Web Content Management, Advantages/Disadvantages of Drupal, Drupal terminology.
Java server pages. A JSP file basically contains HTML, but with embedded JSP tags with snippets of Java code inside them. A JSP file basically contains.
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.
Presented by Jessica Finnefrock, Product Director, Blackboard Academic Suite™ April 12, 2005.
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.
CS562 Advanced Java and Internet Application Introduction to the Computer Warehouse Web Application. Java Server Pages (JSP) Technology. By Team Alpha.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
System/SDWG Update Management Council Face-to-Face Flagstaff, AZ August 22-23, 2011 Sean Hardman.
CentralCampus Group: May13-26 – William Van Walbeek & Paul Wilson Client: Google, Muthu Muthusrinivasan Advisor: Manimaran Govindarasu Abstract Introduction.
The Sakai Architecture
Blackboard Building Blocks™: Data Integration and Administration Raymond Peterson, Blackboard, Inc.
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
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.
10 Copyright © 2004, Oracle. All rights reserved. Building ADF View Components.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Apache Struts Technology A MVC Framework for Java Web Applications.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
Building KFS using KNS Presented by James SmithJustin Beltran University of ArizonaUniversity of California, Irvine.
A Presentation Presentation On JSP On JSP & Online Shopping Cart Online Shopping Cart.
ISC321 Database Systems I Chapter 2: Overview of Database Languages and Architectures Fall 2015 Dr. Abdullah Almutairi.
Java Servlets By: Tejashri Udavant..
Creating Novell Portal Services Gadgets: An Architectural Overview
The Model Layer What is Model?
Enterprise Java Beans.
Session Abstract This session will provide an overview of the latest improvements and enhancements made to the Ed-Fi ODS/API in 2016, as well as a preview.
Plug-In Architecture Pattern
SDMX IT Tools SDMX Registry
Presentation transcript:

© Blackboard, Inc. All rights reserved. B2 APIs in Detail Tracy Engwirda Principal Consultant Blackboard Inc. July 19 th

Any statements in this presentation about future expectations, plans and prospects for the Company, including statements about the Company, the Building Blocks Program 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 various important factors, including: product development, and other factors discussed in our Registration Statement filed on Form S-1 with the SEC. In addition, the forward-looking statements included in this press release represent the Company’s views as of July 19, The Company anticipates that subsequent events and developments will cause the Company’s views to change. However, while the Company may elect to update these forward- looking statements at some point in the future, the Company specifically disclaims any obligation to do so. These forward-looking statements should not be relied upon as representing the Company’s views as of any date subsequent to July 19, Legal Information…

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

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…

Design Goals – High Level » Decouple persistence from data objects » XML and Database » Originally targeted for import/export » Database abstraction » Iterative functionality » Start with simple objects, mapped to the legacy schema » Managed extensibility » System extensions and deployment model

A Little History… Import/Export R6 Portal R6 Gradebook R6 Assessment Module Developer Kit Building Blocks

Building Blocks Architecture Core Services Data Objects Business Layer (JSP, Servlet, Struts) View Layer (JSP, Servlet, Tag Library) Log Security ConfigPersistence Session I18NVXI ContextPlug-ins

Road Map » Data objects and packages » What data can I see? » Persistence objects and packages » How do I get to the data? » Service objects and packages » How do I log it, authenticate it, etc.?

Data Objects blackboard.data » Object view of the schema » 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

Data Objects – BbObject » Base object for all data objects » Common attributes – Primary Key (Id), dates, etc. » “Smart” attributes » Properties stored in an internal map, instead of member variables » Smart load, dirty flag » Id attribute helps define lifecycle » Id.UNSET_ID – default id for new objects

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 » Custom content types should create and manipulate Content objects; not CourseDocument objects. » CourseDocument can be used to manipulate the base “Item” type

Data Objects – Content » ContentHandler » Ties content to URI-based “handlers” » This is really the B2 “glue” for custom content » IsFolder » Can the object contain other objects » IsLesson » Should the contents be displayed sequentially » Plus many more added in Bb 6.3

Data Object – Content

Data Objects – Course blackboard.data.course » Course and Organization » Organization overrides course for specific attributes » Course Enrolment » CourseMembership » Enumerated roles » CourseMembership.Role.INSTRUCTOR » Course Groups and Group Enrolment

Data Objects - Gradebook » blackboard.data.gradebook » LineItem » Defines the “columns” in a course gradebook » Score » Wraps the actual outcome for a given line item

Data Objects – Misc. » Announcement » Wraps, well, announcements » Can be system or course level » Calendar » Wrap entries in the calendar » Course and System level

Persistence Objects » Intended to be decoupled from data objects » Interfaces allow replaceable persistence implementations » Currently proprietary to Blackboard » BbPersistenceManager » Ties together different aspects of persistence » Loader/Persister broker » Container

Persistence Objects – Id » Used to encapsulate the unique identifier for each data object » Primary key, and more… » Data type » Container (database) » GUIDs are not used, so keys can collide

Persistence Objects – Loaders » Base interface to get at data » Roughly one-to-one correspondence to data objects » All type-specific loaders are geared towards known predicates » loadById() » loadByUserIdandType() » Performance. Ad hoc queries can kill the system… » Schema stability.

Persistence Objects – Persisters » Perform any action that manipulates data » Again, one-to-one correspondence with data objects » “Smart” update » Id object state determines insert vs. update

Accessing Persisters and Loaders » They’re interfaces, not directly instantiated by callers » BbPersistenceManager is the broker » Most have a Default object for direct access ContentDbLoader loader = ContentDbLoader.Default.getInstance()

Putting It Together Content content = new Content(); content.setTitle(); // etc... ContentDbPersister contentPersister = ContentDbPersister.Default.getInstance(); contentPersister.persist( content );

Putting It Together – v2 Content content = new Content(); content.setTitle(); // etc... // new reflection-based persistence methods content.persist();

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

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

Services – Context blackboard.platform.context » Critical entry point that all code must call » Context wraps information about current request to get the correct database connection » Interact via ContextManager.setContext() and ContextManager.releaseContext()

Services – Session blackboard.platform.session » State for the current browser-based client » Stores authentication status » Cookie-based session management » Database persistent 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

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

Services – Log blackboard.platform.log » Simple write-only log implementation » Supports configurable levels » Written before log4j and JDK 1.4

Services - Security Blackboard.platform.security » Authentication and Authorization » AccessManagerService

Package Base » Mix of utility objects » BbList – List implementation that can enforce type safety » Not really useful externally; since it implements List, and you have to cast anyway, that’s what you should use » Will probably be replaced with a generic alternative » BbEnum – base class for all type-safe enumerations » NestedRuntimeException/NestedException – pre-JDK 1.4 facility for chaining exceptions

Package Base » FormattedText – encapsulation of text data entered via standard Text boxes » Defines enumeration for Smart, Plain, and HTML text » GenericComparator – Comparator implementation that can sort based on arbitrary properties » Works with String, Boolean, Dates, and Comparable

Administrative APIs blackboard.admin.* » APIs geared towards data integration » Formerly called the “Event” APIs » Repackaged to be more consistent with B2 APIs » Compatibility layer supported » Base classes used in Snapshot

Administrative APIs » Follows IMS Data Model » Person, Course (Group), and Membership » Additional objects for Blackboard usage » Category » Data Source » Defines logically related entities that can be managed independently via Snapshot

Portal blackboard.portal.external » CustomData is all you’ll need… » getModuleData() » getModulePersonalizationData() » Store name/value » Value can be string, or binary object

Beyond APIs – UI Integration » Tag Libraries » Encapsulate re-usable UI components to capture the Blackboard look and feel » Tag Library Descriptors » Re-use within individual web applications ».tld files

Beyond APIs - Deployment » Not an API, per se » Critical aspect of extension development » XML manifest used to generate records in the database that define navigation, content brokering

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

System Extension Deployment » Standard Java-based web application » Same basic mechanism, based on Servlet specification » Additional Blackboard metadata » bb-manifest.xml » Defines “entry points”—links that can be rendered from the Blackboard UI

System Extension Deployment

System Extension Deployment <application handle="storageapp" type="course" use-ssl="false" name="B2 Storage Examples" can-allow-guest="true" small-icon="/images/bookopen_u.gif" large-icon="/images/bookopen_u.gif"> Application installed to demonstrate storage techniques

System Extension Deployment

Tying It All Together » Each JSP or servlet will require touching several different APIs 1. Set context 2. Authorize current User 3. Load content object 4. Access Gradebook data 5. Perform custom calculation 6. Log result 7. Render results (bracketed via tags) 8. Release context

Thoughts » There are a lot of classes to look at… » Focus on the type of Building Block you need to build » Take it methodically, iteratively. What’s your first goal? Second goal? » Think of combining functions » What can I do using Content with Gradebook?

Thank you » Questions?