SlideShare a Scribd company logo
1 of 97
Sakai Architecture and Roadmap Charles Severance Sakai Markitecht [email_address] KYOU / sakai Boundary, Situation
It takes a village to  build a CLE…. Photo blog: www.dr-chuck.com sh
Outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sakai Goals ,[object Object],[object Object],[object Object],[object Object]
Sakai Goals ,[object Object],[object Object],[object Object],[object Object],[object Object]
Relationship to Other Efforts Sakai: A Profile + Implementation uPortal OKI IEEE Tomcat JSF IMS Sakai is a consumer of standards, and technologies to be assembled into an implementation and a profile with some Sakai-specific value add in certain areas.  As we work through development issues, we may identify new ideas/problems/extensions that we will suggest back to these groups by participating in those groups as a participant.  Even though uPortal and OKI have received funding as part of the Sakai project it does not change the basic relationship between the projects.
Sakai Roadmap
SAKAI Picture Jan 04 July 04 May 05 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Primary SAKAI Activity Architecting for JSR-168 Portlets, Refactoring “best of” features for tools Conforming tools to Tool Portability Profile Primary SAKAI Activity Refining SAKAI Framework, Tuning and conforming additional tools Intensive community building/training Activity : Ongoing implementation work at local institution… Dec 05 Activity :  Maintenance & Transition from a project to  a community "Best of" Refactoring
Sakai 2.0 Calendar Chat Assessment Standards Architecture Respec Requirements and Features Flow Rethink Rebuild IU/OnCourse Calendar Chat Assessment Standards Architecture Sakai 1.0 Calendar Chat Assessment Standards Architecture UM/CHEF Calendar Chat Assessment Standards Architecture MIT/Stellar Calendar Chat Assessment Standards Architecture Stanford/CourseWork Calendar Chat Assessment Standards Architecture
Organizational Flow (1.0) Requirements (Rob) Architecture/Developer (Glenn) Chuck Chuck SEPP (Jim/Mark) Chuck
Sakai 1.0 Contents (07/04) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Release 1.0 In a Nutshell ,[object Object],[object Object],[object Object],[object Object]
Overall Flow (2.0) Requirements Team (Rob) Framework, Integration and  Release Team (Glenn) Architecture/ Project Management Team (Chuck/Mark) Developer Teams Local Production Teams
Sakai 2.0 (2Q05) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sakai Architecture
The Sakai Tool Portability Profile Framework Sakai Tool OKI 2.0 impls Sakai API Implementations OKI Plug-In Sakai API OKI API Sakai  Data Sakai GUI Widgets JSF Rendering Environment The Sakai API is based heavily on the OKI API but focused on the portability and interoperability of Sakai tools.  The Sakai API should be though of as value add on top of the OKI APIs.  The Sakai APIs encode what OKI would call “out-of-band” agreements explicitly into method calls, parameters and return values.
Sakai Application Programming Interfaces (APIs) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Sakai and OKI ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Sakai API rules (draft) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
package org.sakaiproject.service.common.agent; import org.sakaiproject.service.common.shared.Resource; public interface Agent extends Resource { } package org.osid.shared; public interface Agent extends java.io.Serializable { public String getDisplayName()  throws osid.shared.SharedException; public osid.shared.Id getId()  throws osid.shared.SharedException; public osid.shared.Type getType()  throws osid.shared.SharedException; PropertiesIterator getProperties()  throws osid.shared.SharedException; Properties getPropertiesByType(Type propertiesType) throws osid.shared.SharedException; TypeIterator getPropertiesTypes()  throws osid.shared.SharedException; }
package org.sakaiproject.service.common.shared; import org.sakaiproject.exception.PermissionException; import org.sakaiproject.exception.VersionException; import org.sakaiproject.service.common.id.Id; public interface Resource extends Comparable { String getDescription(); String getDisplayName(); Id getId(); Type getType(); PropertiesIterator getProperties(); Properties getPropertiesByType(Type propertiesType); TypeIterator getPropertyTypes(); // Sakai additional Methods void setDescription(String description); void setDisplayName(String displayName); void setType(Type type); String getReference(); String getUrl(); boolean allowDelete(); boolean allowUpdate(); Properties addPropertiesType(Type propertiesType); void removePropertiesType(Type propertiesType); void delete() throws PermissionException; Version getVersion(); boolean isCurrentVersion(); boolean isCurrentVersion(Version version); void update() throws VersionException, PermissionException; void updateIgnoreVersion() throws PermissionException; }
The Sakai Layered Architecture uPortal JavaServer Faces Sakai Tools Sakai Services OKI Tools Legacy Tools Legacy Services OKI Plug-ins Sakai Data Legacy Data OKI Info JetSpeed Varies
The Sakai Framework OKI TOOL Sakai Tool OKI 2.0 impls Sakai API Impls OKI Plug-In Sakai API OKI API OKI 2.0 impls OKI API Sakai Legacy Impls Leg API Legacy Tool OKI Info migration Sakai  Data Legacy Data
Simple Deployment Tool Sakai API Impls Sakai API Sakai  Data In a simple deployment, the Sakai system may just use the Sakai provided API implementations and point it at a database connection, let Sakai build the tables - and off we go.
Basic Local Customization Tool Local OKI Impl Sakai API Impls OKI Plug-In Sakai API OKI API Sakai  Data In the most common situation, local sites will want to customize a few things - perhaps AUTHN, AUTHZ, a few DR’s.  Sites will write/procure/configure OKI implementations which plug into the Sakai implementations.  The Sakai implementations are configured to “federate” between data from the plug-in and the Sakai data as desired by the site.
Drastic Local Customization Tool Sakai API Impls Sakai API PeopleSoft At some level, it would be possible to completely re-implement the entire Sakai API for the particular component (i.e. grading).  Because the Sakai APIs have no “out-of-band” agreements, the tools cannot perceive that the implementation has been changes.
Concepts and Terminology
Sakai Technology ,[object Object],[object Object],[object Object],[object Object],[object Object]
Specific TPP Elements ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JSF Mini Tutorial ,[object Object],[object Object],[object Object],<sakai:tool_bar> <sakai:tool_bar_item action=&quot;#{AnnouncementTool.processActionListNew}&quot; value=&quot;#{msgs.annc_list_new}&quot; /> <sakai:tool_bar_item action=&quot;#{AnnouncementTool.processActionListDelete}&quot; value=&quot;#{msgs.annc_list_delete}&quot; /> …
JSF is Used to Describe the UI <sakai:view_container title=&quot;#{msgs.sample_title}&quot;> <sakai:tool_bar>  <sakai:tool_bar_item/>  </sakai:tool_bar> <sakai:instruction_message value=&quot;#{msgs.sample_one_instructions}&quot; /> <sakai:group_box  title=&quot;#{msgs.sample_one_groupbox}&quot;> <h:inputText  value=&quot;#{MyTool.userName}&quot; /> <sakai:date_input  value=&quot;#{MyTool.date}&quot; /> <sakai:button_bar> <sakai:button_bar_item action=&quot;#{MyTool.processActionDoIt} value=&quot;#{msgs.sample_one_cmd_go}&quot; /> </sakai:button_bar>
Model View Controller Mini Tutorial ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MVC Mini Tutorial ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],View Controller Domain Model Model Model Model Model
Inversion of Control Mini Tutorial ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],http://www.martinfowler.com/articles/injection.html
Service Locator ,[object Object],[object Object],[object Object],class MovieLister...  MovieFinder finder =  (MovieFinder) ServiceLocator.getService(&quot;MovieFinder&quot;);
Interface Injection ,[object Object],[object Object]
Setter Injection (Sakai preferred) ,[object Object],[object Object],[object Object],[object Object]
Constructor Injection ,[object Object],[object Object],[object Object],[object Object],[object Object]
IoC Summary ,[object Object],[object Object],[object Object],[object Object],[object Object]
Sakai Tools
The Sakai User Interface Process Sakai Tool FacesServlet Faces-config.xml Sakai GUI Elements Faces Renderer uPortal JSF Page Client
All the components… On one slide :) JSF Servlet Render Portlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Sakai framework wakes up, reads a bunch-o-files and  initializes components JSF Servlet Render JSR-168 Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Sakai then pokes config data and auto-wires service implementations into beans JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Action runs, accesses services through config beans, sets view beans, selects layout mode. JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
JSF Render takes layout, and renders the the view pulling info from the view beans… JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSF consults the layout for the particular view beans to look at for their data. JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Then we wait…  It is quiet…  Too quiet.. And then  the user pushes a button. JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Oops..  The user entered invalid data - JSF scolds them and gives them another chance… JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action Merde! Validity checking is optional and bypassable for on an action by action basis. JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Le User enters valid information, JSF sets the View Beans and calls the requested action… JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSF consults the layout for the name of the action method to call! JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Action runs, accesses services through config beans, sets view beans, selects layout (again)… JSF Servlet Render Portlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
Sakai and uPortal
uPortal Portlet Roadmap ,[object Object],[object Object],[object Object],[object Object],[object Object],uPortal 3.0 Framework uPortal 2.3 Pluto Pluto Adapter Framework Adapter Feb 19, 2004 SAKAI Developer’s Workshop, Stanford University Portlet Portlet Portlet Portlet Chan Chan Portlet Portlet Chan Chan Chan Chan
Portal => Application Framework ,[object Object],[object Object],[object Object]
Sakai 1.0 and uPortal ,[object Object],[object Object]
Sakai 1.0: Embedded Version (uPortal 2.3) Home Athletics Sakai CS101 EE499 EE499-Sec01 Chess Motor Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Watch me now mary! Send Play Help FAQ Meeting Single Channel Admin
Sakai 1.0: Injected Version (uPortal 2.3) EE499 EE499-s01 Home CS101 Chess Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Watch me now mary! Send Play Help FAQ Meeting Admin EE499 EE499-s01 Home CS101 Chess Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Watch me now mary! Send Play Help FAQ Meeting Admin
Sakai 2.0 and uPortal ,[object Object],[object Object]
The Hierarchy Challenge Sakai Help EE499 Chess Motor CS101 Folders FAQ Chat Play Game Chat Chat Folders Sec01 Sec02 Chat Folders Chat Folders Access Control List Access Control List Access Control List Access Control List Portlets/Channels need to know “where” they fit for inherited access control and to know the “context” in which they operate - “I am the Chat for CS101”. There are fragment administration issues. This is not specified in the JSR-168 spec.  SuperChannel and Sakai Embedded are solutions which hide the hierarchy from the portal - but this is less than ideal because it would be nice to drop a context-sensitive “chat” tool anywhere in the portal.
Sakai 2.0: Integrated Events MyPage Athletics Courses + CS101 + EE499 + Main -  Sec01 Help Chat FAQ Meeting + Sec02 + Chess + Motor Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Joe: What if he pulls his goalie? Watch me now mary! Send Events MyPage Athletics Courses Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Joe: What if he pulls his goalie? Watch me now mary! Send EE499 -> Sec01 New Course New Section Chat Help FAQ Meeting Admin
Locking and Persistence in Sakai
The Case for Optimistic Locking ,[object Object],[object Object],[object Object],[object Object],[object Object],Note: This is still an active discussion topic
The Case For Locking ,[object Object],[object Object],[object Object],[object Object],[object Object]
The Scenario Score: 60 Instructor wants to add 5 points Screen Assistant wants to add 10 points Screen Score: 70 Score: ?? What happens here - what value ends up in the database? Time -> What does the GUI look like here? Is the assistant blocked?  Is the assistant notified in any way? Is there some feedback or notification that happens here? 60 Update 60 Update 70 Update 65 Update
What happens - Update Points ,[object Object],[object Object],[object Object]
No Lock Score: 60 Instructor wants to add 5 points Screen Assistant wants to add 10 points Screen Score: 70 Score: 65 Oops - Assistant's changes lost forever Time -> 60 Update 60 Update 70 Update 65 Update
Problems with “No locking” ,[object Object],[object Object],[object Object],[object Object]
Pessimistic Score: 60 Instructor wants to add 5 points Screen Assistant wants to add 10 points Screen N/A Retry Score 65 Time -> Locked Once it is locked, it is not available. Score 65 Unlocked Score 65 Locked 60 Update N/A Retry 65 Update 75 Update 65 Update
Problems with Pessimistic Locking ,[object Object],[object Object],[object Object],[object Object],[object Object]
Optimistic Instructor wants to add 5 points Screen Session Assistant wants to add 10 points Screen Session 1 / 60 1 / 60 1 / 70 1 / 65 2 / 70 70 Update 2 / 75 Session and database versions match (both are version 1) so record is updated. Bad-version error sent to application Application decides how to handle error New information displayed to user  with notification that something has changed during editing. Session and database versions now match Time -> Version: 1 Score: 60 60 Update 60 Update 70 Update Version: 2 Score: 70 65 Update Version: 2 Score: 70 75 Update Version: 3 Score: 75
Advantages of Optimistic Locking ,[object Object],[object Object],[object Object],[object Object]
Low-level DB Details ,[object Object],[object Object],[object Object],[object Object],update tPerson  set eMail =  [email_address] , dVersion = DATE_NOW where iPersonKey = 12345 and  dVersion = Date(‘01/01/2004 14:45.0645’)
API Impacts of Optimistic Locking Option 1: Agent a = retrieveByName(“Joe”); String d = a.getDisplayName(); Retain reference to a (may not  be serializable) Put up screen to modify display name a.setDisplayName(newName); // Update, ignoring version a.updateWriteThrough(); // Update checking version try { a.update(); }  catch (out-of-date) { … } Option 2: Agent a = retrieveByName(“Joe”); String d = a.getDisplayName(); Version v = a.getVersion(); Retain reference to v (Version is  Serializable) Put up screen to modify display name // Re-retrieve Agent a = retrieveByName(“Joe”); a.setDisplayName(newName); // Update checking version try { a.update(v); }  catch (out-of-date) { … }
API Details // New Methods in Agent public interface Agent  { Version getVersion(); // Update, using the current  // version in this object void update() throws general-failure, out-of-date; // Update, using the specified  // version to check against // the database version void update(Version vers) throws general-failure, out-of-date; // Update ignoring the internal // and database version void updateWriteThrough() throws general-failure; } // Note Version is Serializable
Looking at the Beta
Beta Release - 6/21/2004 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Beta Screen Shot
Sakai Beta Tools Admin: Alias Editor (chef.aliases)  Admin: Archive Tool (chef.archive)  Admin: Memory / Cache Tool  (chef.memory)  Admin: On-Line (chef.presence)  Admin: Realms Editor (chef.realms)  Admin: Sites Editor (chef.sites)  Admin: User Editor (chef.users) Announcements (chef.announcements)  Assignments (chef.assignment)  C. R. U. D. (sakai.crud)  Chat Room (chef.chat)  Discussion (chef.discussion)  Discussion (chef.threadeddiscussion)  Dissertation Checklist (chef.dissertation)  Dissertation Upload  (chef.dissertation.upload)  Drop Box (chef.dropbox) Email Archive (chef.mailbox) Help (chef.contactSupport) Membership (chef.membership)  Message Of The Day (chef.motd)  My Profile Editor (chef.singleuser)  News (chef.news)  Preferences (chef.noti.prefs)  Recent Announcements  (chef.synoptic.announcement)  Recent Chat Messages (chef.synoptic.chat)  Recent Discussion Items  (chef.synoptic.discussion)  Resources (chef.resources)  Sample (sakai.module)  Schedule (chef.schedule)  Site Browser (chef.sitebrowser)  Site Info (chef.siteinfo)  Web Content (chef.iframe)  Worksite Setup (chef.sitesetup)  WebDAV
The Sakai Framework OKI TOOL Sakai Tool OKI 2.0 impls Sakai API Impls OKI Plug-In Sakai API OKI API OKI 2.0 impls OKI API Sakai Legacy Impls Leg API Legacy Tool OKI Info migration Sakai  Data Legacy Data
What’s There in Beta ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Release 1.0 (7/15) ,[object Object],[object Object]
AUTHZ OSID MIT Roles DB Sakai AUTHZ Implementation OKI Plug-In OKI API Sakai  Data Sakai Tool Sakai API OSID MIT Registrar OKI Plug-In OKI API “ Can the current user  delete file xyz?” Users and Groups implementation from Columbia/ uPortal Existing AUTHZ implementations
Work Plan Once 1.0 is Released
Adopter/Developer To Do List ,[object Object],[object Object],[object Object],[object Object]
Building Your Tool in 1.0 Your Tool Sakai  AUTHN Sakai Legacy Sakai  AUTHZ Sakai API  From CVS Your SAKAI API Impl Your New Sakai API Sakai GUI Widgets JSF Rendering Environment Because the Sakai API is neither fully specified nor fully implemented in 1.0 to develop with 1.0 requires some flexibility.  Legacy APIs may fill some of the gaps in the short term - but we do not want tools talking to legacy APIs.
Other Activities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Core Team High Priorities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Project Culture ,[object Object],[object Object],[object Object],[object Object],[object Object]
Advanced Sakai
Sakai Framework Possibilities ,[object Object],[object Object],[object Object],[object Object],[object Object]
Plan A - Clusters of JVM’s JSF implementations from SUN.  Linux JVM Tomcat (many webapps) Framework … JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Framework Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Framework Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Framework
What if SUN provided a SWING JSF Render capability and we hand-build desktop versions of services or hand-build stubs which used ROMI or Web Services?  Linux or Windows JVM JSF Swing Service Service Stub Stub Desktop Framework Registry Tool Action JSF JSF JSF Tool Action JSF JSF JSF Tool Action JSF JSF JSF Linux JVM Service Linux JVM Service
Web Services and  Cross Language  Proof of Concept  Linux JVM Tomcat JSF Contianer Session Framework WS Contianer Apache PHP Script Launch preserving  session/identity // Motorola v300:  20-06-04_0827.jpg // Treo 600 Variant 1: Picture006_19Jun04.jpg // Treo 600 MMS: image000.jpg // In the short term, we parse the string and see if it  // we fake the valid motorola $parts = split(&quot;[-_]&quot;, $imagename); echo &quot;Part count:&quot; . count($parts) . &quot;&quot;; print_r($parts); if ( count($parts) == 4 && strlen($parts[0]) == 2 && strlen($parts[2]) == 2 && strlen($parts[3]) >= 8 ) { echo &quot;Motorola v300 format file:&quot; . $imagename . &quot;&quot;; $month = $parts[1]; $year = &quot;20&quot; . $parts[2]; } else { $month = date(&quot;m&quot;); $year = date(&quot;Y&quot;); $imagename = date(&quot;d-m-y_Hi&quot;) . sprintf(&quot;%03d&quot;,$i) .&quot;; } AUTHZ ,[object Object],[object Object],[object Object],[object Object],Tool Action JSP JSP JSP
What if we built a version of the framework that examined an interface using reflection and dynamically built a proxy, generated WSDL, and just made web service happen pretty much transparently other than declaring where services were to run in configuration… Hopefully there will be a mechanism for secure web services, or perhaps we could simply use two-way SSL certificate exchange to force transport security…  Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Stub Stub Framework with Web Services Linux JVM Axis Service Axis Framework … Windows .NET Service .NET Framework Tool Action JSP JSP JSP Tool Action JSP JSP JSP
What if the frameworks were highly coordinated and in addition to dynamically generating stubs and placing web services, provided standardized mechanism for moving identity securely across web services, and the frameworks could perform dependency injection automatically when one service had a dependency on a service running on another server… Hmmm.  Sounds like the Grid.  Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet DR Stub AUTHZ Service Sakai Grid Framework Linux JVM Axis DR Service Sakai Grid Framework AUTHZ Stub Tool Action JSP JSP JSP Tool Action JSP JSP JSP
Why wait for web services? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Why start on web services? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Summary ,[object Object],[object Object],[object Object],[object Object],“don’t fear the requirements…”

