© 2008 ibm andreas prokoph – software architect d17: leveraging the power of html pages support...
TRANSCRIPT
© 2008 IBM
Andreas Prokoph – Software architect
D17: Leveraging the power of HTML pages support and the resource addressability framework in WebSphere Portal v6.1
STORY TITLE
WebSphere Portal Technical Conference U.S. 200822
Agenda
HTML Page Support
Introduction Demo Rendering Concepts Authoring Advanced Topics Limitations
Resource Addressabilty
Introduction Concepts Advanced Topics
STORY TITLE
WebSphere Portal Technical Conference U.S. 200833
Static HTML Pages
Goal: Simplify the creation of portal pages HTML designers can author portal pages without any JSP or
J2EE knowlege• Clear separation between the designer (page) and the
devloper (portlets) Full set of HTML, CSS, JS features can be used in a standard
way HTML pages may contain portlets as dynamic elements HTML pages fully support standard portal features such as
portal access control, personalization, portlet user data, ... HTML pages can be deployed or updated using the admin UI,
XML Access or Scripting without a server restartHTML Editor File Manager Portal Admin UI Portal HTML Page
author ... package ... (ZIP) create/update page ... view ...
STORY TITLE
WebSphere Portal Technical Conference U.S. 200844
Themes/Skins vs. HTML pages
Themes/Skins
Content is generated by JSPs using portal model information
Resources (images, CSS) are stored in the file system
Referencing resources requires the use of tags or APIs
HTML Pages
Content is a simple HTML file
Resources are stored together with the portal page in the portal database
Resources can be referenced directly using relative URIs
STORY TITLE
WebSphere Portal Technical Conference U.S. 200866
Rendering Concepts – JSP based page (1)
Theme JSP Tags that iterate the navigation model to produce the HTML markup
Skin – renders the title bar and the border of the portlet
Content area – the layout is described by a layout model and rendered via recursive JSP includes
Portlets – rendered as components via the portlet API
Theme JSP contains some HTML markup
STORY TITLE
WebSphere Portal Technical Conference U.S. 200877
Rendering Concepts – JSP based page (2)
The theme defines a JSP file that produces the markup of the page.
It uses JSP tags to iterate over the portal models to produce navigation elements and to include the portlets
URLs to images and other resource are generated using JSP tags
Typically only the content area may contain portlets, their layout is defined by the layout model
This model is very flexible
But it is also complicated, because J2EE expertise and a good knowledge of the portal JSP tags is required
In many cases the J2EE skills and the HTML design skill are not shared by the same person, which makes theme development complex
Themes cannot be previewed easily during development
STORY TITLE
WebSphere Portal Technical Conference U.S. 200888
Rendering Concepts – HTML page
Portlets – rendered as components via the portlet API
The markup of the page, CSS, JS and images are contained in a ZIP file that defines the HTML page.
STORY TITLE
WebSphere Portal Technical Conference U.S. 200899
Rendering Concepts – HTML page
The markup of the page, images, CSS and JS is directly rendered from static files
The index file may contain semantic HTML tags that are replaced by portlet markup dynamically
URLs to images and resources can be relative URLs without extra processing
This model allows to author and preview the page in a WYSIWYG way using standard HTML tools
No J2EE skills required to build a page, just HTML design skills
Less flexible than themes, however flexibility can be added by using JS or portlets
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081010
Embedded vs. Full Page
HTML pages can be rendered in two modes: embedded or full-page
Embedded
the HTML page only fills the content area of the page, the banner and navigation are rendered by the theme
Full-Page
the HTML page contols the complete page markup, the theme is not involved in rendering
The type of page is deduced from the HTML structure. If the HTML contains the <html> tag it is a full page, else an embedded page
Full Page
EmbeddedPage
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081111
Portlet Window Display Options
Portlets can be included in different ways
Included Markup
The portlet markup is inserted into the page during rendering, the page is served in one HTTP response
IFrame
The portlets are represented via IFrames that load asynchroneously
AJAX
Instead of the portlet markup the HTTP response contains a link to a portlet fragment feed. Javascript provided by the HTML page may use this link to fetch the content via an AJAX request
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081212
Deployment - Packaging
The resources for an HTML page are stored in the local file system and can be previewed and edited
The deployment artifact is simply the ZIP of the folder that contains the resources, including all required subfolders
Limitation:
The ZIP file must not exceed 1MB in size
Index file Stylesheet
Image folder
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081313
Deployment – Creating/Updating the page (1)
HTML pages can be created using standard portal page creation mechanisms
Admin UIXMLAccessScriptingSiteManagement
In the Admin UI there exists a new option to create/update an HTML page
Name the index file inside the ZIPUpload the ZIP file
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081414
Deployment – Creating/Updating the page (2)
Upload the file and identify the markup type and the name of the index file
The layout of the page is computed automatically by analyzing the HTML file
Specify how the portlets are rendered:
Included, AJAX or IFrame
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081515
How HTML pages are persisted
The HTML page ZIP file is stored in the portal database (in the same DB domain as the page itself)
The layout model and the content of the HTML file are tightly coupled, storing them in different places could become redundant
Backup/Restore will automatically include HTML page resource and result in a consistent backup
XMLAccess, SiteManagement and Scripting contains the HTML page resources as part of the data stream
Limitation: The size of the ZIP file must not exceed 1MBAI templates do not support HTML pages, yet
HTML files
ZIP of all static resources
images stylesheets
JS
DB
Markup datatable per page
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081616
Authoring HTML pages
Portal HTML pages can be created by any HTML editor
References are relative
Portlets are included using a semantic div tag
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081717
Semantic Tags
The HTML markup is parsed on the server at deployment time
Semantic tags are detected on the server and replaced during rendering time with dynamic markup
The tag must be a <div> tag: class attribute defines if the tag represents a portlet-window or
a portlet-container name attribute identifies this instance uniquely on the page style attribute identifies the unique name of the portlet-
definition
Example <div class="portlet-window"
name="breadcrumb„ style="portlet-definition:'wps.p.SpaBreadCrumbTrail'"></div>
<div class="portlet-container" name=„container“></div>
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081818
Semantic Tags
Portlet-Window
Represents an instance of a portlet on a page
If outside of a container, the window will always be rendered at its exact position in the markup
<dl> subtags may be used to initialize the portlet-window
Portlet-Container
Represents a spot that may dynamically contain zero or more portlet windows
Portlet windows may be added, deleted or moved using either the customizer or Drag&Drop (provided by the HTML page)
When the HTML page is created or updated, the page is parsed for portlet-windows and containers and a matching portal layout-model is created. This layout model can be accessed and modified using the standard public portal APIs
Portlet-Windows and Portlet-Containers are the only (server side) dynamic elements on an HTML page
STORY TITLE
WebSphere Portal Technical Conference U.S. 20081919
Portlet Microformat
During rendering, the server renders the content of the portlet as well as metainformation in a well-defined portlet-microformat
CSS or JS provided by the HTML page can use this microformat to render a skin or a portlet menu
The microformat containsName and IDTitlePortlet ActionsPortlet Body
Note:The portlet actions follow the REST pattern, i.e. safe operations are represented via GET, unsafe operations via POST
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082020
Container Microformat
The container microformat identifies the container and includes the information to implement javascript based Drag&Drop
The microformat contains
Name and IDDrop handler
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082121
Implementing Drag&Drop
The actual implementation of JS based Drag&Drop is left to the HTML page
The design does not mandate any particular JS library and leaves the choice to the HTML editorThe portal DOJO library may be used as a convenient solution
The container microformat contains a dnd drop handler
The client side DnD logic invokes this handler to execute the action operation
1. Page renders container and microformats
2. JS enables DND
3. User drags a portlet and drops it onto a drop zone
4. JS receives the „drop“ event
5. JS calls the drop handler
6. Server executes the drop operation
Pro
vide
d by
the
HT
ML
page
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082222
Example Drag and Drop (DnD) Handler Code (DOJO)
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082323
Adding Navigation
Navigation can be added in multiple ways:
Absolute URLs Using friendly names or URL mappingsUseful for hardcoded linksCon: navigational state is lost
Relative POC URLsUsing the POC URI of the target, e.g. <a href=„?nm:oid:wps.content.root“>Useful for hardcoded links
Navigation Portlets (recommended)The navigation links are computed dynamically by a navigation portletThe HTML page references the navigation portlet via a semantic tag and uses CSS to style the navigationSupports flat lists and navigation hierarchies
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082424
Navigation Portlets
Out-of-the-box navigation portlets render a well-defined navigation microformat
The microformat contains TitleActions on the pageExpansion information
The HTML page can style this microformat to display list or navigation trees
ExampleRender the Quick Links
Breadcrumbtrail PortletRenders the path from a page up to the content rootThe starting point can be configured
Navigation PortletRenders a flat or hierachical portion of the navigation modelThe starting point and hierarchy depth can be configuredNote: you can use this portlet to render e.g. the QuickLinks
PageList PortletRenders arbitrary lists of pages that are provided via the POC resolution service (similar to a simple feed reader)
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082525
Localization
All resources (HTML, images) can be localized
Localized resource contain the locale as a filename suffix
index.html (default)index_de.html (German)index_en_us.html (US English)
The rendering engine determines the best available locale from the request and serves the localized resource
Resources are always addressed via their non-localized name
Example
HTML Code
<img src=„test.jpg“>
Available files
test.jpgtest_en.jpgtest_de.jpg
Accept-Locale header
[de, en]
Server resource
test_de.jpg
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082626
Referencing Resources
Resources can (and should) be referenced using relative URIs <img src=„test.jpg“>
When the browser requests the resource, the server ... ... tries to find the localized version of the resource in the ZIP .. if the ZIP does not contain the resource, the server applies a theme
fallback and tries to find the resource in the theme directory (using the default theme fallback)
resources may be shared across HTML pages by putting them into the theme
Main usecase: share large JS libraries such as DOJO
Including resources via relative URLs from other resources (e.g. images from CSS files) just works as expected
Example for a static pages that uses the portal DOJO version: <script type="text/javascript"
src="dojo/portal_dojo/dojo/dojo.js„ djConfig="parseOnLoad: true"></script>
Limitation Relative URLs must not contain a .. path element
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082727
Referencing Resources - background
The URL that renders a static page is a rich portal URL that contains navigational state [1]
Relative URLs are relative to this base URL, i.e. the resulting URL still contains state
Serving the stateless resource via the stateful URL would lead to poor caching and a performance problem
the server sends a redirect from the stateful resource URL to a stateless URL, so the resources can be cached
Both the redirect itself as well as the resulting resource are cacheable
[1] https://quickr.tap.ibm.com/lotus/mypoc?uri=dm:f49b3f8046cf3fc8acd2ee8a40c9fec3&verb=view
http:<server>/wps/portal/state/
http:<server>/wps/portal/state/image.jpg
http:<server>/wps/mypoc/spa//<pageID>/html/image.jpg
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082828
Referencing Resources – Resource Serving
The portal servlet serves the markup that makes up the page
Additional resources are served via the resource addressability framework
every resources inside the ZIP can be addressed individuallythe resource addressability framework adds caching, redirect support, etc HTML
Static Page
POC Framework
DBHTML files
resources
STORY TITLE
WebSphere Portal Technical Conference U.S. 20082929
Resource Addressability
The resource addressability framework is used in a couple of key places for HTML pages
... make individual resources out of a ZIP addressable
... server the complete ZIP and a list of files
... upload the updated ZIP for an existing page
... implement (pluggable) Drag‘n‘Drop operations for pages
... provide a list of pages for the „PageList“ navigation portlet
the resource addressability framework is a generic framework to serve portal resources and can be extended by customers
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083030
Usecase
The Resource Addressability Framework allows to work with „resources“ in WebSphere Portal
Identify resources in a location independent way (POC URI) Find the view (e.g. a portal page) that renders a resource Download a binary representation of a resource
From the client‘s perspective:• Given the ID of a resource (e.g. from a search result) the
framework defines how the view can be addressed and how the resource can be downloaded
From the provider‘s perspective:• The framework allows to dynamically introduce resources,
views and representations for the resources, providing uniform, resource independent access points
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083131
Terminology
The term „resource“ is largely overloaded, so we call a piece of information that can be identified and accessed
Piece of Content = POC
Examples:
Documents in a document library Users Portal pages Portlets ...
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083232
Motivation
WebSphere Portal is a platform that provides an aggregated (HTML) view to pieces of content (POC)
Classically the POCs are only accessible through the aggregation layer
HTML
Piece of Content:WCM Item
Piece of Content:Document
Aggregation Layer:the „view“
Piece of Content:User Information
...Portal
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083333
Motivation
The POC framework adds an entry point to WebSphere Portal that allows to access POCs in a variety of mime-types
Customers can easily add their own POCs and leverage the POC Framework to serve them
HTML
Piece of Content:WCM Item
Piece of Content:Document
Aggregation Layer:the „view“
Piece of Content:User Information
Portal
POC Framework
ContentRepresentation
ContentUpload
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083434
What is a Piece of Content (POC)?
FeaturesUI neutral: a POC is not a UI artifact but exists as descriptive
data without a UI. There exist zero or more viewers or editors for a POC, and the POC itself can be accessed in multiple UI contexts
Identifiable: a POC can be identified uniquely by an ID. This ID must be global and unique over time (i.e. it must not be scoped to a subsystem and IDs that have been issued once must not be reassigned to different POCs). More than one POC ID may point to the same POC (although such an aliasing solution should be avoided)
ExamplesWCM documentDiscussion ThreadPortal PagePortletUser…
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083535
How is a POC identified?
A POC is identified by a URI (RFC 3986)
POCURI = <scheme>:<scheme-specific-part>
Components that expose POCs can define new schemes or reuse existing ones
The POC URI is NOT the URL to the resource itself
Interpreted by thePOC framework tohandle a POC
Identity Location
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083636
How is a POC addressed?
The URL to a POC can be constructed via string-concatenation or via a Portal-API call
/wps/[my]poc[/<vp>]?uri=<scheme>:<ssp>&mode=download (1) /wps/[my]poc[/<vp>]/<scheme>/<ssp>?mode=download (2)
Both URL flavors are equivalent, (1) is helpful for FORM submits, (2) is required if the resource contains relative URL references (e.g. images in CSS)
POC URLs are fully virtual portal aware
The [mypoc] servlet will establish a WAS security context, whereas [poc] is used for anonymous access
Example: URL to the ATOM feed for the portal content model /wps/mypoc/cm/oid:7C_48938908?mode=download
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083737
POCs can be addressed using „modes“
The [mypoc] servlet serves as the generic access point
It redirects to handler-servlets based on the URI and the mode
Per default:
mode=view dispatches to the portal servlet and displays a portal page
mode=download dispatches to a POC download servlet that produces data
mode=lookup produces an ATOM feed that describes the entry point that handles the resource
The default handling can be customized per POC URI.
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083838
POC and the REST pattern
POC services strictly follow the REST pattern in that ...
... resources are uniquely addressed via the URL ... requests for information retrieval (e.g. mode:
download, view, lookup) always use HTTP GET verbs ... requests to modify information are ONLY possible
using PUT/POST/DELETE verbs ... the HTTP status codes are REST compliant
STORY TITLE
WebSphere Portal Technical Conference U.S. 20083939
The process of viewing content for a POC URI
The lookup handler resolves a URI to a URL the POC servlet serves as a well-defined entry point for any kind of data serving servlet
In WP the default entry point is the portal servlet
The portal servlet dispatches to ResolutionServices that update the navigational state based on the POC URI
POC servlet Lookup handlerrequest
URI URIExtensible lookup handlers compute the URL used to serve the URI
URL
URL
redirect Portal servlet
URI + stateResolution Service
Extensible resolution service finds portal page
Portal rendering
markupmarkup
delegate Resolution ServiceResolution ServiceResolution Service
Optionall delegates to addition services (e.g. portlets) for initialization
state
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084040
The process of serving content for a POC URI
The lookup handler resolves a URI to a URL the POC servlet serves as a well-defined entry point for any kind of data serving servlet
In WP the default entry point is the content handler servlet
The content handler uses extensible DataSourceFactory plug-points and serializes their DataSource objects.
POC servlet Lookup handlerrequest
URI URIExtensible lookup handlers compute the URL used to serve the URI
URL
URL
redirect
Contenthandlerservlet
URIDataSourceFactory
Extensible DS factory creates data sources per URI
DataSourceSerializer
bytesbytes
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084141
The process of modifying a POC
Modification operations are only possible on the content handler servlet (i.e. the lookup has to be done manually)
Data Sinks are coupled to URI and HTTP verb (impossible to modify a resource using GET)
URI
Contenthandlerservlet
URIDataSinkFactory
Extensible DS factory creates data sinks per URI
DataSink
bytes
content content
DataSinkThe Data Sink executes the modifcation operation
Serializer
bytes
DataSourceThe result of the operation is a Data Source
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084242
What the POC framework does for you!
Decodes URLs into URI and parameters
Initializes the portal context required to access portal APIs Virtual Portal Context User Context
Handles HTTP specifics Transfer encoding if requested (GZIP) Byte range request Caching headers Automatic redirects to circumvent the vary-header bug
Mediates between content and representation Serializes XML, characters, multipart, etc. into byte streams Content-disposition information
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084343
Currently supported serializers
ByteDataSource Lowest level, just streams bytes
CharDataSource Streams characters, used for text-based data
XmlDataSource JAXP based XML data streaming, used e.g. for feeds
MultipartDataSource Combines multiple data sources into one single multipart stream
(e.g. for performance reasons to save requests)
WebdavDataSource (experimental) Exposes POCs via the WebDAV protocol
All DataSources are fully stream based and will perform independently of the size of the data!
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084444
Example: XMLDataSource
Source getSource();
String getContentType();
Date getExpiration();
Date getCreated();
Date getLastModified();
URI getURI();
Map<String, String[]> getParameters();
Returns a JAXP Source object (i.e.
SAX, DOM or Stream)
Mime Type
Timestamps to compute the cache
headers
Identity information
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084545
Example: ATOM feed – Portal Navigation Model
/wps/mycontenthandler/!ut/p/nm/oid:wps.portal.root? mode=download&digest=Ijd6SHFqhrFcnWe3Pts88A!!
(Status-Line) HTTP/1.1 200 OK
Server WebSphere Application Server/6.1
Date Thu, 03 Jul 2008 11:54:16 GMT
Expires Fri, 04 Jul 2008 11:54:16 GMT
Cache-Control private, max-age=86400
Last-Modified Thu, 01 Jan 1970 00:00:00 GMT
Content-Location http://wps60.boeblinge...88A!!
Content-Type application/atom+xml
Content-Encoding gzip
Content-Language de-DE
Content-Length 523
Accept-Ranges bytes
X-Request-Digest Ijd6SHFqhrFcnWe3Pts88A!!
Caching support
Compression (if requested)
Fix for the vary-header bugs
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084646
Example: ATOM feed – Portal Navigation Model
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084747
Caching
HTTP Cache headers are computed automatically based on
ExpirationLast-Modified DateE-TagIdentity (Content-Location)
J2EE security context (public vs. private cache)
Content can also be cached server side in the dynacache
The „VARY-header“ bug
The response depends on the request accept-language header and the cookies (e.g. the session cookie!), so the response must contain a VARY header
many browsers do not correctly cache responses that contain such a header (or do not cache at all)
for selected browsers the POC frameworks computes a digest from the request headers and redirects the URL becomes unique and cacheable
/wps/mycontenthandler/!ut/p/nm/oid:wps.portal.root? mode=download&digest=Ijd6SHFqhrFcnWe3Pts88A!!
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084848
How to deploy a new POC handler?
Deployment model based on the Eclipse plugin frameworkPlugin.xml
The URI scheme
The type of serviceDeployed using a plugin.xml, e.g. in a WAR file or a shared library.
UR
I m
atch
ing
Ser
vice
STORY TITLE
WebSphere Portal Technical Conference U.S. 20084949
Convenience APIs that can be used by POC data sources
SAX based ATOM API Exposes an API to build or parse an ATOM feed via JAVA
callbacks Very fast and scaleable, because no ATOM document is built Extends the standard JAXP APIs (i.e. compatible with existing
JAXP parsers, filters, XSLTs, etc) Most portal REST feeds are built upon this API
Streaming APIs Set of APIs to build or parse multipart streams Very fast and scaleable, no buffering required
Used to handle FORM uploads or to bundle multiple REST feeds into one larger multipart response (for performance reasons)
STORY TITLE
WebSphere Portal Technical Conference U.S. 20085050
Convenience APIs that can be used by POC data sources
Server side mashup APIs
Allows to combine multiple data sources into one data source (mashup)
Chain-of-responsability pattern Transform the content of another data source
All portal APIs
STORY TITLE
WebSphere Portal Technical Conference U.S. 20085151
Additional Information and Resources
WebSphere Portal – IBM Site
http://www-3.ibm.com/software/genservers/portal/
WebSphere Portal Business Solutions Catalog:http://catalog.lotus.com/wps/portal/portal
Websphere Portal Developer’s Zone http://www-106.ibm.com/developerworks/websphere/zones/portal/
Product Documentation and WebSphere Portal Wiki http://www-3.ibm.com/software/genservers/portal/library/
http://www-10.lotus.com/ldd/portalwiki.nsf
Education http://www-3.ibm.com/software/genservers/portal/education/
WebSphere Portal 6.0 DemoNethttp://docs.dfw.ibm.com/wp6/?DDSPageRequest=/
STORY TITLE
WebSphere Portal Technical Conference U.S. 20085252
Please take a few minutes to fill out the session survey. Thank you
Mark your calendars!Mark your calendars!
2009 U.S. WebSphere Portal Technical Conference2009 U.S. WebSphere Portal Technical ConferenceOctober 12-15, 2009, Sheraton San Diego Hotel and MarinaOctober 12-15, 2009, Sheraton San Diego Hotel and Marina
WebSphere Portal Technical Conference U.S. 2008
Session ID: D17
Session: Leveraging the power of HTML pages support and the resource addressability framework in WebSphere Portal v6.1
Presenter(s): Andreas Prokoph ([email protected])
STORY TITLE
WebSphere Portal Technical Conference U.S. 20085353
© IBM Corporation 2008 All Rights Reserved.
The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication, it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in this presentation may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer.
IBM, the IBM logo, WebSphere, Lotus, Lotus Notes, Domino, Quickplace, Sametime, Workplace and Quickr are trademarks of International Business Machines Corporation in the United States, other countries, or both.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
Other company, product, or service names may be trademarks or service marks of others.
All references to Renovations Inc. refer to a fictitious company and are used for illustration purposes only.