B2: Storage and Compatibility John Knight Blackboard, Inc.

Slides:



Advertisements
Similar presentations
RP Designs Semi-Custom e-Commerce Package. Overview RP Designs semi- custom e-commerce package is a complete website solution. Visitors can browse a catalog.
Advertisements

Implementing Tableau Server in an Enterprise Environment
1 jNIK IT tool for electronic audit papers 17th meeting of the INTOSAI Working Group on IT Audit (WGITA) SAI POLAND (the Supreme Chamber of Control)
Different Approaches to Single-Sign-On Jeff Kahn, Verbena Consulting.
Using the Self Service BMC Helpdesk
Multi-Mode Survey Management An Approach to Addressing its Challenges
HTML 5 and CSS 3, Illustrated Complete Unit L: Programming Web Pages with JavaScript.
1.  Understanding about How to Working with Server Side Scripting using PHP Framework (CodeIgniter) 2.
SOFTWARE PRESENTATION ODMS (OPEN SOURCE DOCUMENT MANAGEMENT SYSTEM)
My First Building Block Presented By Tracy Engwirda 28 September, 2005.
UNDERSTANDING JAVA APIS FOR MOBILE DEVICES v0.01.
Object-Oriented Enterprise Application Development Tomcat 3.2 Configuration Last Updated: 03/30/2001.
Wireless LAN Topology Visualiser Project Supervisor: Dr Arkady Zaslavsky Project Team Members: Jignesh Rambhia Robert Mark Bram Tejas Magia.
ASP.NET 2.0 Chapter 6 Securing the ASP.NET Application.
Understanding and Managing WebSphere V5
©2011 Quest Software, Inc. All rights reserved. Steve Walch, Senior Product Manager Blog: November, 2011 Partner Training Webcast.
© Blackboard, Inc. All rights reserved. Developing Blackboard Building Blocks: Getting Started John Knight Senior Engineer Blackboard Inc. July 18 th.
Portal and AQAS-Philadelphia University 21-22/6/2011 AVCI Platform in PU Dr. Abdel-Rahman Al-Qawasmi Philadelphia University Director of Computer Center.
© 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.
Module 3: Table Selection
Java Beans.
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
Chapter 5 Java Script And Forms JavaScript, Third Edition.
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
© Blackboard, Inc. All rights reserved. Security and Authentication Security and Authentication Tracy Engwirda Principal Consultant Blackboard Inc. July.
LexEVS 6.0 Overview Scott Bauer Mayo Clinic Rochester, Minnesota February 2011.
COMP 410 & Sky.NET May 2 nd, What is COMP 410? Forming an independent company The customer The planning Learning teamwork.
Configuring Identity Manager 2 (formerly DirXML ® ) for JDBC (w/DirXML) Jason Elsberry Software Engineer
OASIS ebXML Registry Standard Open Forum 2003 on Metadata Registries 10:30 – 11:15 January 20, 2003 Kathryn Breininger The Boeing Company Chair, OASIS.
Keys to Successful Beta Testing Presented by Ron Dinwiddie, Product Director, Blackboard Commerce Suite™ Jessica Finnefrock, Product Director, Blackboard.
Extending Vista The PowerLinks WebServices SDK John Hallett Senior Product Manager WebCT, Inc
PHP meets MySQL.
1 Accelerated Web Development Course JavaScript and Client side programming Day 2 Rich Roth On The Net
National Center for Supercomputing Applications NCSA OPIE Presentation November 2000.
© Blackboard, Inc. All rights reserved. Deploying a complex building block Andre Koehorst Learning Lab Universiteit Maastricht, the Netherlands July 18.
Adaptive Hypermedia Tutorial System Based on AHA Jing Zhai Dublin City University.
XML Registries Source: Java TM API for XML Registries Specification.
1 Schema Registries Steven Hughes, Lou Reich, Dan Crichton NASA 21 October 2015.
Webservice versioning using osgi Allard Buijze, Jettro Coenradie.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
USING XML AS A DATA SOURCE. Data binding is a process by which information in a data source is stored as an object in computer memory. In this presentation,
McGraw-Hill/Irwin © 2008 The McGraw-Hill Companies, All Rights Reserved Chapter 7 Storing Organizational Information - Databases.
2007. Software Engineering Laboratory, School of Computer Science S E Web-Harvest Web-Harvest: Open Source Web Data Extraction tool 이재정 Software Engineering.
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 and Content Types John Knight Blackboard Inc.
By Rashid Khan Lesson 6-Building a Directory Service.
© 2006 Intland Software1 Aron Gombas Architect, Intland Software Extending & customizing CodeBeamer.
Module: Software Engineering of Web Applications Chapter 2: Technologies 1.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
ICM – API Server & Forms Gary Ratcliffe.
DSpace System Architecture 11 July 2002 DSpace System Architecture.
Troubleshooting Basics for the Blackboard Transaction System™ -Windows Edition Presented By Allan Sonkin Scott Ogden April 14, 2005.
Blackboard Building Blocks™: Data Integration and Administration Raymond Peterson, Blackboard, Inc.
Hyperion Artifact Life Cycle Management Agenda  Overview  Demo  Tips & Tricks  Takeaways  Queries.
McGraw-Hill/Irwin © 2008 The McGraw-Hill Companies, All Rights Reserved Chapter 7 Storing Organizational Information - Databases.
Forms Manager. What is Forms Manager? Forms Manager is a completely new online form creation and form data management tool.
OASIS ebXML Registry Standard Open Forum 2003 on Metadata Registries 10:30 – 11:15 January 20, 2003 Kathryn Breininger The Boeing Company Chair, OASIS.
MPUG Global December 2 nd 2004 Portland, Oregon Brian Smith, Microsoft Corporation.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
CHAPTER 9 File Storage Shared Preferences SQLite.
Architecture Review 10/11/2004
Using E-Business Suite Attachments
5.8 Presentation.
Technical Topics in Privilege Management
Plug-In Architecture Pattern
Presentation transcript:

B2: Storage and Compatibility John Knight Blackboard, Inc.

And now a word from our lawyers. 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 26, 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 26, 2004.

Topics Overview Limitations Solutions –Portability –Structured data

B2 Storage Overview Building Block data types –Private data Configuration data Operational data (encryption keys, etc.) –Content data –Tool data –Extended attributes

B2 Storage Problems Private data –Data that has no relationship to Blackboard entities Custom attributes attached to Blackboard objects Reference data –References to Blackboard objects –Custom attributes referencing an external object

Private B2 Storage Stored in a directory specific to the Building Block –E.g., configuration data –Not visible to other Building Blocks –Data not related to Blackboard entities blackboard.platform.plugin.PlugInConfig

Accessing Private B2 Storage PlugInConfig pinConfig = new PlugInConfig( VID, HANDLE ); File configDir = pinConfig.getConfigDirectory(); File configFile = new File( configDir, “configuration.properties” );

Extended Data User and Course support arbitrary name/value pairs, called “registries” Package blackboard.data.registry Loader/persister entities Values are portable (i.e., moved in Content Exchange and copy) –Copy settings may affect the outcome Values are “public” – visible to other Building Blocks

Extended User Data User user = ctx.getUser(); //load user registry UserRegistryEntry entry = UserRegistryEntryDbLoader.Default.getInstance().loadByKeyAndUserId( “key”, user.getId() ); String value = entry.getValue(); entry.setValue( “value” ); //store registry value entry.persist();

Extended Course Data Course course = ctx.getCourse(); //load user registry CourseRegistryEntry entry = CourseRegistryEntryDbLoader.Default.getInstance().loadByKeyAndCourseId( “key”, course.getId() ); String value = entry.getValue(); entry.setValue( “value” ); //store registry value entry.persist();

Content Storage Centralized storage for the bulk of the data that makes up a course Organized by course, then content Database component –Single row, fixed fields –Hierarchical File system component –Private area per content item

Content Storage – B2 View No “registry” of arbitrary attributes No indexed, semi-structured storage (e.g., XML data type) File system “blindly” processed by Content Exchange, Course Copy –E.g., SCORM support is implemented as a Building Block. The manifest, etc., are stored in the Content item’s private directory. –“Attached” files also get a database record and are “rendered” by the content list page –Not all files are “attached”

Content Storage Database Record“Attached” File

Content Storage Attached files are files with ContentFile records in the database To display a “private” file, a ContentFile record is not required –Just the URL –Useful for creating data files that are referenced by client-side viewers (e.g., applets)