More Related Content

What's hot

Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Nik Patel
 
OOW09 Integration Architecture EBS R12
OOW09 Integration Architecture  EBS R12OOW09 Integration Architecture  EBS R12
OOW09 Integration Architecture EBS R12
jucaab
 
SharePoint Online App Model Guidance
SharePoint Online App Model GuidanceSharePoint Online App Model Guidance
SharePoint Online App Model Guidance
Ryan Berg
 
SharePoint Online App Model Guidance
SharePoint Online App Model GuidanceSharePoint Online App Model Guidance
SharePoint Online App Model Guidance
Ryan Berg
 
Api presentation update
Api presentation updateApi presentation update
Api presentation update
greti79
 

What's hot (19)

2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
 
Sakai 2.9 Portal Road Map Plans
Sakai 2.9 Portal Road Map PlansSakai 2.9 Portal Road Map Plans
Sakai 2.9 Portal Road Map Plans
 
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
 
The SharePoint 2013 App Model
The SharePoint 2013 App ModelThe SharePoint 2013 App Model
The SharePoint 2013 App Model
 
Oracle process-automation-with-rpa
Oracle process-automation-with-rpaOracle process-automation-with-rpa
Oracle process-automation-with-rpa
 
Introduction to the new SharePoint 2013 App Model
Introduction to the new SharePoint 2013 App ModelIntroduction to the new SharePoint 2013 App Model
Introduction to the new SharePoint 2013 App Model
 
