Transcript CLICK TO ADD MAIN TITLE
My First Building Block
Presented By Tracy Engwirda 28 September, 2005
Overview
• Background • Planning – UI Integration – Which APIs • Package Structure • Manifest Structure • Security Framework • UI Taglibs • Building Blocks Manager • .. and more
Terminology
• Building Blocks Program – All development and integration with Blackboard products • Building Blocks Framework – The set of patterns and objects that allow interaction with all of Blackboard’s products • Building Blocks API – The Java and .NET interfaces • Building Blocks Manager – The management interface for Building Blocks • Building Block – An application that relies on the Building Blocks API • Blackboard Enabled – A quality assurance and testing program for Building Blocks
Terminology
• Building Block Types – Plug-in • Stand alone • Communicate only with Learning System – Bridge • Communicates with external server(s) and Learning System • Will not function without external server
Planning
• What are you project goals?
• What are the application requirements?
• How are you going to build your application?
– JSP? Servlet? Web Service?
• Where are you going to “hook” your application?
• Which APIs are you going to use?
Planning
• Where are you going to hook your application into Blackboard?
UI Entry Points
• New Course Tool • New Course Communication Tool • New Control Panel Tool • New System Admin Tool • New Portal Module • New Content Type • New User Tool
Entry Points
• Programmatic Entry Points – Specified in bb-manifest.xml
• Manual Entry Points – System Administrator created
Course Tool
Course Communication Tool
Course Control Panel
System Admin Panel
Content Type
Portal Module
User Tool
Custom Tab
• System admin can change the location of a tab to point to a Building Block
Custom Course Link
• System admin or course instructor change add a Building Block to the course navigation area
Hidden Link
• A page does not need to be in the manifest in order to be loaded.
Planning
• Which APIs are you going to use?
API Capabilities
• Building Blocks APIs – Announcement (read and write) – Calendar (read and write) – Content (read and write) – Gradebook (read and write) – Session (read and write) – File system (read and write) – *User (read) – *Course (read) – *Membership (read) – .. And Many, many more!
API Capabilities
• How to write to User/Course/Membership?
Event APIs • Event APIs use a similar data model to the Building Block APIs but has a different security model. Data object naming conventions match IMS structure of snapshot data.
API Capabilities
• Event APIs – Person (User) – Group (Course / Organization) – Membership – Catalog Category – Catalog Link – Data Source Key
Planning
• Installation
Installation
• Only system administrators can install • No restart required with Bb 6 • Must confirm Building Block permissions • Often requires configuration • Installation is through the Building Blocks Manager
Building Block Manager
• Heart of the Blackboard Platform • Controls security, permissions, and availability • Manages the “hook points” within the UI • Handles deployment
Building Block Manager
Building Blocks Manager API Wrappers & Convenience Methods Data Integrity Enforcement Blackboard Platform (LS/TS/CP) DB File System Persistence Plugin Security Session TagLib (UI)
Building Block Manager
Structure of Building Blocks
Building Block = Webapp
• A Building Block is a Java Web Application (webapp) with one extra file • The extra file is bb-manifest.xml
Directory Layout
Shared via web Hidden from web
Package Format
• A webapp is a zip file with a specific directory structure • WinZip, PkZip, Java’s Jar utility, or Ant will all create the correct package • Even though it
is
a zip file, the extension does not matter (.zip, .war, .bb will all work)
WEB-INF
• Hidden from web • Contents – web.xml
– bb-manifest.xml
– Config directory – Classes directory – Lib directory
Config Directory
• Hidden from web • Only accessible by the Building Block • Can contain anything – One option for storing your application data.
• No size limit
Custom Code and Libraries
• Classes – Stored in WEB-INF\classes • Jars – Stored in WEB-INF\lib – Automatically on classpath via custom classloader
Manifest Structure
• bb-manifest.xml
– Set of directives the developer provides • Building Blocks Configuration • Application Definitions – Content Handlers – UI Links – Portal Modules • Security Declarations • Let’s Take a Look…
bb-manifest.xml File
bb-manifest.xml File
bb-manifest.xml File
bb-manifest.xml File
bb-manifest.xml File
Security Framework
• Security must be explicitly declared in the bb-manifest.xml file.
• XML Format corresponds closely with the format for Standard Java policy files • Security will be enforced by the JVM
UI Taglibs
• XML style tags that can be placed on a jsp page.
• Blackboard supplies two sets of taglibs – bbUI for making pages fit in with the product – bbData for giving pages context and virtual installation information • Specify your own in web.xml
More information
• Building Blocks Website http://www.blackboard.com/developers/ – Building Blocks Catalog – Software Development Kit (SDK) • Blackboard Developer Network (BbDN) http://behind.blackboard.com/ – Learning System Developer License – Communities, Knowledge Base, Code Snippets, White Papers, Beta Software • Other Community Resources – Open Source User Group and BBUG forums http://www.bb-opensource.org/
Why Start from Scratch?
• Start with a sample Building Block • Reuse existing code • Customize to meet your needs
Enough of the theory!
Let’s take a look at some real code…