SlideShare uma empresa Scribd logo
1 de 63
Integrating Alfresco with portals
6th November 2013
Piergiorgio Lucidi

#SummitNow
Piergiorgio Lucidi
•
•
•
•
•
•

Open Source ECM Specialist at Sourcesense
Alfresco Trainer / Engineer / Wiki Gardener / Star
Alfresco Global Moderator of the italian forum
Author / Technical Reviewer at Packt Publishing
PMC Member / Mentor at Apache Software
Foundation
Project Leader in the JBoss Community

#SummitNow
#SummitNow
Overview
• Introducing portals
• Introducing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Overview
• Introducing portals
• Introducing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Introducing portals
An overview about the basics and the
standards of portals

#SummitNow
#SummitNow
What is a portal?
A portal is a web application focused on
• Creating dynamic website
• Page-centric approach
• Aggregation of contents
• Enterprise Services

#SummitNow
#SummitNow
What is a portal?
A portal is a web application focused on
• Creating dynamic website
• user oriented and extremely dynamic fragments

• Page-centric approach
• Aggregation of contents
• Enterprise Services

#SummitNow
#SummitNow
What is a portal?
A portal is a web application focused on
• Creating dynamic website
• Page-centric approach
• Each page hosts presentation layer apps
• Portlets
• Apps (wrapping using bridge framework)
• Gadgets (based on XML and JavaScript)

• Aggregation of contents
• Enterprise Services
#SummitNow
#SummitNow
What is a portal?
A portal is a web application focused on
• Creating dynamic website
• Page-centric approach
• Aggregation of contents
• Enterprise Services

#SummitNow
#SummitNow
What is a portal?
A portal is a web application focused on
• Creating dynamic website
• Page-centric approach
• Aggregation of contents
• Enterprise Services
•
•
•
•
•

Authentication
Authorization
Personalization
Export / Import
APIs for integrations

#SummitNow
#SummitNow
What is a portal?

#SummitNow
#SummitNow
What is a portal?
A portlet is an application that contains specific
business logic
• Provides a fragment of content
• The output depends on user permissions
• Potentially the fragment could be dynamic for each user

• A permission can be given for
• The entire portal
• Page
• Portlet

#SummitNow
#SummitNow
What is a portal?
An app is a wrapper of a portlet and it can be
implemented using
•
•
•
•
•
•
•

Pure Java
JSF
Spring MVC
Spring WebScripts
GWT
Struts
So on…
#SummitNow
#SummitNow
What is a portal? – User roles

#SummitNow
#SummitNow
What is a portlet container?
A portlet container is a runtime framework
• Manages the execution of portlet requests
• Provides user session mechanism
• Check permissions for different scope levels
• Portal
• Page
• Portlet
• Implements JSR-286 Java Portlet Specification 2.0
• Can be embedded in any JEE application
• Portlet requests can be executed against non-web contexts
• The web context is a detail!
#SummitNow
#SummitNow
What is a portlet container?

Portal A

Portal B

Portal C

• Portlet 1
• Portlet 2
• Portlet 3

• Portlet 4
• Portlet 5

• Portlet 6

#SummitNow
#SummitNow
Why use a portal?
You may want a portal for
• Creating custom and dynamic websites
• Providing personalized contents
• Providing features for personalizing sections
• Integrating different systems with a unique frontend
• Providing valuable services for your customers/users
• Private access
• Profiled informations
• E-commerce
• Advanced editing
• Enterprise Content Management (ECM)

#SummitNow
#SummitNow
Why use a portal with Alfresco
Portal aggregates corporate apps and contents
Agile development
Decoupling responsabilities
Fragments can be managed by Alfresco
• Records Management
• Content and Document Management
• Web Publishing
• BPM
The portal is responsible for presentation
• Portlets will present contents managed by Alfresco

Portlets are based on Enterprise Java
standards!!!
#SummitNow
#SummitNow
What is a dashboard?

#SummitNow
#SummitNow
How a portal works
The portlet container (PC) retrieves the portlet deployment
descriptor (PDD) from all the applications deployed in the
Java container (JSE or JEE)

• web-app.war
• WEB-INF
• portlet.xml
• web.xml
• Deployment Descriptors (DD) are used in many
Enterprise Java components

#SummitNow
#SummitNow
Overview
• Introducing portals
• Developing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Developing standard portlets
A quick tour about how to implement
standard portlets

#SummitNow
#SummitNow
Developing standard portlets
You can use the GenericPortlet abstract
class for overriding the following methods:
•
•
•
•
•
•
•

processAction
doView
doEdit
doHelp
doHeaders
init
destroy

#SummitNow
#SummitNow
Standard portlets – Demo