OOW09 Integration Architecture EBS R12
OOW09 Integration Architecture  EBS R12OOW09 Integration Architecture  EBS R12
OOW09 Integration Architecture EBS R12
 
Oracle Application Express
Oracle Application ExpressOracle Application Express
Oracle Application Express
 
Introducing the new SharePoint 2013 app model
Introducing the new SharePoint 2013 app modelIntroducing the new SharePoint 2013 app model
Introducing the new SharePoint 2013 app model
 
Migrating Oracle Forms Using Oracle Application Express
Migrating Oracle Forms Using Oracle Application ExpressMigrating Oracle Forms Using Oracle Application Express
Migrating Oracle Forms Using Oracle Application Express
 
Extend soa with api management Sangam18
Extend soa with api management Sangam18Extend soa with api management Sangam18
Extend soa with api management Sangam18
 
SharePoint Online App Model Guidance
SharePoint Online App Model GuidanceSharePoint Online App Model Guidance
SharePoint Online App Model Guidance
 
Dynamic Actions, the Hard Parts
Dynamic Actions, the Hard PartsDynamic Actions, the Hard Parts
Dynamic Actions, the Hard Parts
 
SharePoint Online App Model Guidance
SharePoint Online App Model GuidanceSharePoint Online App Model Guidance
SharePoint Online App Model Guidance
 
