#SummitNow Integrating Alfresco with portals 6 th November 2013 Piergiorgio Lucidi.

Slides:



Advertisements
Similar presentations
General introduction to Web services and an implementation example
Advertisements

IBM WebSphere Portal © 2008 IBM Corporation 1 Deliver an Irresistible User Experience  Provides an interactive user experience  No programming needed,
Wesley Budziwojski Senior Architect Sun ONE Portal Server Web Services for Remote Portlets, WSRP Jun/2003.
Servlets and a little bit of Web Services Russell Beale.
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
Indianapolis Java User Group JSR-168 Portal Presentation Introduction: Kurt Desserich.
Java Portlets (JSR-168) SSE USTC Qing Ding.
Portals and portlets Sean C. Sullivan October 24, 2006 Portland Java Users Group.
Introduction to Liferay Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written.
Midwest Documentum User Group Harley-Davidson Documentum WCM 10/10/2006.
UNIT-V The MVC architecture and Struts Framework.
Sys Prog & Scripting - HW Univ1 Systems Programming & Scripting Lecture 15: PHP Introduction.
STORY TITLE 1 1 1H ‘08 Lotus Quickr 8.1 Lotus Quickr Lotus Quickr 8.2 Lotus Quickr Lotus Quickr Entry 2. UI enhancements 3. System administration.
Content Management with Apache Jackrabbit Jukka Zitting Day Software (862)
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
WaveMaker Visual AJAX Studio 4.0 Training Studio Overview.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Interoperability with CMIS and Apache Chemistry
Apache Chemistry face-to-face meeting April 2010.
CS378 - Mobile Computing Web - WebView and Web Services.
Indianapolis Java User Group Portal Presentation - Part 2 Introduction: Kurt Desserich.
Introducing CMIS David Caruana & Michael Farman 25th September 2008.
© 2006 IBM Corporation IBM WebSphere Portlet Factory Architecture.
1 Accelerated Web Development Course JavaScript and Client side programming Day 2 Rich Roth On The Net
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
1 ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 1 Building Portlets with ColdFusion Pete Freitag Foundeo, Inc.
Presentation. Recap A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer.
Peter Laird. | 1 Building Dynamic Google Gadgets in Java Peter Laird Managing Architect WebLogic Portal BEA Systems.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
ISMT E-200: Trends in Enterprise Information Systems Project: GLOCO – Integrated Corporate Portal Part 2 Technical Specification Team Members: Joyce Torres.
ISMT E-200: Trends in Enterprise Information Systems Project: GLOCO – Integrated Corporate Portal Part 2 Technical Specification Team Members: Joyce Torres.
Content Repositories with CMIS and Apache Chemistry Stephan Klevenz, SAP AG November 2011.
GLOCO – Integrated Corporate Portal Part 2 - Technical Specification Presented by Team 3 1 Team 3 Members: Joyce Torres Kenneth Kittredge Pamela Fisher.
.  A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate.  Taken advantage of Spring’s multi layer injection.
Working with Feature Services Gary MacDougall Russell Brennan.
Geneva, 2nd Tutorial for Health e-Child Project, Service creation in Genius Web Portal Nicola Venuti NICE srl Geneva, , 2nd.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
Microsoft ® Official Course Developing a Publishing Site for Web Content Microsoft SharePoint 2013 SharePoint Practice.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
ICM – API Server & Forms Gary Ratcliffe.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
Presentation.
1 Brian Remmington Alfresco Product Architect. 2 A demonstration The Web Quick Start model Overview of the features in the repository tier Overview of.
Users are moving towards web applications Content on the web is more personal & meaningful Development on the web is easier than the OS.
Presentation Title Subtitle DSpace UI Prototype 7 Spring, Angular.js, and the DSpace REST API.
15 Copyright © 2004, Oracle. All rights reserved. Adding JAAS Security to the Client.
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
10 Copyright © 2004, Oracle. All rights reserved. Building ADF View Components.
Google Code Libraries Dima Ionut Daniel. Contents What is Google Code? LDAPBeans Object-ldap-mapping Ldap-ODM Bug4j jOOR Rapa jongo Conclusion Bibliography.
DEVELOPING WEB SERVICES WITH JAVA DESIGN WEB SERVICE ENDPOINT.
© 2014 IBM Corporation iWidget Development IBM Connections 5.0 Workshop Author: Paul Godby IBM Ecosystem Development Duration: 45 minutes.
#SummitNow Alfresco for Salesforce 5 November 2013 / 13 November 2013 Will Abson Jared Ottley
#SummitNow The Share Widget Library 13 th November 2013 Dave Draper
#SummitNow First Steps with CMIS & Alfresco Jeff
Crafter case: European Bank Piergiorgio Lucidi Open Source ECM Specialist Certified Alfresco Instructor and Engineer Alfresco Wiki Gardener and Forum Moderator.
The Alfresco iOS SDK Gi Lee (Zia Consulting) Peter Schmidt (Alfresco)
Tutorial on Science Gateways, Roma, Riccardo Rotondo Web Application Development Introduction to application servers, web applications and portlets.
Web Quick Start a technical tour 1 Brian Remmington Alfresco Product Architect.
The Share Widget Library
Consuming OAuth Services in Alfresco Share
Crafter case: European Bank
Getting Started with Alfresco Development
Open Source distributed document DB for an enterprise
Sri Vatsav Konreddy CIS 764 FALL 2007
Getting started with Alfresco Development
EPIC INFOTECH CONSULTING GROUP
A technical look at the new capabilities
JavaServer Faces: The Fundamentals
SDMX IT Tools SDMX Registry
Presentation transcript:

#SummitNow Integrating Alfresco with portals 6 th November 2013 Piergiorgio Lucidi

#SummitNow Piergiorgio Lucidi Open Source ECM Specialist at Sourcesense Alfresco Trainer / Engineer / Wiki Gardener / Star Alfresco Community 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 Overview Introducing portals Introducing standard portlets Implementing portlets Alfresco Web Services API Spring WebScripts OpenCMIS Spring Surf

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

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

#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 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 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 What is a portal? A portal is a web application focused on Creating dynamic website Page-centric approach Aggregation of contents Enterprise Services

#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 What is a portal?

#SummitNow What is a portal? A portlet is an application that c ontains 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 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 What is a portal? – User roles

#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.0JSR-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 What is a portlet container? Portal A Portlet 1 Portlet 2 Portlet 3 Portal B Portlet 4 Portlet 5 Portal C Portlet 6

#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 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 What is a dashboard?

#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 Overview Introducing portals Developing standard portlets Implementing portlets Alfresco Web Services API Spring WebScripts OpenCMIS Spring Surf

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

#SummitNow Developing standard portlets You can use the GenericPortlet abstract class for overriding the following methods: processAction doView doEdit doHelp doHeaders init destroy

#SummitNow Standard portlets – Demo

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

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

#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 Content Manipulation Language

#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 Search portlet – iterating results

#SummitNow Search portlet

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

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

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

#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 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 WebScript Controller The controller script is an optional component written in JavaScript or Java, which does the actual work.

#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 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 WebScriptPortlet - Descriptor

#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 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 WebScriptPortlet – Demo

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

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

#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 OpenCMIS – Repository Contains set of data entities getRepositories() for given endpoint get repository capabilities

#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 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 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 OpenCMIS Client API - AtomPub //AtomPub binding // default factory implementation SessionFactory factory = SessionFactoryImpl.newInstance(); Map parameter = new HashMap (); // 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, " parameter.put(SessionParameter.REPOSITORY_ID, "84ccfe80-b325-4d79-ab4d-080a4bdd045b") // create session Session session = factory.createSession(parameter);

#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 results = session.query(queryString, false); for (QueryResult qResult : results) { String objectId = qResult.getPropertyValueByQueryName(objectIdQueryName); Document doc = (Document) session.getObject(session.createObjectId(objectId)); }

#SummitNow OpenCMIS - Demo

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

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

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

#SummitNow Spring Surf – Process loading

#SummitNow Spring Surf – Regions

#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 ProxyPortlet – How it works 1.The portal starts to render the portlet page 2.Share starts to render the Surf page (only 1 component) 3.Share starts to render the component 4.Share invokes Alfresco using REST calls 5.Share connector get the user session from request.getRemoteUser() and set the user as authenticated in Alfresco (external authentication) 6.Alfresco executes the WebScripts 7.The returned JSON will be parsed by Share to render the FTL template for the portlet 8.Share ends to render the Surf page 9.The portal finishes to render the portlet

#SummitNow ProxyPortlet – Search

#SummitNow Thank

#SummitNow