#SummitNow
#SummitNow
Overview
• Introducing portals
• Developing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Portlets with Alfresco WS API
A quick tour about how to implement portlets
invoking Alfresco with Web Services API
(SOAP)

#SummitNow
#SummitNow
Web Services API - Services
•
•
•
•
•
•
•
•
•

Authentication: login and logout
Repository: query and model manipulation
Content: content manipulation
Authoring: collaborative content creation
Classification: apply classifications and categories
Access Control: roles, permissions & ownership
Action: manages actions and rules
Administration: user management, export & import
Dictionary: model descriptions

#SummitNow
#SummitNow
Content Manipulation Language

#SummitNow
#SummitNow
Web Services API - Search
The only query language supported is Lucene
Notice that use have to use the RepositoryService to search contents:
there is no SearchService -> Query method

#SummitNow
#SummitNow
Search portlet – iterating results

#SummitNow
#SummitNow
Search portlet

#SummitNow
#SummitNow
Overview
• Introducing portals
• Developing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Portlets with Spring WebScripts
A quick tour about how to implement portlets
exposing your WebScripts in the portlet
descriptor of Alfresco

#SummitNow
#SummitNow
Spring WebScripts
Alfresco Web Scripts use
a lightweight Model View
Controller (MVC) style
framework.

#SummitNow
#SummitNow
Components of a WebScript
There are 3 main components of a web script:
• Descriptor
• Controller (optional if exists an FTL template)
• JavaScript server side (Mozilla Rhino)
• Subgroup of the Java API
• You can extend it!!!
• Template
• FTL (optional if request and response are managed
by Java)
• Java Action (AbstractWebScript)
#SummitNow
#SummitNow
WebScript Descriptor
The descriptor file uses the following naming convention
which provides additional information to Alfresco:

helloworld.get.desc.xml
The content of the descriptor file:

#SummitNow
#SummitNow
WebScript Controller
The controller script is an optional component
written in JavaScript or Java, which does the
actual work.

#SummitNow
#SummitNow
WebScript Template
The WebScript template is the output template for
displaying the content to user agents or
applications.
The output format can be based on many formats:
• HTML
• ATOM
• XML
• RSS
#SummitNow
#SummitNow
WebScriptPortlet
Wrapper for exposing a WebScript as a portlet, you need to
set these two parameters:
• scriptUrl
• The URL exposed by the involved WebScript
• Authenticator factory
• jsr168.webclient
• Based on cookie
• Jsr168
• Based on the portal session

#SummitNow
#SummitNow
WebScriptPortlet - Descriptor