oracle ebs free web service integration tools
oracle ebs free web service integration toolsoracle ebs free web service integration tools
oracle ebs free web service integration tools
 
Apex 42-new-features-1867076
Apex 42-new-features-1867076Apex 42-new-features-1867076
Apex 42-new-features-1867076
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator Overview
 
Api presentation update
Api presentation updateApi presentation update
Api presentation update
 
Apex 4.0 @ ODTUG 2009
Apex 4.0 @ ODTUG 2009Apex 4.0 @ ODTUG 2009
Apex 4.0 @ ODTUG 2009
 

Viewers also liked (7)

IMS Basic Learning Tools Interoperability
IMS Basic Learning Tools InteroperabilityIMS Basic Learning Tools Interoperability
IMS Basic Learning Tools Interoperability
 
A Simple Lecture Recording Setup
A Simple Lecture Recording SetupA Simple Lecture Recording Setup
A Simple Lecture Recording Setup
 
Massively Open Online Courses, Experiences, Observations, and Trends
Massively Open Online Courses, Experiences, Observations, and TrendsMassively Open Online Courses, Experiences, Observations, and Trends
Massively Open Online Courses, Experiences, Observations, and Trends
 
10 steps to a Successful iPad Implementation in Schools
10 steps to a Successful iPad Implementation in Schools10 steps to a Successful iPad Implementation in Schools
10 steps to a Successful iPad Implementation in Schools
 
