WebCenter Sites Avanzado - v2
WebCenter Sites Avanzado - v2
WebCenter Sites Avanzado - v2
Agenda
09:00 09:30 09:30 10:00 10:00 11:00 11:00 11:30 11:30 12:30 12:30 13:00 13:00 13:30 13:30 14:00 14:00 15:00 15:00 17:00 17:00 17:30 Bienvenida y registro. Repaso de funcionalidades de WebCenter Sites. Arquitectura y Escalabilidad. Caf. Modelo de datos y plantillas de contenido. Page Layout & Insite Edit (How to) Personalizacin (How to) Gadgets/Community/Mobility (How to) Comida. Talleres tcnicos de desarrollo. Q&A
Presentaciones
Who are you? What do you do? What do you expect from this course? Something interesting about yourself..
4
Copy all the files somewhere Expand wemdemo_avisports.rar, jdk1.6.0_16.zip and cosgas.zip to C:\Kits
Business user tools for content editing & site management Large-scale product information management Scalable dynamic delivery for targeted & multi-lingual/locale content Streamlined management of multiple sites / large deployments Rich media management for the Web
FatWire
Track aggregate usage of content assets across pages & sites Track effectiveness of targeted site content for user segments Visualize results with in-context reporting Understand site usage via behavior tracking Access comprehensive reports or create your own
10
Social Computing
Interactive and Social online experiences for site visitors Add Social Computing around your website: Commenting, rating, reviews, blogs Business user administration & moderation of UGC Enable UGC to drive the content of dynamic sites
11
12
13
Content flagged for sharing is made accessible directly in the FatWire user interface
Workflow and change notifications for shared content Source content remains the master SOA architecture Open and extensible
14
Design
Target
15
Design
Target
Convert
Design
Target
18
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
19
API
JSP/XML Java REST and SOAP
Asset Framework
Asset Managers Revision Tracking Search Import / Export Approval Publishing Workflow Templating Engine
Content Services
Database and File System Abstraction Catalog Management Cache Management Dependency Management Page Server Image Server Event Management
Database
20
File System
Multi-Site Management
WebCenter Sites provides a single solution to manage multiple sites Site Launcher can quickly replicate one site from another (copy/share) A Site is a logical unit in WebCenter Sites Micro-Site, Campaign Site, fully fledged Website A site skeletal owns components such as Assets, Templates, Workflows etc Content Owners login to a Site and have visibility to contents of only that site Common components can be shared between sites
WebCenter Sites
SITE 1 - Users Site1 Assets, Templates, Users Site2 Assets, Templates, Users REPLICATE SITE 3 - Users Site3 Assets, Templates, Users www.oracle.com
SITE 2 - Users
www.oracle.com/openworld
www.oracle.com/fatwire
21
Workflow
START END
State 1
State Deadline
State 2
State 3
Process Action
Step 4
Step 1
Step 2
Step 3
Roles
Step 4
Deadline Action
User Assignment 3
Dead Lock
Delegate Action
Assignment Action
22
ASSET
Destination 2 Dependencies
Destination 3 Dependencies
File System
All dependences of the Asset are also published to keep the integrity of data intact
23
Search
Management
User Interfaces WEM App Site Search
Delivery
WEM App
Java API
REST API
Java API
REST API
Framework
Framework
WEM
WebCenter Sites
WEM
WebCenter Sites
Publish
Web Content
Search Indices
Web Content
Search Indices
24
Satellite Server
Management
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
25
Is page in cache?
Content Repository
26
?
Is page in cache? Get cached components Get new component Compose page from cache components
Content Repository
27
Horizontal Scalability
WebCenter Sites deployments scale out by the use of Satellite Servers Satellite Servers are edge caching systems, fully integrated into the content workflow
Load Balancer
WEB
28
Vertical Scalability
WebCenter Sites and Satellite Server are standard J2EE applications Both scale well under application server clusters Multiple instances can be run on the same hardware
WEB
29
Targeting
formerly Engage
Management
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
30
Targeting
formerly Engage
Marketers
Site Visitors
Engage UI
Visitor Data
Visitor Attributes History Attributes
Segments Segments
Segments
Qualifying Segments
Rules Engine
Segments Segments
Recommendations
31
Analytics
formerly Content Optimizer
Management
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
32
Analytics
formerly Content Optimizer
Website
Aggregated Data Drill Down Reports
Sensor
Site Visitors
DBMS
Marketers
Process Queue
Data Analysis
Distributed File System (HDFS) Map-Reduce
33
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
34
Delivery
Web Site
Comments, Ratings, Reviews,
SSO
Framework
REST
Framework
WEM
WEM
Publish
REST
WebCenter Sites
Contributors, Administrators
WebCenter Sites
Visitors
Web Content
Web Content
35
Gadgets
formerly Gadget Server
Management
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
36
Gadgets
formerly Gadget Server
Management
SSO UI Framework
Gadget Lists and Dashboard
Composed dashboard(s), white list of gadgets, settings
Delivery
Web Site SSO
Gadget Container
Framework
REST
Framework
WEM
WEM
Publish
REST
WebCenter Sites
Contributors, Administrators
WebCenter Sites
Visitors
Web Content
Web Content
37
ECM Integration
formerly Content Integration Platform
Management
Mobility Server Framework Community Server Gadget Server Engage WebCenter Sites Framework
Delivery
Mobility Server Community Server Gadget Server Engage WebCenter Sites Mobile Delivery Satellite Server Site Visitors
Content Managers
WEM
WEM
Analytics
Content Integration Platform
Documentum SharePoint File System
38
ECM Integration
formerly Content Integration Platform
Scheduler
Runtime
Plugins & Data Mappings
Event
Connectors
Documentum SharePoint File System ContentServer
Documentum
39
Writing APIs
XML tags JSP tags Asset API
REST API
XMLpost
BulkLoader
CIP (Content Integration Platform)
40
Delivery Environment
Visitor-facing Where content is dynamically rendered to visitors at request time No files or file folders
Publish
41
42
One migrates content via Sites Publishing feature Sites uses its own protocol wrapped inside of http It is *NOT* database to database Publishing queues are called destinations Publishing/approval is inherently incremental Queues are transactional, thus all items in the queue have had their dependencies evaluated recursively failure of one item in the list invalidates the entire list The reason for this evaluation is to eliminate broken links
43
Types of Managed Content Objects All are client-specific and need to be architected
Basic Assets
Simple row/column structure One record per asset Attributes = columns More scalable, less flexible
Flex Assets
44
Multiple values, multiple inheritance Flexible changes possible post go-live without schema changes Multiple records per asset Attributes = rows More flexible, less scalable
Types of Managed List Objects many different types, each with pros and cons
45
Other Types of Asset Objects All are client-specific and need to be architected
Core/Structural Assets
Page Dimensionsets (locales) Flex Definitions Attributes
Code/Logic Assets
46
Many ways to design the flex model There is no cookie cutter asset model
Flex Family (database level)
Single Family w/ Multiple Branches vs. Multiple Families w/ Single Branch
Attribute Design
Required vs. Optional
Hierarchical Organization
Not Supported
Supported
Supported Search States, Search Engine Named Associations, Dimensions, Parent/Child relationships, Asset Attribute
* When the resultset is cached, the fetch for either type would be approx the same ** Attributes inherited via Parent / Child flex relationships are faster to read than named associations or attributes of t ype asset
48
50
Visitor Experience
Speed is key for a good visitor experience thus getting caching/uncaching optimized is a key deliverable A good asset model affects end-user experience in two ways: it facilitates serendipitous relationships between assets that can be MANAGED by editors And the asset model affects caching/uncaching (and thus performance) Getting it all right takes experience and skill But the benefit of getting it right is high-performance websites on a small hardware footprint
52
53
Navigate to C:\Kits\wemdemo Run startFatWire.bat Navigate to C:\Kits\cosgas Run the four .bat files (one by one) In a browser, navigate to http://localhost:7001/cs/login Login: admin/fwdemo1234 Site: FS Test the applications
|
2011 Oracle Corporation Proprietary and Confidential
55
Asset
Type Attributes Associations Site(s)
Business User
Architect
ASSET
Site visitor
Views the article
Developer
Site Visitor
57
Sites
Plantillas
Text
29.1.09 $
Plantillas Pgina
ABC
Repositorio de contenidos
58
Plantillas Asset
Templating
A template is an asset A template is a piece of code written in JSP, XML or HTML A template can be typed or un-typed.
Typed template is assigned to a an asset type, an un-typed template can be used with any asset type A template is tasked with providing view for a section of the page, for a specific asset type. A template can employ can use JavaBeans, asset APIs, tags and any other libraries Content Sever is also a controller framework for templates
Frameworks such as Struts, Spring MVC, JSF are possible using Java API
59
Lesson: Templates & Elements WebCenter Sites uses two types of code assets:
Template
Callable via http Cacheable Applicable to specific assettypes (typed) or Applicable to any assettype (typeless) Scope is always local Previewable by selecting an asset and choosing Preview
CSElement
Not directly callable via http Not directly cacheable Scope can be local, global, or stacked
60
Nested Templates are special: they can be cached independently of the calling page. We call them pagelets
Thus when a pagelets cache expires, only that pagelet refreshes but *NOT* the outer calling Template! This is the key to high performance cache in WebCenter Sites
Note: Elements can be wrapped in a SiteEntry, making them cacheable (but we wont explore that here)
61
Teminology
Wrapper
Store the logic (session, cookie, )
63
/Layout
<render:calltemplate Container c=Page for Page tname=Container <render:calltemplate c=Page /Footer tname=/Footer
/Layout
<render:calltemplate Container c=Article for Article tname=Container <render:calltemplate c=Article /Footer tname=/Footer
64
65
66
FS/Layout template
Site entry calls the /Layout template
String sContainerTName = "Container"; <render:calltemplate tname='<%=sContainerTName%>' site='<%=sSite%>' tid='<%=ics.GetVar("tid")%>' slotname="ArticleContainer" c='<%=ics.GetVar("c")%>' cid='<%=ics.GetVar("cid")%>' ttype="Template"> <render:argument name="p" value='<%=ics.GetVar("p")%>' /> <render:argument name="locale" value='<%=ics.GetVar("locale")%>'/> <render:argument name="packedargs" value='<%=ics.GetVar("packedargs")%>'/> </render:calltemplate>
67
Page Container
String sDetailTName = ics.GetVar("stype") + "Detail"; %> <%-- Call the container template for the current page subtype --%> <render:calltemplate tname='<%=sDetailTName%>' site='<%=ics.GetVar("site")%>' tid='<%=ics.GetVar("tid")%>' slotname="PageContainer" c='<%=ics.GetVar("c")%>' cid='<%=ics.GetVar("cid")%>' ttype="Template" context=""> <render:argument name="p" value='<%=ics.GetVar("p")%>' /> <render:argument name="locale" value='<%=ics.GetVar("locale")%>'/> <render:argument name="packedargs" value='<%=ics.GetVar("packedargs")%>'/> </render:calltemplate>
68
69
70
71
etc.
73
editor="text"
/>
75
76
www.tellmore.dk
www.flmowner.com (a.k.a. MyFord.com)
Most clients are very interested in CS Engage and it is cited as one of the main reasons for purchasing CS It really is neat! (and not all that complex to understand) In a cached state, it can be fast too.
77
78
Note: we will not be going into any detail for the above components in this lesson
79
80
#18 Cozy and Comfortable #19 Milk and Cookies #20 City Lights #21 Urban Villages etc
81
82
84
Engage
Coding Can Be VERY Simple for the Developer
<vdm:setscalar attribute=YOB' value='<%= ics.GetVar(yob") %>' /> <vdm:setscalar attribute='MaritalStatus' value='<%= ics.GetVar("status") %>' /> <vdm:setscalar attribute='MedianIncome' ... <commercecontext:calculatesegments /> <commercecontext:getsinglerecommendation collection='HomepageRecommendation' varname="assetid" typevarname="assettype" /> value='<%= ics.GetVar("medianincome") %>' />
You will notice that the developer does not control what gets rendered The logic comes from the Engage assets maintained by the marketers No if/then/else code required!
86
Engage Login NOT Required: Segments are Driven by Values Example of Anonymous segmentation:
Anonymous Visitor clicks checkout and is asked to type in their zipcode
If State = MA, then Segment = NewEnglander If MedianHouseholdIncome = $90,000, then Segment = UpperMiddleClass When the visitor gets to his/her shopping cart, an Upsell Recommendation (or Promotion), trimmed by those Segments, is presented
87
90
Engage Disadvantages of Using Dynamic Recommendations Generates an unknown dependency which will affect caching and publish frequency Cannot specify Confidence to further refine the rendered results thus you are limited to Ratings only to control the behavior of lists Requires assets to be rated individually (or via parents) but this should also be considered an advantage
91
Somewhat hard to audit since such inherited/calculated ratings are not shown anywhere in the GUI
92
ProductA has segment1=100, segment2=99 ProductB has segment1=97, segment2=98 VisitorA belongs to both segment1 & segment2 only sees ProductA VisitorB belongs to only segment1 only sees ProductA VisitorC belongs to only segment2 sees ProductA & ProductB
Example:
ProductA has segment1=0, segment2=99 ProductB has segment1=97, segment2=98 VisitorA belongs to both segment1 & segment2 only sees ProdB VisitorB belongs to only segment1 sees nothing (or whatever was specified in no segment applies) VisitorC belongs to only segment2 sees ProductA & ProductB
94
If you use Dynamic List Recommendations, typically use Sort by Rating since there is no Confidence
In both cases: take extra care with Rating=100 or Rating=0 as these values "dominate everything" Besides Confidence and Rating you can also sort instead on Attributes: e.g. Year, Price, etc.
95
Rating assets per parent makes more sense, but be aware the effect of "dilution"
e.g. setting a single parent to 99 might only change the child by a small margin (if it has many possible parents, each of which contributes to the overall calculation)
This is why Static List Recommendations were invented: you only need to set Confidence for what you need. Ratings trim the list, Confidence biases the list.
Confidence is NOT diluted. Thus it tends to win
Downside is that you cannot globally set a Confidence for an asset it needs to be set for each Static List Recommendation it appears in
96
Used for primarily for returning a single asset via the getsinglerecommendation tag Example of a getrecommendations list (sorted by Rating):
1. 2. 3. XXX (avg. rating=60, confidence=80) YYY (avg. rating=50, confidence=100) ZZZ (avg. rating=40, confidence=90)
97
getsinglerecommendation returns a single asset determined by its rank = (avg. Rating) * Confidence
Sort criteria dont figure in determining which asset is returned
But if you specify any non-zero % value, then that assets behavior when there is no segment is equivalent to setting a Rating = 100
In other words, usage of this field dominates and ONLY those assets with non-None/non-Zero % values will be rendered when there are no segments Yup, it can get complicated!
99
Now go back to the homepage you should see Agassi-biased content being rendered
How it works: the system keeps track of how many times you hit any tagged page by logging the ClickStamp (TagTracker) history attribute (def) into the db via a call to the SEUtils/History/RecordHistory element from /Layout Find the segment Likes Aggasi and explain how it works Note: This solution would probably not scale in the real world
100
Engage Summary
Engage is a powerful set of tools and features The hardest part is designing your Segments FIRST!
Segments must be appropriate to your line of business and types of visitors Too many Segments is bad (i.e. hard to manage) Too few is bad also Simple Segments like Male/Female are hardly worth the effort Allocate enough time for a proof-of-concept to workout the details
102
Coding the rendering of recommended assets using the commercecontext tags is SIMPLE!
Caching is essential for any web application but can be tricky (or even impossible) to design an optimal strategy for complex segmentation requirements Other features like History Attributes and Promotions are considered advanced topics they add to the richness of Engage
103
csDeveloper_76P1
Part 3, Chapter 11, Engage Subsection Part 7, Chapters 39-42
104
105
Allows customers to
Create gadgets from WebCenter Sites Contents Publish Gadgets in external repositories (i.e. iGoogle) Deploy as Single Gadget
106
107
108
109
110
111
Supported Platforms
OS - RedHat Enterprise Linux 5.0 Database Oracle 10g R2, 11g Uses Apache Web Server (installed with product) Requires domain (server) and subdomain (UI) Installation
Download specified lampp package. Run install.sh Installer prompts:
Install type Development instance (installs Admin UI & Mobility Server) or Production instance (No UI, only Mobility Server) Content Server domain, user, and password Mobility server domain & subdomain.
Deployment Architecture
There is a Mobility Server instance per Content Server. Mobility Server has a server component and a UI component used for the WEM UI (admin server is only on the development instance). Mobility Server includes a database component used for the Cache and Device Detection Database. More details on next slide.
113
Flow
1. Mobile device makes connection to site and is redirected to Mobility Server to serve request 2. Mobility Server detects the device model of the incoming device.
3. Mobility Server calls Content Server to get the siteplan (via custom REST call)
4. Mobility Server calls Content Server to get cids of content used in web page (via custom REST call) 5. Mobility Server calls appropriate php template (based on asset type) to render page. REST calls are made to Content Server to get actual content (e.g. list of articles or article detail) 6. Mobility Server sends markup to device.
114
Concepts
Device family device family represents a group of devices with similar layout characteristics (e.g. screen size, touch type, etc)
3 families ship out-of-the-box: touch, basic, smartphone A set of php templates have to be created per asset type (article, product, detail, list, etc) per device family Php template renders the asset type OOTB sample templates come with installation
Mobility Server Controller makes custom REST calls to Content Server to get site plan and page content (via jsps described on next slide)
Mobility Server Controller makes REST calls to get actual content (e.g. article) and places content into object accessible by php templates.
115
ALTERNATIVES????
Same code as WebCenter Sites Can use Personalization Can use PageLayout
116
117
118
Definition of a new Page Layout Create new Page subtype (Workshop) Create new Page template for the previous subtype (WorkshopDetail) Use ContentServerExplorer to edit the template and add some slots to be PageLayout ready Create a new Page asset (write something at Description), with Workshop subtype and place it in SitePlan (category public and template /Layout) Preview your page and change to PageLayout mode
119
Create new Parent Asset Type (StudentCat) Create new Asset Type (Student) Create new Asset Definition (Student) Create StartMenu items (new and search) for AssetType Student
Preview the Content in those two templates (independently from the site)
121
Template for Content Display (Suite) Using Page Layout place the asset within the Site using Summary Template. Click on the link to view the Student Detail.. Opppps BONUS: Why the detail is not displayed????
Build the associated Container template (you can copy the ArticleCat Container Template)
122
123
Community & Gadget Server Add Community Server widgets to Detail Template
Little hard..are you able to create a gadget that displays the Students??? TRICK: look how is displayed the articles gadget
Create single gadget with the Students and place it in our Page
124
Engage
Create new Asset Attribute (VisCompany) Add the attribute to the visitor definition Create new Visitor (You)
Create new Visitor Attribute (VisCompany, category Profile type String, constraint type Enumeration and enter some values [obviously, your company also])
Create new Segment (Profile rules, VisCompany equals [your_company]) Create new recommendation (type recommendation, static list), add several contents to no Segment Apply and add your Segment to recommendation and select your preferred contents. Go to preview PageLayout Search your recommendation Place it (Summary Template), save and preview Now, if you do login with your Visitor, you can see your Custom view BONUS: Investigate why it works automatically if we created a new Attribute. TRICK: follow the flow.
125
126
Documentation Structure
How to admin Sites How to Develop for Sites HTML Tag Ref Interesting Reading
128
Mailing list
[email protected]
129
130