WCM Services Layer

Document created by resplin Employee on Jun 6, 2015
Version 1Show Document
  • View in full screen mode

Obsolete Pages{{Obsolete}}

The official documentation is at: http://docs.alfresco.com



{{AVMWarning}}
AVM


Project Overview


In Alfresco 2.x and 3.0, the WCM functionality is, to simplify somewhat, implemented in two different parts of the Alfresco code base:


  1. As a set of low-level repository APIs to the AVM store implementation (the AVM API)
  2. As higher level 'WCM business process' logic that is embedded within the code for the JSF-based Web Client

Examples of the former (AVM API) include the logic for manipulating AVM stores, nodes and layers.  Examples of the latter (WCM logic) includes the logic responsible for managing web projects, sandboxes, submission workflows, promotion-to-staging processes, deployment target configurations, generating preview URIs etc.

With the introduction of new UI apps such as Alfresco Share (in v3.0) and Alfresco Web Studio (in Labs), it has become apparent that some of the higher level WCM functionality needs to be refactored into a clean, UI-independent set of WCM Services, so that both features (low level AVM and high level WCM) can be leveraged equally by technologies other than the JSF-based Web Client.

In Alfresco 3.1, the WCM services layer is exposed as JavaScript API and then be exposed again via the REST API


Goals


The primary goals of the WCM Services Layer project are:


  • to provide a clean API for manipulating WCM Web Projects and their associated assets (sandboxes, Web Forms, Web Form backed content, etc.), independent of the JSF client (where this logic currently resides)
  • faithfully replicate the current (v2.x) logic, while also adding the bare minimum API set required to support any new WCM features required by Alfresco Web Studio (defined in MoSCoW list) related to Web Projects

Secondary goals may include (this list is by no means complete, let alone prioritised):


  • to provide an interface suitable for exposure over REST
  • to provide this API in a public manner (eg. via REST/JavaScript bindings) so that 3rd party code can leverage these features
  • to refactor the existing JSF-based Web Client to use parts of the embedded APIs (and minimise multiple code paths)
  • to refactor the CIFS and FTP code to use parts of the embedded APIs (and minimise multiple code paths)
  • to extend the existing behaviour with new 'low hanging fruit' features (eg. collaborative sandboxes, selection of submission workflow per user and/or role, deployment target health checks etc.)
  • to provide a more forward looking feature set, in line with the future directions of Alfresco WCM (eg. Alfresco Web Studio)
  • TODO

WCM requirements


TODO - add prioritised list of WCM requirements and examples of end-2-end scenarios


Functional Capabilities


NOTE - the MoSCoW priorities shown here are indicative, and related to the embedded Java API rather that the higher-level APIs (JavaScript and/or REST bindings)


  • WCM Web Project operations [M]
    • [M]Â web project - create, list, update, delete, templates
    • [M] web apps - create, list, update, delete
    • [M] web roles - content manager, content publisher, content contributor, content reviewer
    • [M] web users - invite with role, uninvite, list users/roles
    • [S] (new) web users - change role
    • [C] has workflows configured




  • WCM Sandbox operations [M]
    • [M] sandboxes - create, list, delete, typed (staging, author, worflow, author workflow - also preview of each)
    • [M] list changed (new, modified, deleted) items - constrained to sub-tree (eg. web app), with or without deleted items
    • [S] list changed (new, modified, deleted) items - get difference codes
    • [M] submit all or list - eg. submit from author to staging sandbox, constrained to sub-tree (eg. web app), snapshot staging
    • [M] revert all or list - eg. undo author sandbox, constrained to sub-tree (eg. web app)
    • [S] list snapshot versions
    • [S] revert to snapshot version
    • [C] (new) delete snapshot version - eg. purge staging version




  • WCM Asset operations [M]
    • [M] assets (files, folders) - create, list, update, delete, read content, write content
    • [S] rename asset
    • [S] move, copy assets (recursive for folder)
    • [S] set/get properties
    • [S] set/get aspects
    • [S] bulk import - eg. via ZIP file
    • [C] list asset versions - eg. list file version history
    • [C] revert to asset version




  • WCM Content Locking operations [S]
    • [M] file locking in context of web project - implicit operations (via other services) - taking, removing, modifying locks - for backwards compatibility
    • [S] file locking in context of web project - explicit operations - get lock status (is locked, locked by), force unlock




  • WCM Deployment opertations [C]
    • [S] deployment targets - CRUD operations for configuring in a web project
    • [S] deployment reports - list




  • WCM Workflow operations [C]
    • [C] submit to workflow - submit assets to workflow -> sandbox service
    • [C] has workflow - has [web project / forms] configured workflows -> web project service
    • [C] is asset associated with active (in-flight) workflow -> asset service
    • [C] workflow config - CRUD operations for configuring in a web project
    • [C] manage active workflows - associated with a web project




  • WCM Content Launch / Content Expiration operations [C]
    • [C] content launch - set content launch (timed submission), process pending submissions
    • [C] content expiration - requires workflow - set content expiration, process expired content - route expired content for review (via author workflow)




  • Web Forms [C] - will also relate to new Forms Service
    • [C] web form definitions - available to web projects
    • [C] web form config - CRUD operations for configuring in a web project
    • [C] regenerate renditions




  • Link Validation [W] - pending link validation requirements, currently requires virtualization server
    • [W] check links (eg. HTML tags - anchor, image) for sandbox
    • [W] check links (eg. HTML tags - anchor, image) during submit - requires workflow
    • [W] check XML links - (new) pending XML link validation requirements




  • Event/Policy Triggers [C] - (new) pending event/policy requirements
    • [C] on content update
    • [C] others ...