The University as a Cloud: Openness in Education
The University as a Cloud: Openness in EducationThe University as a Cloud: Openness in Education
The University as a Cloud: Openness in Education
 
Massively Open Online Courses (MOOCs)
Massively Open Online Courses (MOOCs)Massively Open Online Courses (MOOCs)
Massively Open Online Courses (MOOCs)
 
Beyond MOOCs: Open Education at Scale
Beyond MOOCs: Open Education at ScaleBeyond MOOCs: Open Education at Scale
Beyond MOOCs: Open Education at Scale
 

Similar to Sakai Overview 06-2004

Oracle AEI at Sakai Atlanta Conference, December 2006
Oracle AEI at Sakai Atlanta Conference, December 2006Oracle AEI at Sakai Atlanta Conference, December 2006
Oracle AEI at Sakai Atlanta Conference, December 2006
Michael Feldstein
 
sopac : connecting koha and drupal
sopac : connecting koha and drupalsopac : connecting koha and drupal
sopac : connecting koha and drupal
Nicolas Morin
 
Sakai Technical Chinese
Sakai Technical ChineseSakai Technical Chinese
Sakai Technical Chinese
jiali zhang
 
Sakai Technical (Chinese)
Sakai Technical (Chinese)Sakai Technical (Chinese)
Sakai Technical (Chinese)
jiali zhang
 

Similar to Sakai Overview 06-2004 (20)

Open Social Frameworks
Open Social FrameworksOpen Social Frameworks
Open Social Frameworks
 
API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
Oracle AEI at Sakai Atlanta Conference, December 2006
Oracle AEI at Sakai Atlanta Conference, December 2006Oracle AEI at Sakai Atlanta Conference, December 2006
Oracle AEI at Sakai Atlanta Conference, December 2006
 
sopac : connecting koha and drupal
sopac : connecting koha and drupalsopac : connecting koha and drupal
sopac : connecting koha and drupal
 
London Oracle Developer Meetup April 18
London Oracle Developer Meetup April 18London Oracle Developer Meetup April 18
London Oracle Developer Meetup April 18
 
Session 5 - SOPAC: Further Separateing Front Office and Back Office Application
Session 5 - SOPAC: Further Separateing Front Office and Back Office ApplicationSession 5 - SOPAC: Further Separateing Front Office and Back Office Application
Session 5 - SOPAC: Further Separateing Front Office and Back Office Application
 
Ja Sakai 09 V01
Ja Sakai 09 V01Ja Sakai 09 V01
Ja Sakai 09 V01
 
OracleDeveloperMeetup - London 19-12-17
OracleDeveloperMeetup - London 19-12-17OracleDeveloperMeetup - London 19-12-17
OracleDeveloperMeetup - London 19-12-17
 
Sakai 3 Boston
Sakai 3 BostonSakai 3 Boston
Sakai 3 Boston
 
Sakai 3 Boston V03
Sakai 3 Boston V03Sakai 3 Boston V03
Sakai 3 Boston V03
 
API Design – More than just a Payload Definition
API Design – More than just a Payload DefinitionAPI Design – More than just a Payload Definition
API Design – More than just a Payload Definition
 
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons LearntOracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
 
Service virtualization with npm modules updated
Service virtualization with npm modules updatedService virtualization with npm modules updated
Service virtualization with npm modules updated
 
Edu0442
Edu0442Edu0442
Edu0442
 
Sakai uPortal Integration Options
Sakai uPortal Integration OptionsSakai uPortal Integration Options
Sakai uPortal Integration Options
 
yii framework
yii frameworkyii framework
yii framework
 
Sakai Technical Chinese
Sakai Technical ChineseSakai Technical Chinese
Sakai Technical Chinese
 
Sakai Technical (Chinese)
Sakai Technical (Chinese)Sakai Technical (Chinese)
Sakai Technical (Chinese)
 
Sakai Technical
Sakai TechnicalSakai Technical
Sakai Technical
 

More from Charles Severance

More from Charles Severance (20)

LTI Advantage: The Next Big Thing in LMS Integration
LTI Advantage: The Next Big Thing in LMS IntegrationLTI Advantage: The Next Big Thing in LMS Integration
LTI Advantage: The Next Big Thing in LMS Integration
 
Hierarchy requirements
Hierarchy requirements Hierarchy requirements
Hierarchy requirements
 
Sakai Hierarchy Framework Changes Overview (not implemented)
Sakai Hierarchy  Framework Changes Overview (not implemented)Sakai Hierarchy  Framework Changes Overview (not implemented)
Sakai Hierarchy Framework Changes Overview (not implemented)
 
Building the NGDLE with Tsugi (次) and Koseu(코스)
Building the NGDLE with Tsugi (次) and Koseu(코스)Building the NGDLE with Tsugi (次) and Koseu(코스)
Building the NGDLE with Tsugi (次) and Koseu(코스)
 
Exploring the Next Generation Digital Learning Ecosystem
Exploring the Next Generation Digital Learning EcosystemExploring the Next Generation Digital Learning Ecosystem
Exploring the Next Generation Digital Learning Ecosystem
 
Exploring the Next Generation Digital Learning Environment with Tsugi
Exploring the Next Generation Digital Learning Environment with TsugiExploring the Next Generation Digital Learning Environment with Tsugi
Exploring the Next Generation Digital Learning Environment with Tsugi
 
Building the Next Generation Teaching and Learning Environment with Tsugi (次)
Building the Next Generation Teaching and Learning Environment with Tsugi (次)Building the Next Generation Teaching and Learning Environment with Tsugi (次)
Building the Next Generation Teaching and Learning Environment with Tsugi (次)
 
Building the Next Generation Teaching and Learning Environment
Building the Next Generation Teaching and Learning EnvironmentBuilding the Next Generation Teaching and Learning Environment
Building the Next Generation Teaching and Learning Environment
 
