spring in alfresco ecm
DESCRIPTION
This presentation was shown at Spring Framework Meeting 2009 in Cagliari (Sardinia - Italy). http://www.jugsardegna.org/vqwiki/jsp/Wiki?27giugno2009 Abstract: Alfresco is the leading open source enterprise content management system and two of the most appreciated aspects of Alfresco are: the wide customization model and the high quality of source code. Alfresco is strongly based on Spring Framework and thanks to this adoption we can find many ways to extend and inject our components. In this presentation will be shown many ways to extend Alfresco features and interfaces using Spring application context configuration.TRANSCRIPT
Spring in Alfresco ECMA success story
About me
Open Source Product Specialistcontent managementsystem integrationweb / portal
Alfresco ECM
Certified Alfresco TrainerForum supporter (en, it)
JBoss Portal
Forum supporter
Contributions DbDep Plugin
Apache IvyApache Maven
CMIS PortletProject Leader - JBoss WikiCommitter - JBoss LabsAffiliate Partner at PacktEditor at oneOpenSource.it
Agenda
1. ECM in the real world2. Alfresco ECM3. Spring in Alfresco
ECM=Enterprise Content Management
AIIM Definition (Association for Information and Image Management)Enterprise Content Management embodies the technologies used to capture, manage, store, preserve and deliver content and documents related to organizational processes.
WikipediaA system for organizing and facilitating collaborative creation of documents and other contentAble to monitor content through its lifecycle, and track changes to content, and users of the contentSometimes a web application used for managing websites and web contentIn many cases, content management systems require special client software for editing and constructing articles
ECM architecture - step 1
ECM architecture - step 2
What is Alfresco
Centralized Repository / Services Interfaces
Alfresco Web Client (JSF Client)FTP/WebDAV/CIFS (network share)Office 2003/7 Plug-in + SharePoint ProtocolCMIS (Content Management Interoperability Services)Web Services APIJCR API
Authentication and Security
Alfresco managed accountsLDAP, OpenLDAP, Apache DS Active DirectoryKerberos
What is Alfresco
Standard JEE Applicationbased on Spring Framework
Easily Extendable FreemarkerJavaScriptWeb ServicesWeb Scripts (REST)Java APIPlug in new technology through Spring
Business Processe Orchestration
Simple WorkflowAdvanced – based on jBPM
Alfresco - software architecture
Alfresco - software architecture
Alfresco - Spring conventions
Foundation Repository ServicesPublic Services
Springbean IDs begin with uppercase letter Private Components
Springbean IDs begin with lowercase letterApplication context = Spring contextSpring AOPSpring Security (ex Acegi)
Alfresco - web.xml
Alfresco - web-application-context.xml
Alfresco - application-context.xml
Alfresco - Foundation Services APITransaction-aware (more methods invocation)A unique API defined by a Spring Context for
Application interfacesWS APICMIS APIJCR APIWebScript API
JavaScript Server Side (Mozilla Rhino)Virtual File Systems
CIFSFTPSharePoint Protocol
Alfresco - Foundation Services API
To create your own Alfresco extension get a service using ServiceRegistry provided by Alfrescouse Spring getBean() methodeach component can be injected using IoC
public setterXML bean ref
Alfresco - public-services-context.xml
Alfresco - content-services-context.xml
Alfresco - contentService (Spring bean)
Alfresco - RoutingContentService.java
Alfresco - RoutingContentService.java
Alfresco - Spring Configuration Filescustom-repository-context.xml
Alfresco - Configuration Files example
Alfresco - Configuration Files example
Alfresco - Configuration Files example
Alfresco - Spring AOP Proxies
ProxyFactoryBeandefine an array of interfaces implemented by targetdefine a list of advisors (interceptor names)
ordering is significantthe first interceptor will be the first to be able to intercept the method call
Alfresco - Spring AOP - Advisor
An advisor is based on these components:Pointcuts
WHERE Advice
ACTION
Alfresco - Spring AOP - Pointcuts
Alfresco - Spring AOP Proxies
Alfresco - Spring Security (ex Acegi)
Authentication management forLDAPHTTPNTLMX509RESTPluggable IoC XML
Alfresco - Spring Security (ex Acegi)