Content Storage – CX and Copy By storing “custom” data in the file system component, the data will get picked up by Content Exchange and Course Copy Data moved as-is, with no transformations As a rule, avoid hard-coding references –Use template variables

Template Variables Portable placeholders for referencing Blackboard object data Dynamically expand at render time, using Context information No copy/export processing required

Template Syntax The object/attribute names are taken from the Perl syntax, since that’s where the bulk of the variable expansion originally occurred.

Referencing an Uploaded File For example: – Expands to: –

Must Have Templates content.url – expands to private directory for a particular content item course.url – expands to root course directory user.user_id – expands to the login name for the current user course.course_id – expands to the unique, string identifier for the current course

Template Expansion Or expanded programmatically… BbSession sess = BbServiceManager.getSessionManager().getSession( request ); String encoded = sess.encodeTemplateUrl( request, ); Can be expanded at render time…

Tool Storage No pre-defined storage location –Ad hoc; no central “repository” –Custom per-tool Some db storage, some file storage Example: Discussion Board Without B2 database extensibility mechanism, nowhere to put tool data Custom storage required

Storage Options Property files XML Data Third party storage engines

Property Files Easy to read; easy to write –Built into the Java platform –User editable as a fallback Drawbacks –Name/value pairs can be limiting –I18N limitations (hard-coded ISO )

Property Files FileInputStream fis = new FileInputStream( “block.properties” ); Properties props = new Properties(); props.load( fis ); String param = props.get(“plugin.param.show-trace” ); #a property plugin.param.show-trace=true Property File: Consumer Code:

XML Files Reasonably Complex Structure Available libraries Additional complexity –JAXB? –W3 DOM? –SAX? –DOM4J?

Third Party Storage Engines Arbitrary capabilities and flexibility Some very easy to use Some, not so much Possible gotchas (system permissions, etc.)

Third Party Storage Examples Sleepycat Software Berkeley DB Java Edition –Works in web application –Requires file system access Lucene –Text indexing –Unstructured data

Berkeley DB Example Java implementation of Berkeley DB Name/value pairs, but with primary and secondary indexes –Create reasonably complex data structures File-based storage –When written into B2 private storage, no custom permissions required

Berkeley DB Example //create environment on first access EnvironmentConfig envConfig.setAllowCreate( true ); Environment environment = new Environment( plugInConfig.getConfigDirectory(), envConfig ); //create database on first access DatabaseConfig dbConfig.setAllowCreate( true ); //we want multiple values for each record dbConfig.setAllowDuplicates( true ); Database db = environment.openDatabase( null, dbId, _dbConfig );

Berkeley DB Example User user = ctx.getUser(); DatabaseEntry keyEntry = new DatabaseEntry( user.getUserName().getBytes() ); DatabaseEntry valEntry = new DatabaseEntry(); //create new record valEntry.setData( value.getBytes() ); db.put( null, keyEntry, valEntry );

Outstanding Storage Issues Data reconciliation on copy/move –Updating an embedded Id –Updating external references No hooks for integration yet –Course Copy hooks—reference updates –Content Exchange hooks—transformations to and from packaged data

Migration For most plugins, not an issue Subset of R5 to R6 data is migrated (content only) Building Blocks required substantial modifications anyway

Course Copy Processes registry entries –Course –User Copies all content files, regardless of whether they’re registered as “attachments” Identical rules in Content Exchange

Looking Ahead Course Copy integration –Post-processing handlers (See System Admin  Logs  System Tasks Status) –Coarse-grained notification of a course copy event Content Exchange integration –Transform data dynamically during the packaging/unpackaging operation

Common Practice Per-User data, attach via the Registry Keep private data private –B2 data, store in private file store –Encrypt sensitive registry values (e.g., external system password), keep the key in B2 file store

Common Practice Tool data –Use a storage engine for complex data structures –Existing, external databases can be used Requires careful investigation of security issues Difficult to implement in a portable way Content data –Use portable references where possible General –Store “reference” data for sanity checks, e.g., store the original course id with a record. You can check the current course to know if the data has been copied, etc., and take appropriate action

Conclusion Know the limitations Understand where and how data can be read and stored (not just by your code) There are good solutions that work within the (current) confines of the system –Better ones to come!

Thank You Demos to Follow >