CloudSocial: A New Approach to Enabling Open Content for Broad Reuse
CloudSocial: A New Approach to Enabling Open Content for Broad ReuseCloudSocial: A New Approach to Enabling Open Content for Broad Reuse
CloudSocial: A New Approach to Enabling Open Content for Broad Reuse
 
Next Generation Teaching and Learning
Next Generation Teaching and LearningNext Generation Teaching and Learning
Next Generation Teaching and Learning
 
Next Generation Teaching and Learning
Next Generation Teaching and LearningNext Generation Teaching and Learning
Next Generation Teaching and Learning
 
The Game of MOOCs
The Game of MOOCsThe Game of MOOCs
The Game of MOOCs
 
A View on the Future of Sakai
A View on the Future of SakaiA View on the Future of Sakai
A View on the Future of Sakai
 
The Next Generation of Teaching and Learning Tools
The Next Generation of Teaching and Learning ToolsThe Next Generation of Teaching and Learning Tools
The Next Generation of Teaching and Learning Tools
 
Standards to Enable an Open Learning Ecosystem
Standards to Enable an Open Learning EcosystemStandards to Enable an Open Learning Ecosystem
Standards to Enable an Open Learning Ecosystem
 
Updated Version: Tsugi Overview
Updated Version: Tsugi OverviewUpdated Version: Tsugi Overview
Updated Version: Tsugi Overview
 
Standards Update: Apereo 2015
Standards Update: Apereo 2015Standards Update: Apereo 2015
Standards Update: Apereo 2015
 
Apereo 2015: The State of Sakai
Apereo 2015: The State of SakaiApereo 2015: The State of Sakai
Apereo 2015: The State of Sakai
 
The Trials and Tribulations of Predicting the Future of Educational Technology
The Trials and Tribulations of Predicting the Future of Educational TechnologyThe Trials and Tribulations of Predicting the Future of Educational Technology
The Trials and Tribulations of Predicting the Future of Educational Technology
 
MOOCs – The Future Is Getting Clearer
MOOCs – The Future Is Getting ClearerMOOCs – The Future Is Getting Clearer
MOOCs – The Future Is Getting Clearer
 