#SummitNow
#SummitNow
WebScriptPortlet – Search
The search object is exposed for executing queries:
For XPath expression use ISO9075 to encode paths
var luceneQuery =
“PATH:”/app:company_home/cm:”+search.ISO9075(“Books
tore orders”)+”/*””;
var ordersResults =
search.luceneSearch(luceneQuery);
model.results = ordersResults;

#SummitNow
#SummitNow
WebScriptPortlet – Get details
var id = args.id;
if(id!=null && id!=“”){
var node = utils.getNodeFromString(id);
model.node = node;
} else {
status.code = 400;
status.message = “id must be not null";
status.redirect = true;
}
#SummitNow
#SummitNow
WebScriptPortlet – Demo

#SummitNow
#SummitNow
Overview
• Introducing portals
• Developing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Portlets with OpenCMIS
A quick tour about how to implement portlets
using OpenCMIS

#SummitNow
#SummitNow
CMIS – Domain Model
Data Model
Repository
Object
CMIS Query

Associated services
Common elements
Repository services
Navigation services
Object Services
Multi-filing services
Discovery, versioning, relationship, policy and ACL services
#SummitNow
#SummitNow
OpenCMIS – Repository
• Contains set of data entities
• getRepositories() for given endpoint
• get repository capabilities

#SummitNow
#SummitNow
OpenCMIS – Object
• Used to model typed
objects
• Four base types:
• Document Object
• Folder Object
• Relationship object
• Policy object
• Object ID
• Object properties
• Version, ACL

• Content Stream
• Renditions

#SummitNow
#SummitNow
OpenCMIS – Services
Repository services: used to discover information about the
repository
Navigation services: used to traverse the CMIS repository folder
hierarchy
Objects services: used to manipulate the repository contents with a
CRUD interface
Discovery services: used to search for query-able objects within
repository

#SummitNow
#SummitNow
OpenCMIS Client API
• Client-side Java library that implements the
CMIS specification
• object-oriented way
• AtomPub or SOAP protocols
• Binding selected with getRepositories()
method on SessionFactory object

#SummitNow
#SummitNow
OpenCMIS Client API AtomPub
//AtomPub binding

// default factory implementation
SessionFactory factory = SessionFactoryImpl.newInstance();
Map<String, String> parameter = new HashMap<String, String>();
// user credentials
parameter.put(SessionParameter.USER, "admin");
parameter.put(SessionParameter.PASSWORD, "admin");
// connection settings
parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
parameter.put(SessionParameter. ATOMPUB_URL,
"http://cmis.alfresco.com/cmisatom");
parameter.put(SessionParameter.REPOSITORY_ID,
"84ccfe80-b325-4d79-ab4d-080a4bdd045b")
// create session
Session session = factory.createSession(parameter);

#SummitNow
#SummitNow
OpenCMIS Client API - Search
String myType = "my:documentType";
// get the query name of cmis:objectId
ObjectType type = session.getTypeDefinition(myType);
PropertyDefinition<?> objectIdPropDef =
type.getPropertyDefinitions().get(PropertyIds.OBJECT_ID);
String objectIdQueryName = objectIdPropDef.getQueryName();
String queryString = "SELECT " + objectIdQueryName + " FROM " + type.getQueryName();
// execute query
ItemIterable<QueryResult> results = session.query(queryString, false);
for (QueryResult qResult : results) {
String objectId = qResult.getPropertyValueByQueryName(objectIdQueryName);
Document doc = (Document) session.getObject(session.createObjectId(objectId));
}

#SummitNow
#SummitNow
OpenCMIS - Demo

#SummitNow
#SummitNow
Overview
• Introducing portals
• Developing standard portlets
• Implementing portlets
• Alfresco Web Services API
• Spring WebScripts
• OpenCMIS
• Spring Surf

#SummitNow
#SummitNow
Portlets with Spring Surf
A quick tour about how to implement portlets
exposing your Surf components

#SummitNow
#SummitNow
Spring Surf
• MVC framework
• Scriptable
• RESTful
• Page-centric
• Page
• Components
• Embeds Spring WebScripts

#SummitNow
#SummitNow
Spring Surf – Process loading

#SummitNow
#SummitNow
Spring Surf – Regions

#SummitNow
#SummitNow
ProxyPortlet
• Allows to expose as a portlet any bits of Share
• scriptUrl
• Page
• Component / WebScript
• Each WebScript inside Share is a Presentation
WebScript that needs to invoke against the
repo:
• a Data WebScript
• CMIS AtomPub binding
#SummitNow
#SummitNow
ProxyPortlet – How it works
1.
2.
3.
4.
5.

6.
7.
8.
9.

The portal starts to render the portlet page
Share starts to render the Surf page (only 1 component)
Share starts to render the component
Share invokes Alfresco using REST calls
Share connector get the user session from
request.getRemoteUser() and set the user as authenticated in
Alfresco (external authentication)
Alfresco executes the WebScripts
The returned JSON will be parsed by Share to render the FTL
template for the portlet
Share ends to render the Surf page
The portal finishes to render the portlet
#SummitNow
#SummitNow
ProxyPortlet – Search

#SummitNow
#SummitNow
Thank you
@pjlucidi
p.lucidi@sourcesense.com

#SummitNow
#SummitNow
#SummitNow

Mais conteúdo relacionado

Mais procurados

They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
Tarabica 2019 - Migration from ASP.NET MVC to ASP.NET Core
Tarabica 2019 - Migration from ASP.NET MVC to ASP.NET CoreTarabica 2019 - Migration from ASP.NET MVC to ASP.NET Core
Tarabica 2019 - Migration from ASP.NET MVC to ASP.NET CoreMiroslav Popovic
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST APIJ V
 
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Restlet
 
12-factor-jruby
12-factor-jruby12-factor-jruby
12-factor-jrubyJoe Kutner
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJoe Kutner
 
Alfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Software
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Martin Bergljung
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkJ V
 
Introduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function InterfaceIntroduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function InterfaceOleksii Sukhovii
 
Alfresco - You probably didn't know that
Alfresco - You probably didn't know thatAlfresco - You probably didn't know that
Alfresco - You probably didn't know thatDavid Ciamberlano
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices developmentChavdar Baikov
 
JSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfacesJSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfacesStrannik_2013
 
Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...
Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...
Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...Sravan Lingam
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
Process Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootProcess Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootChavdar Baikov
 
Asp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework CoreAsp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework Coremohamed elshafey
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXSergei Martens
 
Mule soft meetup warsaw november 13th, 2019
Mule soft meetup   warsaw november 13th, 2019Mule soft meetup   warsaw november 13th, 2019
Mule soft meetup warsaw november 13th, 2019Patryk Bandurski
 

Mais procurados (20)

They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
Tarabica 2019 - Migration from ASP.NET MVC to ASP.NET Core
Tarabica 2019 - Migration from ASP.NET MVC to ASP.NET CoreTarabica 2019 - Migration from ASP.NET MVC to ASP.NET Core
Tarabica 2019 - Migration from ASP.NET MVC to ASP.NET Core
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST API
 
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
 
12-factor-jruby
12-factor-jruby12-factor-jruby
12-factor-jruby
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor App
 
Alfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo Data
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you think
 
Introduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function InterfaceIntroduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function Interface
 
Alfresco - You probably didn't know that
Alfresco - You probably didn't know thatAlfresco - You probably didn't know that
Alfresco - You probably didn't know that
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
 
JSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfacesJSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfaces
 
Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...
Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...
Hyderabad MuleSoft Meetup - Anypoint Studio Tips and Tricks & Salesforce Comp...
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
Process Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootProcess Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring Boot
 
Asp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework CoreAsp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework Core
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEX
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Mule soft meetup warsaw november 13th, 2019
Mule soft meetup   warsaw november 13th, 2019Mule soft meetup   warsaw november 13th, 2019
Mule soft meetup warsaw november 13th, 2019
 

Destaque

Alfresco CMS (ECMS) - Businessware Technologies
Alfresco CMS (ECMS) - Businessware TechnologiesAlfresco CMS (ECMS) - Businessware Technologies
Alfresco CMS (ECMS) - Businessware Technologiesasimzaman
 
Using alfresco share as a corporate intranet
Using alfresco share as a corporate intranetUsing alfresco share as a corporate intranet
Using alfresco share as a corporate intranetAlfresco Software
 
Why do you need a portal?
Why do you need a portal?Why do you need a portal?
Why do you need a portal?Ether Solutions
 
Really Simple Document Management with Alfresco
Really Simple Document Management with AlfrescoReally Simple Document Management with Alfresco
Really Simple Document Management with AlfrescoAlfresco Software
 
Getting Started with CMIS
Getting Started with CMISGetting Started with CMIS
Getting Started with CMISJeff Potts
 
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco Software
 

Destaque (8)

Apache ManifoldCF
Apache ManifoldCFApache ManifoldCF
Apache ManifoldCF
 
Alfresco CMS (ECMS) - Businessware Technologies
Alfresco CMS (ECMS) - Businessware TechnologiesAlfresco CMS (ECMS) - Businessware Technologies
Alfresco CMS (ECMS) - Businessware Technologies
 
Using alfresco share as a corporate intranet
Using alfresco share as a corporate intranetUsing alfresco share as a corporate intranet
Using alfresco share as a corporate intranet
 
Why do you need a portal?
Why do you need a portal?Why do you need a portal?
Why do you need a portal?
 
Really Simple Document Management with Alfresco
Really Simple Document Management with AlfrescoReally Simple Document Management with Alfresco
Really Simple Document Management with Alfresco
 
Alfresco 5.0 features
Alfresco 5.0 featuresAlfresco 5.0 features
Alfresco 5.0 features
 
Getting Started with CMIS
Getting Started with CMISGetting Started with CMIS
Getting Started with CMIS
 
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
 

Semelhante a Integrating Alfresco with Portals

API Gateways are going through an identity crisis
API Gateways are going through an identity crisisAPI Gateways are going through an identity crisis
API Gateways are going through an identity crisisChristian Posta
 
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Perficient, Inc.
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessibleVictor Trakhtenberg
 
Extend soa with api management spoug- Madrid
Extend soa with api management   spoug- MadridExtend soa with api management   spoug- Madrid
Extend soa with api management spoug- MadridVinay Kumar
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
Create Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutesCreate Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutesJitendra Zaa
 
Webcenter Portlal training...
Webcenter Portlal training...Webcenter Portlal training...
Webcenter Portlal training...Vinay Kumar
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsLewis Ardern
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfAlfresco Software
 
Integrate any Angular Project into WebSphere Portal
Integrate any Angular Project into WebSphere PortalIntegrate any Angular Project into WebSphere Portal
Integrate any Angular Project into WebSphere PortalHimanshu Mendiratta
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Henry S
 
Forced Evolution: Shopify's Journey to Kubernetes
Forced Evolution: Shopify's Journey to KubernetesForced Evolution: Shopify's Journey to Kubernetes
Forced Evolution: Shopify's Journey to KubernetesC4Media
 
CodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comCodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comChristopher Cubos
 
Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Nuwan Bandara
 
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...Callon Campbell
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
 
RESTful web APIs (build, document, manage)
RESTful web APIs (build, document, manage)RESTful web APIs (build, document, manage)
RESTful web APIs (build, document, manage)Cisco DevNet
 

Semelhante a Integrating Alfresco with Portals (20)

API Gateways are going through an identity crisis
API Gateways are going through an identity crisisAPI Gateways are going through an identity crisis
API Gateways are going through an identity crisis
 
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
 
Extend soa with api management spoug- Madrid
Extend soa with api management   spoug- MadridExtend soa with api management   spoug- Madrid
Extend soa with api management spoug- Madrid
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Create Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutesCreate Salesforce online IDE in 30 minutes
Create Salesforce online IDE in 30 minutes
 
Webcenter Portlal training...
Webcenter Portlal training...Webcenter Portlal training...
Webcenter Portlal training...
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript Applications
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring Surf
 
Integrate any Angular Project into WebSphere Portal
Integrate any Angular Project into WebSphere PortalIntegrate any Angular Project into WebSphere Portal
Integrate any Angular Project into WebSphere Portal
 
Introduction to Flask Micro Framework
Introduction to Flask Micro FrameworkIntroduction to Flask Micro Framework
Introduction to Flask Micro Framework
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Forced Evolution: Shopify's Journey to Kubernetes
Forced Evolution: Shopify's Journey to KubernetesForced Evolution: Shopify's Journey to Kubernetes
Forced Evolution: Shopify's Journey to Kubernetes
 
CodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comCodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.com
 
API Conference 2021
API Conference 2021API Conference 2021
API Conference 2021
 
Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Shindig Apachecon Asia 09
Shindig Apachecon Asia 09
 
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
RESTful web APIs (build, document, manage)
RESTful web APIs (build, document, manage)RESTful web APIs (build, document, manage)
RESTful web APIs (build, document, manage)
 
Web APIs
Web APIsWeb APIs
Web APIs
 

Mais de Piergiorgio Lucidi

Embracing InnerSource for your adaptive Digital Transformation
Embracing InnerSource for your adaptive Digital TransformationEmbracing InnerSource for your adaptive Digital Transformation
Embracing InnerSource for your adaptive Digital TransformationPiergiorgio Lucidi
 
Introducing the ASF at Microsoft Build 2020 - Italian Dev Community
Introducing the ASF at Microsoft Build 2020 - Italian Dev Community Introducing the ASF at Microsoft Build 2020 - Italian Dev Community
Introducing the ASF at Microsoft Build 2020 - Italian Dev Community Piergiorgio Lucidi
 
Smart Alfresco ECM Program Strategy for Your New Success Story
Smart Alfresco ECM Program Strategy for Your New Success StorySmart Alfresco ECM Program Strategy for Your New Success Story
Smart Alfresco ECM Program Strategy for Your New Success StoryPiergiorgio Lucidi
 
Design your own BPM Program Strategy with Alfresco Process Services
Design your own BPM Program Strategy with Alfresco Process ServicesDesign your own BPM Program Strategy with Alfresco Process Services
Design your own BPM Program Strategy with Alfresco Process ServicesPiergiorgio Lucidi
 
Smart Content Migration using Apache ManifoldCF
Smart Content Migration using Apache ManifoldCFSmart Content Migration using Apache ManifoldCF
Smart Content Migration using Apache ManifoldCFPiergiorgio Lucidi
 
Alfresco Process Services Live Demo @ Red Hat Open Source Day 2017 Italy
Alfresco Process Services Live Demo @ Red Hat Open Source Day 2017 ItalyAlfresco Process Services Live Demo @ Red Hat Open Source Day 2017 Italy
Alfresco Process Services Live Demo @ Red Hat Open Source Day 2017 ItalyPiergiorgio Lucidi
 
The Journey of Apache ManifoldCF: Learning from ASF's Successes
The Journey of Apache ManifoldCF: Learning from ASF's SuccessesThe Journey of Apache ManifoldCF: Learning from ASF's Successes
The Journey of Apache ManifoldCF: Learning from ASF's SuccessesPiergiorgio Lucidi
 
Alfresco Day Roma 2015 - Sourcesense
Alfresco Day Roma 2015 - SourcesenseAlfresco Day Roma 2015 - Sourcesense
Alfresco Day Roma 2015 - SourcesensePiergiorgio Lucidi
 
The ECM world from the point of view of Alfresco - Linux Day 2013 - Rome
The ECM world from the point of view of Alfresco - Linux Day 2013 - RomeThe ECM world from the point of view of Alfresco - Linux Day 2013 - Rome
The ECM world from the point of view of Alfresco - Linux Day 2013 - RomePiergiorgio Lucidi
 

Mais de Piergiorgio Lucidi (12)

Embracing InnerSource for your adaptive Digital Transformation
Embracing InnerSource for your adaptive Digital TransformationEmbracing InnerSource for your adaptive Digital Transformation
Embracing InnerSource for your adaptive Digital Transformation
 
Introducing the ASF at Microsoft Build 2020 - Italian Dev Community
Introducing the ASF at Microsoft Build 2020 - Italian Dev Community Introducing the ASF at Microsoft Build 2020 - Italian Dev Community
Introducing the ASF at Microsoft Build 2020 - Italian Dev Community
 
Smart Alfresco ECM Program Strategy for Your New Success Story
Smart Alfresco ECM Program Strategy for Your New Success StorySmart Alfresco ECM Program Strategy for Your New Success Story
Smart Alfresco ECM Program Strategy for Your New Success Story
 
Design your own BPM Program Strategy with Alfresco Process Services
Design your own BPM Program Strategy with Alfresco Process ServicesDesign your own BPM Program Strategy with Alfresco Process Services
Design your own BPM Program Strategy with Alfresco Process Services
 
Smart Content Migration using Apache ManifoldCF
Smart Content Migration using Apache ManifoldCFSmart Content Migration using Apache ManifoldCF
Smart Content Migration using Apache ManifoldCF
 
Alfresco Process Services Live Demo @ Red Hat Open Source Day 2017 Italy
Alfresco Process Services Live Demo @ Red Hat Open Source Day 2017 ItalyAlfresco Process Services Live Demo @ Red Hat Open Source Day 2017 Italy
Alfresco Process Services Live Demo @ Red Hat Open Source Day 2017 Italy
 
The Journey of Apache ManifoldCF: Learning from ASF's Successes
The Journey of Apache ManifoldCF: Learning from ASF's SuccessesThe Journey of Apache ManifoldCF: Learning from ASF's Successes
The Journey of Apache ManifoldCF: Learning from ASF's Successes
 
Alfresco Day Roma 2015 - Sourcesense
Alfresco Day Roma 2015 - SourcesenseAlfresco Day Roma 2015 - Sourcesense
Alfresco Day Roma 2015 - Sourcesense
 
The ECM world from the point of view of Alfresco - Linux Day 2013 - Rome
The ECM world from the point of view of Alfresco - Linux Day 2013 - RomeThe ECM world from the point of view of Alfresco - Linux Day 2013 - Rome
The ECM world from the point of view of Alfresco - Linux Day 2013 - Rome
 
Hippo CMS - A first look
Hippo CMS - A first lookHippo CMS - A first look
Hippo CMS - A first look
 
Spring Ldap
Spring LdapSpring Ldap
Spring Ldap
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 

Último (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 

Integrating Alfresco with Portals

  • 1. Integrating Alfresco with portals 6th November 2013 Piergiorgio Lucidi #SummitNow
  • 2. Piergiorgio Lucidi • • • • • • Open Source ECM Specialist at Sourcesense Alfresco Trainer / Engineer / Wiki Gardener / Star Alfresco Global Moderator of the italian forum Author / Technical Reviewer at Packt Publishing PMC Member / Mentor at Apache Software Foundation Project Leader in the JBoss Community #SummitNow #SummitNow
  • 3. Overview • Introducing portals • Introducing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 4. Overview • Introducing portals • Introducing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 5. Introducing portals An overview about the basics and the standards of portals #SummitNow #SummitNow
  • 6. What is a portal? A portal is a web application focused on • Creating dynamic website • Page-centric approach • Aggregation of contents • Enterprise Services #SummitNow #SummitNow
  • 7. What is a portal? A portal is a web application focused on • Creating dynamic website • user oriented and extremely dynamic fragments • Page-centric approach • Aggregation of contents • Enterprise Services #SummitNow #SummitNow
  • 8. What is a portal? A portal is a web application focused on • Creating dynamic website • Page-centric approach • Each page hosts presentation layer apps • Portlets • Apps (wrapping using bridge framework) • Gadgets (based on XML and JavaScript) • Aggregation of contents • Enterprise Services #SummitNow #SummitNow
  • 9. What is a portal? A portal is a web application focused on • Creating dynamic website • Page-centric approach • Aggregation of contents • Enterprise Services #SummitNow #SummitNow
  • 10. What is a portal? A portal is a web application focused on • Creating dynamic website • Page-centric approach • Aggregation of contents • Enterprise Services • • • • • Authentication Authorization Personalization Export / Import APIs for integrations #SummitNow #SummitNow
  • 11. What is a portal? #SummitNow #SummitNow
  • 12. What is a portal? A portlet is an application that contains specific business logic • Provides a fragment of content • The output depends on user permissions • Potentially the fragment could be dynamic for each user • A permission can be given for • The entire portal • Page • Portlet #SummitNow #SummitNow
  • 13. What is a portal? An app is a wrapper of a portlet and it can be implemented using • • • • • • • Pure Java JSF Spring MVC Spring WebScripts GWT Struts So on… #SummitNow #SummitNow
  • 14. What is a portal? – User roles #SummitNow #SummitNow
  • 15. What is a portlet container? A portlet container is a runtime framework • Manages the execution of portlet requests • Provides user session mechanism • Check permissions for different scope levels • Portal • Page • Portlet • Implements JSR-286 Java Portlet Specification 2.0 • Can be embedded in any JEE application • Portlet requests can be executed against non-web contexts • The web context is a detail! #SummitNow #SummitNow
  • 16. What is a portlet container? Portal A Portal B Portal C • Portlet 1 • Portlet 2 • Portlet 3 • Portlet 4 • Portlet 5 • Portlet 6 #SummitNow #SummitNow
  • 17. Why use a portal? You may want a portal for • Creating custom and dynamic websites • Providing personalized contents • Providing features for personalizing sections • Integrating different systems with a unique frontend • Providing valuable services for your customers/users • Private access • Profiled informations • E-commerce • Advanced editing • Enterprise Content Management (ECM) #SummitNow #SummitNow
  • 18. Why use a portal with Alfresco Portal aggregates corporate apps and contents Agile development Decoupling responsabilities Fragments can be managed by Alfresco • Records Management • Content and Document Management • Web Publishing • BPM The portal is responsible for presentation • Portlets will present contents managed by Alfresco Portlets are based on Enterprise Java standards!!! #SummitNow #SummitNow
  • 19. What is a dashboard? #SummitNow #SummitNow
  • 20. How a portal works The portlet container (PC) retrieves the portlet deployment descriptor (PDD) from all the applications deployed in the Java container (JSE or JEE) • web-app.war • WEB-INF • portlet.xml • web.xml • Deployment Descriptors (DD) are used in many Enterprise Java components #SummitNow #SummitNow
  • 21. Overview • Introducing portals • Developing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 22. Developing standard portlets A quick tour about how to implement standard portlets #SummitNow #SummitNow
  • 23. Developing standard portlets You can use the GenericPortlet abstract class for overriding the following methods: • • • • • • • processAction doView doEdit doHelp doHeaders init destroy #SummitNow #SummitNow
  • 24. Standard portlets – Demo #SummitNow #SummitNow
  • 25. Overview • Introducing portals • Developing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 26. Portlets with Alfresco WS API A quick tour about how to implement portlets invoking Alfresco with Web Services API (SOAP) #SummitNow #SummitNow
  • 27. Web Services API - Services • • • • • • • • • Authentication: login and logout Repository: query and model manipulation Content: content manipulation Authoring: collaborative content creation Classification: apply classifications and categories Access Control: roles, permissions & ownership Action: manages actions and rules Administration: user management, export & import Dictionary: model descriptions #SummitNow #SummitNow
  • 29. Web Services API - Search The only query language supported is Lucene Notice that use have to use the RepositoryService to search contents: there is no SearchService -> Query method #SummitNow #SummitNow
  • 30. Search portlet – iterating results #SummitNow #SummitNow
  • 32. Overview • Introducing portals • Developing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 33. Portlets with Spring WebScripts A quick tour about how to implement portlets exposing your WebScripts in the portlet descriptor of Alfresco #SummitNow #SummitNow
  • 34. Spring WebScripts Alfresco Web Scripts use a lightweight Model View Controller (MVC) style framework. #SummitNow #SummitNow
  • 35. Components of a WebScript There are 3 main components of a web script: • Descriptor • Controller (optional if exists an FTL template) • JavaScript server side (Mozilla Rhino) • Subgroup of the Java API • You can extend it!!! • Template • FTL (optional if request and response are managed by Java) • Java Action (AbstractWebScript) #SummitNow #SummitNow
  • 36. WebScript Descriptor The descriptor file uses the following naming convention which provides additional information to Alfresco: helloworld.get.desc.xml The content of the descriptor file: #SummitNow #SummitNow
  • 37. WebScript Controller The controller script is an optional component written in JavaScript or Java, which does the actual work. #SummitNow #SummitNow
  • 38. WebScript Template The WebScript template is the output template for displaying the content to user agents or applications. The output format can be based on many formats: • HTML • ATOM • XML • RSS #SummitNow #SummitNow
  • 39. WebScriptPortlet Wrapper for exposing a WebScript as a portlet, you need to set these two parameters: • scriptUrl • The URL exposed by the involved WebScript • Authenticator factory • jsr168.webclient • Based on cookie • Jsr168 • Based on the portal session #SummitNow #SummitNow
  • 41. WebScriptPortlet – Search The search object is exposed for executing queries: For XPath expression use ISO9075 to encode paths var luceneQuery = “PATH:”/app:company_home/cm:”+search.ISO9075(“Books tore orders”)+”/*””; var ordersResults = search.luceneSearch(luceneQuery); model.results = ordersResults; #SummitNow #SummitNow
  • 42. WebScriptPortlet – Get details var id = args.id; if(id!=null && id!=“”){ var node = utils.getNodeFromString(id); model.node = node; } else { status.code = 400; status.message = “id must be not null"; status.redirect = true; } #SummitNow #SummitNow
  • 44. Overview • Introducing portals • Developing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 45. Portlets with OpenCMIS A quick tour about how to implement portlets using OpenCMIS #SummitNow #SummitNow
  • 46. CMIS – Domain Model Data Model Repository Object CMIS Query Associated services Common elements Repository services Navigation services Object Services Multi-filing services Discovery, versioning, relationship, policy and ACL services #SummitNow #SummitNow
  • 47. OpenCMIS – Repository • Contains set of data entities • getRepositories() for given endpoint • get repository capabilities #SummitNow #SummitNow
  • 48. OpenCMIS – Object • Used to model typed objects • Four base types: • Document Object • Folder Object • Relationship object • Policy object • Object ID • Object properties • Version, ACL • Content Stream • Renditions #SummitNow #SummitNow
  • 49. OpenCMIS – Services Repository services: used to discover information about the repository Navigation services: used to traverse the CMIS repository folder hierarchy Objects services: used to manipulate the repository contents with a CRUD interface Discovery services: used to search for query-able objects within repository #SummitNow #SummitNow
  • 50. OpenCMIS Client API • Client-side Java library that implements the CMIS specification • object-oriented way • AtomPub or SOAP protocols • Binding selected with getRepositories() method on SessionFactory object #SummitNow #SummitNow
  • 51. OpenCMIS Client API AtomPub //AtomPub binding // default factory implementation SessionFactory factory = SessionFactoryImpl.newInstance(); Map<String, String> parameter = new HashMap<String, String>(); // user credentials parameter.put(SessionParameter.USER, "admin"); parameter.put(SessionParameter.PASSWORD, "admin"); // connection settings parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); parameter.put(SessionParameter. ATOMPUB_URL, "http://cmis.alfresco.com/cmisatom"); parameter.put(SessionParameter.REPOSITORY_ID, "84ccfe80-b325-4d79-ab4d-080a4bdd045b") // create session Session session = factory.createSession(parameter); #SummitNow #SummitNow
  • 52. OpenCMIS Client API - Search String myType = "my:documentType"; // get the query name of cmis:objectId ObjectType type = session.getTypeDefinition(myType); PropertyDefinition<?> objectIdPropDef = type.getPropertyDefinitions().get(PropertyIds.OBJECT_ID); String objectIdQueryName = objectIdPropDef.getQueryName(); String queryString = "SELECT " + objectIdQueryName + " FROM " + type.getQueryName(); // execute query ItemIterable<QueryResult> results = session.query(queryString, false); for (QueryResult qResult : results) { String objectId = qResult.getPropertyValueByQueryName(objectIdQueryName); Document doc = (Document) session.getObject(session.createObjectId(objectId)); } #SummitNow #SummitNow
  • 54. Overview • Introducing portals • Developing standard portlets • Implementing portlets • Alfresco Web Services API • Spring WebScripts • OpenCMIS • Spring Surf #SummitNow #SummitNow
  • 55. Portlets with Spring Surf A quick tour about how to implement portlets exposing your Surf components #SummitNow #SummitNow
  • 56. Spring Surf • MVC framework • Scriptable • RESTful • Page-centric • Page • Components • Embeds Spring WebScripts #SummitNow #SummitNow
  • 57. Spring Surf – Process loading #SummitNow #SummitNow
  • 58. Spring Surf – Regions #SummitNow #SummitNow
  • 59. ProxyPortlet • Allows to expose as a portlet any bits of Share • scriptUrl • Page • Component / WebScript • Each WebScript inside Share is a Presentation WebScript that needs to invoke against the repo: • a Data WebScript • CMIS AtomPub binding #SummitNow #SummitNow
  • 60. ProxyPortlet – How it works 1. 2. 3. 4. 5. 6. 7. 8. 9. The portal starts to render the portlet page Share starts to render the Surf page (only 1 component) Share starts to render the component Share invokes Alfresco using REST calls Share connector get the user session from request.getRemoteUser() and set the user as authenticated in Alfresco (external authentication) Alfresco executes the WebScripts The returned JSON will be parsed by Share to render the FTL template for the portlet Share ends to render the Surf page The portal finishes to render the portlet #SummitNow #SummitNow