Example Scenarios


The following scenarios should, initially, be backwards compatible with the existing client interfaces, such as the JSF client and CIFS/FTP network protocols.


[M] Scenario 1


As admin


  • authenticate as an admin
  • admin can create web project, with implied:
    • create of ROOT web app
    • create of staging sandbox
    • create of author sandbox (ie. for web project creator)
    • admins are implicit content managers, even if they are not explicit web users
  • content manager can uninvite user from web project, with implied:
    • cascade delete of author sandboxes (and associated author preview sandbox)
  • content manager can delete web project, with implied:
    • cascade delete of ROOT web app, staging sandbox, author sandboxes - including all sandbox assets

As content manager


  • authenticate as admin or a web project user with content manager role
  • content manager can invite user to web project with a specified role, with implied:
    • create of author sandbox (and associated author preview sandbox) for web user
    • web user has one role per web project (ie. content manager, content publisher, content contributor or content reviewer)
  • content manager can invite multiple users and groups to web project with a specified role for each user and group, with implied:
    • flatten of groups into set of users
    • create of author sandbox (and associated author preview sandbox) for each web user
  • content manager user can list web users (with their roles) for a web project
  • content manager can list web projects for a specified user

As web user


  • authenticate web user with any role
  • list web projects for current user
  • get author sandbox
  • manage files within author sandbox - create folder, delete folder, add file, get file, update file, delete file or folder, list files and folders
  • get changed list of items between author sandbox and staging sandbox - ie. new, modified, deleted
  • submit from author sandbox to staging sandbox - either all items or selected list of items
  • revert (undo) items in author sandbox - either all items or selected list of items

[S] Scenario 2


  • TODO - as above, plus ...
    • rename file or folder
    • list staging snapshot versions
    • revert staging snapshot (add new version based on previous version)
    • content locking
    • access via CIFS/FTP
    • bulk import (of ZIP file)

Summary





 
 



 
 



 
 



 
 



 
 


ServiceRelease
WCM Web Project Service3.1
WCM Sandbox Service3.1
WCM Asset Service3.1
WCM Preview URI Service3.2

Detailed Scoping


Services


NOTE - scoping and API definitions (REST, JavaScript and/or Java) are subject to change





 
 
 



 
 
 



 
 
 




 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 


ServiceInterfaces/BindingsTarget

WCM Web Project Service


 

  • create web project
  • create web project from web project template (Java only)
  • get web project
  • update web project
  • delete web project
  • list web projects
  • create web app (Java only)
  • list web apps (Java only)
  • delete web app (***) (Java only)
  • invite user
  • invite users / groups (flattened) (Java)
  • uninvite user (***)
  • list user memberships
 