Sakai Overview 06-2004

  • 1. Sakai Architecture and Roadmap Charles Severance Sakai Markitecht [email_address] KYOU / sakai Boundary, Situation
  • 2. It takes a village to build a CLE…. Photo blog: www.dr-chuck.com sh
  • 3.
  • 4.
  • 5.
  • 6. Relationship to Other Efforts Sakai: A Profile + Implementation uPortal OKI IEEE Tomcat JSF IMS Sakai is a consumer of standards, and technologies to be assembled into an implementation and a profile with some Sakai-specific value add in certain areas. As we work through development issues, we may identify new ideas/problems/extensions that we will suggest back to these groups by participating in those groups as a participant. Even though uPortal and OKI have received funding as part of the Sakai project it does not change the basic relationship between the projects.
  • 8.
  • 9. Sakai 2.0 Calendar Chat Assessment Standards Architecture Respec Requirements and Features Flow Rethink Rebuild IU/OnCourse Calendar Chat Assessment Standards Architecture Sakai 1.0 Calendar Chat Assessment Standards Architecture UM/CHEF Calendar Chat Assessment Standards Architecture MIT/Stellar Calendar Chat Assessment Standards Architecture Stanford/CourseWork Calendar Chat Assessment Standards Architecture
  • 10. Organizational Flow (1.0) Requirements (Rob) Architecture/Developer (Glenn) Chuck Chuck SEPP (Jim/Mark) Chuck
  • 11.
  • 12.
  • 13. Overall Flow (2.0) Requirements Team (Rob) Framework, Integration and Release Team (Glenn) Architecture/ Project Management Team (Chuck/Mark) Developer Teams Local Production Teams
  • 14.
  • 16. The Sakai Tool Portability Profile Framework Sakai Tool OKI 2.0 impls Sakai API Implementations OKI Plug-In Sakai API OKI API Sakai Data Sakai GUI Widgets JSF Rendering Environment The Sakai API is based heavily on the OKI API but focused on the portability and interoperability of Sakai tools. The Sakai API should be though of as value add on top of the OKI APIs. The Sakai APIs encode what OKI would call “out-of-band” agreements explicitly into method calls, parameters and return values.
  • 17.
  • 18.
  • 19.
  • 20. package org.sakaiproject.service.common.agent; import org.sakaiproject.service.common.shared.Resource; public interface Agent extends Resource { } package org.osid.shared; public interface Agent extends java.io.Serializable { public String getDisplayName() throws osid.shared.SharedException; public osid.shared.Id getId() throws osid.shared.SharedException; public osid.shared.Type getType() throws osid.shared.SharedException; PropertiesIterator getProperties() throws osid.shared.SharedException; Properties getPropertiesByType(Type propertiesType) throws osid.shared.SharedException; TypeIterator getPropertiesTypes() throws osid.shared.SharedException; }
  • 21. package org.sakaiproject.service.common.shared; import org.sakaiproject.exception.PermissionException; import org.sakaiproject.exception.VersionException; import org.sakaiproject.service.common.id.Id; public interface Resource extends Comparable { String getDescription(); String getDisplayName(); Id getId(); Type getType(); PropertiesIterator getProperties(); Properties getPropertiesByType(Type propertiesType); TypeIterator getPropertyTypes(); // Sakai additional Methods void setDescription(String description); void setDisplayName(String displayName); void setType(Type type); String getReference(); String getUrl(); boolean allowDelete(); boolean allowUpdate(); Properties addPropertiesType(Type propertiesType); void removePropertiesType(Type propertiesType); void delete() throws PermissionException; Version getVersion(); boolean isCurrentVersion(); boolean isCurrentVersion(Version version); void update() throws VersionException, PermissionException; void updateIgnoreVersion() throws PermissionException; }
  • 22. The Sakai Layered Architecture uPortal JavaServer Faces Sakai Tools Sakai Services OKI Tools Legacy Tools Legacy Services OKI Plug-ins Sakai Data Legacy Data OKI Info JetSpeed Varies
  • 23. The Sakai Framework OKI TOOL Sakai Tool OKI 2.0 impls Sakai API Impls OKI Plug-In Sakai API OKI API OKI 2.0 impls OKI API Sakai Legacy Impls Leg API Legacy Tool OKI Info migration Sakai Data Legacy Data
  • 24. Simple Deployment Tool Sakai API Impls Sakai API Sakai Data In a simple deployment, the Sakai system may just use the Sakai provided API implementations and point it at a database connection, let Sakai build the tables - and off we go.
  • 25. Basic Local Customization Tool Local OKI Impl Sakai API Impls OKI Plug-In Sakai API OKI API Sakai Data In the most common situation, local sites will want to customize a few things - perhaps AUTHN, AUTHZ, a few DR’s. Sites will write/procure/configure OKI implementations which plug into the Sakai implementations. The Sakai implementations are configured to “federate” between data from the plug-in and the Sakai data as desired by the site.
  • 26. Drastic Local Customization Tool Sakai API Impls Sakai API PeopleSoft At some level, it would be possible to completely re-implement the entire Sakai API for the particular component (i.e. grading). Because the Sakai APIs have no “out-of-band” agreements, the tools cannot perceive that the implementation has been changes.
  • 28.
  • 29.
  • 30.
  • 31. JSF is Used to Describe the UI <sakai:view_container title=&quot;#{msgs.sample_title}&quot;> <sakai:tool_bar> <sakai:tool_bar_item/> </sakai:tool_bar> <sakai:instruction_message value=&quot;#{msgs.sample_one_instructions}&quot; /> <sakai:group_box title=&quot;#{msgs.sample_one_groupbox}&quot;> <h:inputText value=&quot;#{MyTool.userName}&quot; /> <sakai:date_input value=&quot;#{MyTool.date}&quot; /> <sakai:button_bar> <sakai:button_bar_item action=&quot;#{MyTool.processActionDoIt} value=&quot;#{msgs.sample_one_cmd_go}&quot; /> </sakai:button_bar>
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 41. The Sakai User Interface Process Sakai Tool FacesServlet Faces-config.xml Sakai GUI Elements Faces Renderer uPortal JSF Page Client
  • 42. All the components… On one slide :) JSF Servlet Render Portlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 43. Sakai framework wakes up, reads a bunch-o-files and initializes components JSF Servlet Render JSR-168 Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 44. Sakai then pokes config data and auto-wires service implementations into beans JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 45. Action runs, accesses services through config beans, sets view beans, selects layout mode. JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 46. JSF Render takes layout, and renders the the view pulling info from the view beans… JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSF consults the layout for the particular view beans to look at for their data. JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 47. Then we wait… It is quiet… Too quiet.. And then the user pushes a button. JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 48. Oops.. The user entered invalid data - JSF scolds them and gives them another chance… JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action Merde! Validity checking is optional and bypassable for on an action by action basis. JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 49. Le User enters valid information, JSF sets the View Beans and calls the requested action… JSF Servlet Render Tool View Beans Config Beans … Framework/Config Action Action JSF consults the layout for the name of the action method to call! JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 50. Action runs, accesses services through config beans, sets view beans, selects layout (again)… JSF Servlet Render Portlet Render Tool View Beans Config Beans … Framework/Config Action Action JSP Layout <sakai:toolbar> < … JSP Layout <sakai:toolbar> < … Service Config Beans Method Method Service Config Beans Method Method
  • 52.
  • 53.
  • 54.
  • 55. Sakai 1.0: Embedded Version (uPortal 2.3) Home Athletics Sakai CS101 EE499 EE499-Sec01 Chess Motor Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Watch me now mary! Send Play Help FAQ Meeting Single Channel Admin
  • 56. Sakai 1.0: Injected Version (uPortal 2.3) EE499 EE499-s01 Home CS101 Chess Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Watch me now mary! Send Play Help FAQ Meeting Admin EE499 EE499-s01 Home CS101 Chess Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Watch me now mary! Send Play Help FAQ Meeting Admin
  • 57.
  • 58. The Hierarchy Challenge Sakai Help EE499 Chess Motor CS101 Folders FAQ Chat Play Game Chat Chat Folders Sec01 Sec02 Chat Folders Chat Folders Access Control List Access Control List Access Control List Access Control List Portlets/Channels need to know “where” they fit for inherited access control and to know the “context” in which they operate - “I am the Chat for CS101”. There are fragment administration issues. This is not specified in the JSR-168 spec. SuperChannel and Sakai Embedded are solutions which hide the hierarchy from the portal - but this is less than ideal because it would be nice to drop a context-sensitive “chat” tool anywhere in the portal.
  • 59. Sakai 2.0: Integrated Events MyPage Athletics Courses + CS101 + EE499 + Main - Sec01 Help Chat FAQ Meeting + Sec02 + Chess + Motor Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Joe: What if he pulls his goalie? Watch me now mary! Send Events MyPage Athletics Courses Fred: He will move P-K4 Joe: Nah - he did that last time Mary: It does not matter what he does - I will beat him again Joe: What if he pulls his goalie? Watch me now mary! Send EE499 -> Sec01 New Course New Section Chat Help FAQ Meeting Admin
  • 61.
  • 62.
  • 63. The Scenario Score: 60 Instructor wants to add 5 points Screen Assistant wants to add 10 points Screen Score: 70 Score: ?? What happens here - what value ends up in the database? Time -> What does the GUI look like here? Is the assistant blocked? Is the assistant notified in any way? Is there some feedback or notification that happens here? 60 Update 60 Update 70 Update 65 Update
  • 64.
  • 65. No Lock Score: 60 Instructor wants to add 5 points Screen Assistant wants to add 10 points Screen Score: 70 Score: 65 Oops - Assistant's changes lost forever Time -> 60 Update 60 Update 70 Update 65 Update
  • 66.
  • 67. Pessimistic Score: 60 Instructor wants to add 5 points Screen Assistant wants to add 10 points Screen N/A Retry Score 65 Time -> Locked Once it is locked, it is not available. Score 65 Unlocked Score 65 Locked 60 Update N/A Retry 65 Update 75 Update 65 Update
  • 68.
  • 69. Optimistic Instructor wants to add 5 points Screen Session Assistant wants to add 10 points Screen Session 1 / 60 1 / 60 1 / 70 1 / 65 2 / 70 70 Update 2 / 75 Session and database versions match (both are version 1) so record is updated. Bad-version error sent to application Application decides how to handle error New information displayed to user with notification that something has changed during editing. Session and database versions now match Time -> Version: 1 Score: 60 60 Update 60 Update 70 Update Version: 2 Score: 70 65 Update Version: 2 Score: 70 75 Update Version: 3 Score: 75
  • 70.
  • 71.
  • 72. API Impacts of Optimistic Locking Option 1: Agent a = retrieveByName(“Joe”); String d = a.getDisplayName(); Retain reference to a (may not be serializable) Put up screen to modify display name a.setDisplayName(newName); // Update, ignoring version a.updateWriteThrough(); // Update checking version try { a.update(); } catch (out-of-date) { … } Option 2: Agent a = retrieveByName(“Joe”); String d = a.getDisplayName(); Version v = a.getVersion(); Retain reference to v (Version is Serializable) Put up screen to modify display name // Re-retrieve Agent a = retrieveByName(“Joe”); a.setDisplayName(newName); // Update checking version try { a.update(v); } catch (out-of-date) { … }
  • 73. API Details // New Methods in Agent public interface Agent { Version getVersion(); // Update, using the current // version in this object void update() throws general-failure, out-of-date; // Update, using the specified // version to check against // the database version void update(Version vers) throws general-failure, out-of-date; // Update ignoring the internal // and database version void updateWriteThrough() throws general-failure; } // Note Version is Serializable
  • 75.
  • 77. Sakai Beta Tools Admin: Alias Editor (chef.aliases) Admin: Archive Tool (chef.archive) Admin: Memory / Cache Tool (chef.memory) Admin: On-Line (chef.presence) Admin: Realms Editor (chef.realms) Admin: Sites Editor (chef.sites) Admin: User Editor (chef.users) Announcements (chef.announcements) Assignments (chef.assignment) C. R. U. D. (sakai.crud) Chat Room (chef.chat) Discussion (chef.discussion) Discussion (chef.threadeddiscussion) Dissertation Checklist (chef.dissertation) Dissertation Upload (chef.dissertation.upload) Drop Box (chef.dropbox) Email Archive (chef.mailbox) Help (chef.contactSupport) Membership (chef.membership) Message Of The Day (chef.motd) My Profile Editor (chef.singleuser) News (chef.news) Preferences (chef.noti.prefs) Recent Announcements (chef.synoptic.announcement) Recent Chat Messages (chef.synoptic.chat) Recent Discussion Items (chef.synoptic.discussion) Resources (chef.resources) Sample (sakai.module) Schedule (chef.schedule) Site Browser (chef.sitebrowser) Site Info (chef.siteinfo) Web Content (chef.iframe) Worksite Setup (chef.sitesetup) WebDAV
  • 78. The Sakai Framework OKI TOOL Sakai Tool OKI 2.0 impls Sakai API Impls OKI Plug-In Sakai API OKI API OKI 2.0 impls OKI API Sakai Legacy Impls Leg API Legacy Tool OKI Info migration Sakai Data Legacy Data
  • 79.
  • 80.
  • 81. AUTHZ OSID MIT Roles DB Sakai AUTHZ Implementation OKI Plug-In OKI API Sakai Data Sakai Tool Sakai API OSID MIT Registrar OKI Plug-In OKI API “ Can the current user delete file xyz?” Users and Groups implementation from Columbia/ uPortal Existing AUTHZ implementations
  • 82. Work Plan Once 1.0 is Released
  • 83.
  • 84. Building Your Tool in 1.0 Your Tool Sakai AUTHN Sakai Legacy Sakai AUTHZ Sakai API From CVS Your SAKAI API Impl Your New Sakai API Sakai GUI Widgets JSF Rendering Environment Because the Sakai API is neither fully specified nor fully implemented in 1.0 to develop with 1.0 requires some flexibility. Legacy APIs may fill some of the gaps in the short term - but we do not want tools talking to legacy APIs.
  • 85.
  • 86.
  • 87.
  • 89.
  • 90. Plan A - Clusters of JVM’s JSF implementations from SUN. Linux JVM Tomcat (many webapps) Framework … JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Framework Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Framework Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Tool Action JSP JSP JSP Service Tool Action JSP JSP JSP Tool Action JSP JSP JSP Service Service Service Framework
  • 91. What if SUN provided a SWING JSF Render capability and we hand-build desktop versions of services or hand-build stubs which used ROMI or Web Services? Linux or Windows JVM JSF Swing Service Service Stub Stub Desktop Framework Registry Tool Action JSF JSF JSF Tool Action JSF JSF JSF Tool Action JSF JSF JSF Linux JVM Service Linux JVM Service
  • 92.
  • 93. What if we built a version of the framework that examined an interface using reflection and dynamically built a proxy, generated WSDL, and just made web service happen pretty much transparently other than declaring where services were to run in configuration… Hopefully there will be a mechanism for secure web services, or perhaps we could simply use two-way SSL certificate exchange to force transport security… Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet Stub Stub Framework with Web Services Linux JVM Axis Service Axis Framework … Windows .NET Service .NET Framework Tool Action JSP JSP JSP Tool Action JSP JSP JSP
  • 94. What if the frameworks were highly coordinated and in addition to dynamically generating stubs and placing web services, provided standardized mechanism for moving identity securely across web services, and the frameworks could perform dependency injection automatically when one service had a dependency on a service running on another server… Hmmm. Sounds like the Grid. Linux JVM Tomcat (many webapps) JSF Servlet and JSF Portlet DR Stub AUTHZ Service Sakai Grid Framework Linux JVM Axis DR Service Sakai Grid Framework AUTHZ Stub Tool Action JSP JSP JSP Tool Action JSP JSP JSP
  • 95.
  • 96.
  • 97.