Alfresco Web Content Management Roadmap - 3.2 and Beyond


Published on

Review the technical implementation of Alfresco Web Content Management, including architecture, and technology stack, and current direction forward. Clustering, High Availability, Web Delivery RUntime, Technology Agnosticism, SURF component services, and the Forms service are covered. Different use cases are also reviewed.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Alfresco Web Content Management Roadmap - 3.2 and Beyond

  1. 1. Alfresco WCM Roadmap – 3.2 and Beyond Michael Uzquiano Director of WCM and Network Products
  2. 2. Agenda Roadmap – 3.2 and Beyond <ul><li>Recent Releases </li></ul><ul><ul><li>Alfresco 2.1.7 </li></ul></ul><ul><li>Upcoming Releases </li></ul><ul><ul><li>Alfresco 2.2.3 </li></ul></ul><ul><ul><li>Alfresco 3.1 </li></ul></ul><ul><li>Web Content Management – Product Direction </li></ul><ul><ul><li>Full Repository Clustering and High Availability </li></ul></ul><ul><ul><li>Web Delivery Runtime + API </li></ul></ul><ul><ul><li>Surf Component Services </li></ul></ul><ul><ul><li>Forms Service </li></ul></ul><ul><li>Q&A </li></ul>
  3. 3. Alfresco Roadmap Alfresco 3.2 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 2.1.7 <ul><li>February </li></ul>Labs 3D <ul><li>January </li></ul>2.2.3 <ul><li>February </li></ul>3.0.1 <ul><li>December </li></ul>3.1 <ul><li>Mid-March </li></ul>3.2 <ul><li>July </li></ul>3.1.1 <ul><li>Mid-May </li></ul>Labs Family 2.1 Family 2.2 Family 3.0 Family 3.1 Family 3.2 Family Labs <ul><li>Start of June </li></ul>Migrate to 3.1 Migrate to 3.1 Labs <ul><li>Projected </li></ul>2.2.4 <ul><li>TBD </li></ul>3.1.2 <ul><li>Projected </li></ul>3.2.1 <ul><li>Projected </li></ul>
  4. 4. Alfresco 2.1.7 End of February 2009 <ul><li>Critical Fixes </li></ul><ul><li>Copy/Paste on a document does not copy the discussions </li></ul><ul><li>The description textarea in the modify space properties web form eats one leading newline each time it is submitted </li></ul><ul><li>XSS in forum code </li></ul><ul><li>Behavior of delete cascade </li></ul><ul><li>User doesn't go to &quot;Detail of Content&quot; page if &quot;Start discussions&quot; action was performed </li></ul><ul><li>User doesn't go to &quot;Details of Space&quot; page if &quot;Start discussions&quot; action was performed </li></ul><ul><li>JSF client DownloadContent URLs are not cachable by a forward proxy (such as Apache mod_proxy+mod_cache) </li></ul><ul><li>Open Lucene ResultSet memory leaks in client code (mostly WCM and dialogs) </li></ul><ul><li>Export of space with large number of items silently fails </li></ul><ul><li>putContent() method in the org.alfresco.webservice.util.ContentUtils class fails to upload *.java, *.txt, *.xml/html files </li></ul><ul><li>AVM index AUTO and FULL updates should amalgamate the snapshots to index to minimise the index work. </li></ul><ul><li>Kerberos web filter checks the auth component type preventing startup </li></ul><ul><li>CIFSAVM stops responding and all folders are empty for a brief period </li></ul><ul><li>XML parser apparently is not thread safe while the JSP container is trying to get lots of different HTTP threads to parse </li></ul><ul><li>JavaScript copy of folder results in the same qname for all copies </li></ul><ul><li>Webdav MOVE is refused by apache reverse proxy and rewritten as PUT and DELETE (loss of Alfresco version information) </li></ul><ul><li>Error message appears on server B when category is deleted from server A </li></ul><ul><li>ExceptionStackUtil - isAssignableFrom object and parameter interchanged! </li></ul><ul><li>Delete Permission Not Checked When Marking A File For Delete On Close </li></ul>
  5. 5. <ul><li>Additional Fixes and Updates </li></ul><ul><li>Miscelleaneous FSR packaging items </li></ul><ul><li>Total result set size returned for paged result sets via web services </li></ul><ul><li>Incorrect info displaying on Summary screens </li></ul><ul><li>javascript person.createGroup() does not thrown an exception if group already exists </li></ul><ul><li>Add the property UUIDBinding to the bean org.alfresco.repo.importer.ImporterBootstrap </li></ul><ul><li>When accessing Powerpoint 2007 (PPTX) via the JSF Client causes browser error on IE6 and IE7. </li></ul><ul><li>After session has timed out, expanding a space in the Navigator results in unfriendly error </li></ul><ul><li>Permission model may still throw null pointer exceptions when types are unknown in the DD </li></ul><ul><li>Optimizations </li></ul><ul><li>Configuration option for running NFS as non-root user (specify alternate binding port) </li></ul><ul><li>Link Validation Service disabled by default due to high resource requirement </li></ul><ul><li>Long query sort times on alf_transaction table </li></ul><ul><li>Explicitly close BufferedInputStream in </li></ul><ul><li>Patches may get applied twice </li></ul><ul><li>Deployment to FSR needs to take into account the absolute paths </li></ul>Alfresco 2.1.7 End of February 2009
  6. 6. Alfresco 2.2.3 End of February, 2009 <ul><li>Critical Fixes </li></ul><ul><li>Content publisher cannot submit modified assets (2.2.3-dev regress) </li></ul><ul><li>Create content by Content Contributor or Content Publisher fails </li></ul><ul><li>No row with the given identifier exists when submitting 30 items concurrently (org.hibernate.ObjectNotFoundException) </li></ul><ul><li>Fast Attribute Service lookups </li></ul><ul><li>Fix for WCM Regression (Revert Failing for Content Publisher) </li></ul><ul><li>Fixes for Submit Action Queue (non-persistent) </li></ul><ul><li>Fix for Web Form List Control (for IE6 and IE7) </li></ul><ul><li>Content Contributor cannot edit their own items </li></ul><ul><li>Staging Sandbox should be read only via CIFS and FTP </li></ul><ul><li>Adding users to a web project is slow due to deep permission copies </li></ul><ul><li>Renaming WCM folder makes it a shared folder </li></ul><ul><li>Simultaneous Deployment to ASR & FSR results in a DuplicateChildNodeNameException in ASR </li></ul><ul><li>Child key does not case insensitive name </li></ul><ul><li>AVM console - add option to specify tag and description when creating snapshot </li></ul><ul><li>AVM locking is not always against the correct store (it does not always strip to the staging area store) </li></ul><ul><li>Adding new sandbox causes the modifier for all submitted items to change </li></ul><ul><li>Script error on the bulk import action from Create menu on my sandbox page in IE7 </li></ul>
  7. 7. <ul><li>Additional Fixes and Updates </li></ul><ul><li>Inline callouts can reference a web script maintained in the Data Dictionary </li></ul><ul><li>Misleading exceptions reported during AVM flatten and update </li></ul><ul><li>Upgrades from 2.1.7 and 2.2.1 failed on PostgreSQL </li></ul><ul><li>Enable Logging of Leaked Transactions by Default </li></ul><ul><li>Virtual Server Logging minimized (tweak) </li></ul><ul><li>Display Formatting fixes for WCM wizards </li></ul>Alfresco 2.2.3 End of February, 2009 <ul><li>Performance Optimizations </li></ul><ul><li>Diff performance degrades on large data sets </li></ul><ul><li>L2 Cache Optimization + Disable for specific AVM Model Objects </li></ul><ul><li>Removal of AVM Lookup Cache + new strategy </li></ul><ul><li>Fix for Workflow Performance Issue when displaying web forms in sandbox modified items </li></ul><ul><li>WCM - performance of invite web user (content manager) has regressed </li></ul>
  8. 8. <ul><li>Additional Features </li></ul><ul><li>Hibernate Performance Improvements </li></ul><ul><li>Remote API Improvements </li></ul><ul><li>Repository Bugs and Improvements </li></ul><ul><li>Enhanced Consistency Checking </li></ul><ul><li>System Monitoring Metrics (JMX) – JSR 160, JConsole integration </li></ul><ul><li>Hyperic Connector </li></ul><ul><li>Kofax Integration </li></ul><ul><li>Easy Clustering </li></ul><ul><li>Composite Actions </li></ul><ul><li>Share WebView Dashlet Contribution </li></ul><ul><li>Sharepoint Protocol Links Tab support </li></ul><ul><li>Theming Examples and Documentation for Share </li></ul><ul><li>Switch from YUI Editor to TinyMCE for Share </li></ul><ul><li>Support for MS Office 2007 Transformations </li></ul>Alfresco 3.1 Middle of March 2009 <ul><li>Features </li></ul><ul><li>Includes all WCM Fixes from Alfresco 2.2.3 </li></ul><ul><li>The “go-to” version for WCM in the Alfresco 3.x family </li></ul><ul><li>Middle of March 2009 </li></ul>
  9. 9. WCM Services Alfresco Surf WCM Repository Technology Stack Alfresco 3.x <ul><li>WCM Presentation Runtime </li></ul><ul><li>Alfresco Surf </li></ul><ul><li>Lightweight and Scriptable Web Framework </li></ul><ul><li>Pages, Templates, Components, Themes, Chrome and more. </li></ul><ul><li>Stand-alone and scalable on its own tier </li></ul><ul><li>WCM Application </li></ul><ul><li>Web Forms and Content Transformations </li></ul><ul><li>Collaboration Tools around Web Projects (Workflow, Notifications) </li></ul><ul><li>User Interface, CIFS, FTP and more </li></ul><ul><li>Repository Services </li></ul><ul><li>REST API for Web Projects, Sandboxes, Web Assets, Users and Workflow </li></ul><ul><li>Web Scripts Runtime (pluggable API) </li></ul><ul><li>Web Services, CIFS, FTP, WebDAV and more </li></ul><ul><li>Repository </li></ul><ul><li>Subversion-like source control, branching, layers, locking, snapshots </li></ul><ul><li>Auditing, Workflow, Integrated Access Control </li></ul><ul><li>High Performance, Enterprise-class Scalability </li></ul>
  10. 10. Web Content Management Product Direction <ul><li>Enterprise Class </li></ul><ul><li>Full Repository Clustering and High Availability </li></ul><ul><li>Web Delivery Runtime </li></ul><ul><li>Web Delivery API </li></ul><ul><li>Surf Component and Deploy Services </li></ul><ul><li>From the Desktop to the Web </li></ul><ul><li>Move content easily from Alfresco Share to Web Projects to Live Web Site </li></ul><ul><ul><li>Make it simple </li></ul></ul><ul><ul><li>Make it low cost </li></ul></ul><ul><li>Harmonize the object models for DM and WCM </li></ul><ul><li>Forms Service </li></ul>DM WCM
  11. 11. Clustering / High Availability Product Direction <ul><li>Clustering and High Availability </li></ul><ul><li>Should be a fundamental capability of Alfresco Repository </li></ul><ul><li>Regardless of whether you are using Alfresco Repository for: </li></ul><ul><ul><li>Document Management </li></ul></ul><ul><ul><li>Web Content Management </li></ul></ul><ul><ul><li>Records Management </li></ul></ul><ul><ul><li>Digital Asset Management </li></ul></ul><ul><ul><li>Imaging </li></ul></ul><ul><li>Implementation </li></ul><ul><li>Separate WCM Services from WCM Application </li></ul><ul><li>Strong contract - formal public API that uses proper Spring beans and offers proper REST interfaces </li></ul><ul><li>Allow Alfresco Repository to go “headless” </li></ul><ul><li>Follow same pattern with implementation of RM Services (also in 3.2) </li></ul>
  12. 12. Web Delivery Runtime Product Direction <ul><li>Web Delivery Runtime </li></ul><ul><li>High Performance (Real-time Request Processing) </li></ul><ul><li>Clustering and High Availability </li></ul><ul><li>Integrated Deployment Receiver for Alfresco WCM </li></ul><ul><li>Web Delivery API </li></ul><ul><li>CMIS – Content Management Interoperability Services </li></ul><ul><li>AQL (Alfresco Query Language) </li></ul><ul><ul><li>SQL-like Query Language </li></ul></ul><ul><ul><li>Support for full Alfresco model </li></ul></ul><ul><li>Node and Path interrogation interfaces </li></ul>
  13. 13. Technology Agnostic Product Direction <ul><li>Web Delivery Tier must provide technology agnostic support </li></ul><ul><ul><li>CMIS </li></ul></ul><ul><ul><li>SQL Query </li></ul></ul><ul><ul><li>REST interfaces </li></ul></ul><ul><li>Compatible with Alfresco Surf </li></ul><ul><ul><li>Alfresco Surf components integrate to Web Delivery API </li></ul></ul><ul><ul><li>Move your web application across environments without changing web app </li></ul></ul><ul><li>Compatible with other web frameworks </li></ul><ul><ul><li>Open-Standards and flexible HTTP based API allow for other web frameworks to easily integrate </li></ul></ul><ul><ul><li>Portals, Groovy, PHP, .NET, mashup engines, more </li></ul></ul>
  14. 14. Surf Component Services Product Direction <ul><li>Surf Component Services </li></ul><ul><li>Import and Export Services for Alfresco Surf </li></ul><ul><li>Start with any object type and traverse the Surf object tree to export all dependencies </li></ul><ul><ul><li>All Surf object types - pages, templates, components, themes, chrome, etc </li></ul></ul><ul><li>Standalone archive file which can be transported to other Alfresco Surf instances </li></ul><ul><li>Discovery, upload and download services integrated to Alfresco Network </li></ul><ul><li>Dependency tracking </li></ul><ul><ul><li>Internal – Surf object bindings </li></ul></ul><ul><ul><li>External – Alfresco Repository version, AMP versions, Surf Runtime versions </li></ul></ul>
  15. 15. <ul><li>Example: Alfresco Share </li></ul><ul><li>Administrator loads up Alfresco Share administration tool </li></ul><ul><li>Discover new Alfresco Share add-ons </li></ul><ul><ul><li>Dashlets </li></ul></ul><ul><ul><li>Pages and Page Components </li></ul></ul><ul><ul><li>Themes </li></ul></ul><ul><ul><li>Dashboard Layouts </li></ul></ul><ul><li>Installs new add-ons </li></ul><ul><ul><li>They install into Alfresco Web Project – user sandbox </li></ul></ul><ul><li>Instantly preview changes to Alfresco Share site </li></ul><ul><li>Submit changes for approval through Alfresco WCM workflow </li></ul><ul><li>Deploy to Test Servers </li></ul><ul><li>Deploy to Production (Live Site) </li></ul>Surf Component Services Product Direction
  16. 16. User Generated Content Scenario #1: “Live” Share Authoring Production 2. Content is added to Share Site and reflects automatically on the Share instance. 4. Surf updates remote object store in authoring store. This reflects instantly on the Share instance. 1. Content Worker begins working with Alfresco Share. 3. Content Worker updates their user dashboard. Collaborative Content Content API Web Project Content Web API
  17. 17. Business Content Scenario #2: Publish to “Live” Share <ul><li>Goal: Support content which originates inside the business </li></ul><ul><li>Problem: </li></ul><ul><ul><li>James wants to write a new article for the home page of the “live” Share site </li></ul></ul><ul><ul><li>He wants to preview his article “in-context” as he writes it </li></ul></ul><ul><ul><li>He wants the article to be approved and then published to the “live” Share site </li></ul></ul><ul><li>Problem </li></ul><ul><ul><li>Holly wants to build a new dashlet for users of her Share collaboration site </li></ul></ul><ul><ul><li>She wants to test it out on a test server to make sure she has it right </li></ul></ul><ul><ul><li>She wants the dashlet to be approved and then deployed to the “live” Share site </li></ul></ul>
  18. 18. Authoring Collaborative Content Content API Web Project Content Web API Preview Collaborative Content Content API Web Project Content Web API 1. James writes new content using Alfresco Forms Service 2. Content is saved to his user sandbox in the Web Project 3. James previews the content using the Preview Server. The Preview Server uses virtual content retrieval to pull content from James’ user sandbox. 4. James previews the content Business Content Scenario #2: Publish to “Live” Share
  19. 19. Preview Site (DM) DM API SiteStore (AVM) WEB API Production Collaborative Content Content API Runtime Content CMIS API Web Project Content Web API Authoring Collaborative Content Content API Web Project Content Web API 5. James submits the content for approval. 6. The content is approved through workflow and is published to the live site. Deployment Business Content Scenario #2: Publish to “Live” Share
  20. 20. Forms Service Product Direction <ul><li>Ajax-driven UI Runtime </li></ul><ul><li>Integrated into Alfresco Surf </li></ul><ul><li>Embeddable into your own non-Surf web applications </li></ul><ul><li>Javascript-driven via Ajax libraries </li></ul><ul><li>Universal Model </li></ul><ul><li>Generators load content from ADM or from AVM </li></ul><ul><li>Load into universal or intermediary “model” format </li></ul><ul><li>Persisters write content back into either repository (as DM Node, Web Forms or XML) </li></ul>Intermediary Model Format XML JSON Custom Format DM Node Web Form
  21. 21. Forms Service Product Direction <ul><li>Content Modeling </li></ul><ul><li>Validation </li></ul><ul><li>Referential Integrity Checking </li></ul><ul><li>Composite Objects (Associations, Categories) </li></ul><ul><li>Multiple Forms for a Single Content Type </li></ul><ul><li>Simple Content Entry Forms </li></ul><ul><li>Complex Administrator Forms </li></ul><ul><li>Role-specific Forms Forms Configuration Service </li></ul><ul><li>Driven by XML Configuration Service (similar to Web Client) </li></ul><ul><li>Classpath and Repository / Content Configuration </li></ul><ul><li>Dynamic Forms </li></ul>
  22. 22. Base Config - Control Rendering Templates <config> <default-controls> <type name=&quot;d:text&quot; template=&quot;controls/textfield.ftl&quot;> <control-param name=&quot;size&quot;>50</control-param> </type> <type name=&quot;d:mltext&quot; template=&quot;controls/textarea.ftl&quot; /> <type name=&quot;d:int&quot; template=&quot;controls/textfield.ftl&quot; /> <type name=&quot;d:float&quot; template=&quot;controls/textfield.ftl&quot; /> <type name=&quot;d:double&quot; template=&quot;controls/textfield.ftl&quot; /> <type name=&quot;d:long&quot; template=&quot;controls/textfield.ftl&quot; /> <type name=&quot;d:boolean&quot; template=&quot;controls/checkbox.ftl&quot; /> <type name=&quot;d:date&quot; template=&quot;controls/date.ftl&quot; /> <type name=&quot;d:datetime&quot; template=&quot;controls/date.ftl&quot; /> <type name=&quot;d:any&quot; template=&quot;controls/textfield.ftl&quot; /> <type name=&quot;association&quot; template=&quot;controls/association.ftl&quot; /> </default-controls> </config> Forms Service Product Direction
  23. 23. Base Config - Constraint Handlers <constraint-handlers> <constraint type=&quot;MANDATORY&quot; validation-handler=&quot;Alfresco.forms.validation.mandatory&quot; /> <constraint type=&quot;REGEX&quot; validation-handler=&quot;Alfresco.forms.validation.regexMatch&quot; message=&quot;The field contains an invalid character&quot; /> </constraint-handlers> Default Form for cm:content – simple String compare condition <!-- Default form configuration for the cm:content type --> <config evaluator=&quot;string-compare&quot; condition=&quot;cm:content&quot;> <form> <field-visibility> <show id=&quot;cm:name&quot; /> <show id=&quot;cm:title&quot; /> <show id=&quot;cm:description&quot; appearance=“fieldset” /> </field-visibility> </form> </config> Forms Service Product Direction
  24. 24. Role-Based Forms - Example <config evaluator=&quot;string-compare&quot; condition=&quot;content&quot;> <form submission-url=&quot;submission/url&quot;> <view-form template=&quot;/path/view/template&quot; requires-role=&quot; Consumer &quot; /> <edit-form template=&quot;/path/edit/template/manager&quot; requires-role=&quot; Manager &quot; /> <edit-form template=&quot;/path/edit/template/contributor&quot; requires-role=&quot; Contributor &quot; /> <create-form template=&quot;/path/create/template&quot; requires-role=&quot; Manager &quot; /> <create-form template=&quot;/path/create/template/norole&quot;/> <field-visibility> <show id=&quot;title&quot; for-mode=&quot;view, create&quot; /> </field-visibility> <appearance> <set id=&quot;details&quot; appearance=&quot;fieldset&quot; /> <set id=&quot;user&quot; parent=&quot;details&quot; appearance=&quot;panel&quot; /> <field id=&quot;name&quot; label=&quot;Name&quot; label-id=&quot;field_label_name&quot; disabled=&quot;true“ set=&quot;details“ help-text=“test1&quot; help-text-id=“test2&quot; > <control template=&quot;alfresco/extension/formcontrols/my-name.ftl&quot;> <control-param name=&quot;foo&quot;>bar</control-param> </control> <constraint-message type=&quot;REGEX&quot; message=“Bad character - '{0}'&quot; /> </field> <field id=&quot;quota&quot; set=&quot;user&quot; requires-role=&quot; Coordinator &quot; /> </appearance> </form> </config> Forms Service Product Direction
  25. 25. <ul><li>Forms for WCM and Web Studio </li></ul><ul><li>Will eventually replace existing Web Forms capability for WCM </li></ul><ul><ul><li>Retain XSD Compliance for WCM authored content </li></ul></ul><ul><li>Forms integrated to Alfresco Surf </li></ul><ul><li>Forms integrated to Alfresco Web Studio </li></ul><ul><ul><li>In-Context Editing </li></ul></ul><ul><ul><li>Should be part of next Alfresco Labs </li></ul></ul><ul><li>Future Plans </li></ul><ul><ul><li>Forms Designer </li></ul></ul><ul><ul><li>Visual Layout of Forms </li></ul></ul>Forms Service Product Direction
  26. 26. Web Designers Business Content Contributors Web Developers Web Content Contributors <ul><li>Project Collaboration </li></ul><ul><li>Source Documents </li></ul><ul><li>Word, Excel, PDF, Text, Feeds </li></ul><ul><li>Desktop Integration, Offline Edit </li></ul><ul><li>Easy to use Forms, Quick Entry </li></ul><ul><li>Web Forms </li></ul><ul><li>In-Context / In-Place Editing </li></ul><ul><li>Web Site Preview </li></ul><ul><li>Developer Tools </li></ul><ul><li>CIFS, FTP, WebDAV, NFS </li></ul><ul><li>IDE Integration (Eclipse, etc) </li></ul><ul><li>Source Control + AVM </li></ul><ul><li>Visual Designers, Iteration </li></ul><ul><li>In-Context Visual Designer </li></ul><ul><li>Components, Templates, Pages </li></ul><ul><li>Drag and Drop Assembly </li></ul>Web Applications and Web Sites Collaboration Users and Roles
  27. 27. Business Content Contributors Web Designers Web Developers Web Content Contributors Alfresco Share Alfresco Web Studio Alfresco Forms Alfresco Web Studio Alfresco Surf Alfresco Applications Users and Roles Intelligent File System IDE Integration
  28. 28. Questions? <ul><li>Alfresco Roadmap </li></ul><ul><ul><li> </li></ul></ul><ul><li>Alfresco Forms </li></ul><ul><ul><li> </li></ul></ul><ul><li>Alfresco Surf </li></ul><ul><ul><li> </li></ul></ul><ul><li>Alfresco Web Studio </li></ul><ul><ul><li> </li></ul></ul>