3.1 (preview in Labs 3c, 3d)

WCM Web Project Service


 

  • change role
 
TBC

WCM Sandbox Service


 

  • create author sandbox
  • delete [author] sandbox
  • list sandboxes
  • list changed assets
  • submit assets [from author to staging]
  • revert (undo) assets [in author] (Java only)
  • list [staging] snapshot versions (Java only)
  • revert [staging] to snapshot version (Java only)
 
3.1 (preview in Labs 3c, 3d)

WCM Sandbox Service


 

  • revert (undo) assets [in author]
  • list [staging] snapshot versions
  • revert [staging] to snapshot version
 
3.1 (preview in Labs 3d)

WCM Sandbox Service


 

  • delete [staging] snapshot version (***)
 
TBC

WCM Asset Service


 

  • create asset (file or folder, optionally with properties)
  • get content writer (to enable file upload) (Java only)
  • get content reader (to enable file download) (Java only)
  • content URL (to enable file download) (REST only)
  • get asset
  • delete asset
  • set/get/update asset properties
  • add/remove/has aspect, get aspects (Java only)
  • list assets (in a folder)
  • bulk import (from zip-format file)
  • rename asset
  • move, copy asset (recursive for folder)
  • revert (undo) asset (JS, REST - in Java, can use sandbox revert list with 1 asset)
  • get lock/owner, has lock access
 
3.1 (preview in Labs 3d)

WCM Asset Service


 

  • list asset versions (*** JSF exposes for files, not folders)
  • revert asset to earlier asset version
  • force unlock [content manager only]
  • copy to another sandbox (including to another web project) (*** eg. as per JSF clipboard/shelf)
  • ...
 

TBC

WCM Preview URI Service


 

 
3.2 (preview in Labs 3.2 final)

WCM Deployment Service


 

  • web project config of deployment servers
  • ...
  • ...
 
Future

WCM Workflow Service


 

  • web project config of submit workflow
  • sandbox submit to workflow
  • ...
  • ...
 
Future

WCM Forms Service


 

  • ...
  • ...
 
Future

(***) new features, added for completeness although not directly exposed by the current JSF client

For work-in-progress, refer to Design Notes


Client Refactor


NOTE - scoping is subject to change - related to AVM 'clients' that are WCM-aware





 
 
 



 
 
 



 
 
 




 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 



 
 
 


WCM/AVM ClientFunctionsTarget
WCM web client
  • create, retrieve (get, list), update, delete web project (not including WCM forms, WCM workflow)
  • invite users / groups, list users & roles
  • create webapp
  • list sandboxes, delete sandbox
  • submit (to staging), revert (undo)
 
3.1 (preview in Labs 3c, 3d)
WCM web client
  • change role
 
TBC
WCM web client
  • WCM forms
  • WCM workflow
  • WCM deployment
 
Future
Existing 'AVM' JavaScript API
  • AVM (JScript, Template) - use WCM Sandbox service (not preview yet, see 3.2)
 
3.1 (preview in Labs 3c, 3d)
Existing 'AVM' JavaScript API
  • AVM (JScript, Template) - use WCM Preview URI Service
 
3.2 (preview in Labs 3.2 final)
Existing 'AVM' JavaScript API
  • AVMNode
 
TBC
WCM / AVM Actions - examples
  • undo list of (or all) changed assets in sandbox (WCMSandboxUndoAction)
  • submit list of (or all) changed assets from sandbox to staging (WCMSandboxSubmitAction)
  • revert sandbox to earlier snapshot version (WCMSandboxRevertSnapshotAction)
 
3.1.2
WCM / AVM Actions
  • revert asset to earlier asset version (AVMRevertToVersionAction)
  • submit sandbox list (new)
  • bulk import (new)
  • deploy web project (AVMDeployWebsiteAction)
  • ... (review others) ...
 
Future
CIFS / FTP
  • ...
 
Future
Indexer
  • get store type
 
Future
Other (generic AVM clients)
  • Admin Node Browser
  • AVM Console Interpreter
 
Not planned

Attachments

    Outcomes