creating a global e-commerce website with e-business suite and fusion middleware
DESCRIPTION
Creating an e-commerce web site is always a challenge, but it's even a bigger challenge if its a global website for a multinational firm in a heavily regulated industry. Thousands of products, hundreds of locales, different regulations, different prices, and different marketing collateral. Attend this session to see how we wired together E-Business Suite, WebLogic Portal, Universal Content Management, Identity Management, and Enterprise Search to meet the global business needs.TRANSCRIPT
Creating a Global eCommerce Site with EBusiness Suite and Fusion Middleware
Brian “Bex” HuffChief Software ArchitectOracle ACE Director
Monday, October 17, 2011
2
The Web Site Redesign (WSR) project• Goal: completely re-vamp a 10-year old product website
The company• Multinational firm, heavily regulated industry• Fortune 500 company
The team• Approximately 80 people
My role• WebCenter architect, designer, and developer
The Project
Monday, October 17, 2011
3
Fast and easy contribution by business owners• Mostly public content: secured edits
Workflow process for all content changes• Track who changed what, when, why
Support for multiple regions/countries locales
Applications and content on the same pages• E-Commerce ordering tools• End-user calculators and other small applications
Global Search Engine Optimization: “Google Friendly” URLs
High-Level Requirements
Monday, October 17, 2011
4
Different products available in different markets• Users must never see a product they cannot purchase
Different regulations per region• You can’t say that in Germany!
Taxonomy was surprisingly critical• Incorrectly tagged content could lead to fines!
What’s the best way to blend content and applications?
The Challenges
Monday, October 17, 2011
5
60+ product families• Each has a “business owner”
IE 6 must be supported• Unfortunately...
Different prices for different customers / locations
More Challenges
Monday, October 17, 2011
6
Mostly Oracle
Infrastructure• Linux, Oracle Database, GFS
Framework• WebLogic Portal, SPRING, AJAX, and JavaScript
Back-End• Enterprise Applications and middleware
Security• Several identity management applications
The Stack!
Monday, October 17, 2011
Stack Diagram
7
Monday, October 17, 2011
8
Oracle Enterprise Linux• Why not?
Oracle Database 11g• What else?
Red Hat Global File System (GFS)• Needed a shared file system in the SAN• Multiple nodes in the system had to share files
Load Balancers• Hardware and software (PEN)
Infrastructure
Monday, October 17, 2011
9
WebLogic Application Server and Portal• 3-node cluster for main web site, and admin interface• 2-node cluster each for UCM, OID, IDOL, everything else!
“WSR Admin” portal• Configuration, customers, orders, product launches
SPRING• Open source toolkit for creating web front-ends in Java
JavaScript libraries• jQuery toolkit for front-facing• ExtJS for Admin interface
Framework
Monday, October 17, 2011
10
E-Business Suite• Contracts, customers, products for sale
Product Information Management (QAD/FullTilt)• Product specs: size, weight, etc.• Categorization into product catalogs• Localizable, but unfortunately not normalized
Documentum• Repository for technical manuals• “Tactical” integration: content exported, but repository remains• Full consolidation out of scope of current project!
Back-End Applications: Existing
Monday, October 17, 2011
11
WebCenter Content (UCM) 10gr3• Main content repository
Site Studio 10gr4• Built on top of UCM• Site navigation, web content, images, CSS, JS• Has the “Open WCM” web services we need
Autonomy Idol• Enterprise Search
Back-End Applications: New
Monday, October 17, 2011
12
Speed was critical!• Needed to make custom web services to query eBiz tables directly
Multiple search indexes• One per locale: critical the people only search in their locale!
Blending the data together
Apps Challenges
Monday, October 17, 2011
13
Active Directory• Used for internal employees• Integration needed for UCM and Admin site rights
Oracle Internet Directory• Used for external customers• Needed to log in, make orders, view pages
Oracle Access Manager• Single-Sign-On
Security
Monday, October 17, 2011
Security Configuration
14
Monday, October 17, 2011
15
Portal front-end blends everything together
Content stored and managed by WebCenter Content• Marketing literature for products• General web pages, contact us, literature downloads, video• Localized versions of web assets
Site navigation controlled by Site Studio• Opt-in, Opt-out
Product information controlled by QAD• Localized and normalized there• Export the raw data to the portal’s database
Integration Strategy
Monday, October 17, 2011
Integrations
Portal - EBuisness Suite• Some TIBCO Web Services, some custom Web Services• Create Order, Order Details, Item Price services• Consumed via AJAX from portlet
Portal - Product Info / QAD• PIM data not fully normalized• Get a “dump” of raw data nightly• Organize it in WSR database in more useful ways• Create a “view” on this table, to drive UCM metadata tags
• Tree-control to “tag” a page as belonging to a product catalog
16
Monday, October 17, 2011
Integrations, cont.
Portal - UCM• Used “Open WCM” Web Services and a custom servlet
• Did not use Site Studio for External Applications (SSXA)
• Needed localization features unavailable in SSXA• Used RIDC bean• Cached with EHCache• Taxonomy controlled by UCM
Portal - Database• Spring DOA, and hand-written SQL• Tried Hibernate, ditched it half way through• ORM frameworks look good on paper... but...• Only worth the effort if using a 2nd layer cache, which we weren’t
17
Monday, October 17, 2011
Search Engine
IDOL needed one repository per locale• Also needed STRICT adherence to taxonomy
Did not have a UCM connector• HTTP web spider would not be fast enough for multiple locales
Custom connector• Database view on Revisions and DocMeta table• Scheduled task to watch for new content• Determined the URL based on xWebSiteSection• Determined taxonomy/locale from other metadata
18
Monday, October 17, 2011
“Admin” Portal
Custom interface to E Business suite and OID• Create users, manage email templates• Enable products to be for sale online in specific regions• Manage / edit orders• Create a new “region” to enable sales / new website• Create new training class schedule / locations• Customer email subscriptions• Custom reports
19
Monday, October 17, 2011
Custom Portal Controller
Import the “Site Studio Navigation” file from UCM/Site Studio• Contains the full navigation for the site• All content references, and “tokens” representing specific AJAX apps
Generate site navigation for each locale• Inherit navigation/content from the “global” locale• Opt in / opt out of specific pages
Inject AJAX applications when “Tokens” found on page• Users can select which AJAX app they want• Data files “tagged” with a product ID or catalog
• Auto-generated AJAX
• Some templates
20
Monday, October 17, 2011
Custom Navigation Editor App
21
Monday, October 17, 2011
Security Integration
Most was out-of-the-box• OAM / OID works well with WebLogic and UCM• Some issues with OAM and non-signed applets
Some customizations needed• Simplified “customer info” editor in the Admin portal
Custom AJAX controller• Security through AJAX is tricky• Sessions expire while still on the page• AJAX needs to handle session expiration, and redirect• Made custom OAM AccessGate
22
Monday, October 17, 2011
Data Cache
Use the distributed EHCache code
Extremely easy to make existing SPRING code cachable
@Cacheable(cacheName="ucmCache")
public String renderPlaceholderByDocName(IdcContext userContext,
! String docName, String placeholderDefinitionName, String siteId,
! String nodeId, boolean isContrib, String userLocale) {
...
}
23
Monday, October 17, 2011
24
Use front-end Apache server with mod_proxy
Problem: entire web site is HTTPS• Browsers by default do not cache secure traffic• Problem: with all the JavaScript libraries, some pages were 1 MB!• Caching those static resources critical
Apache server tuning• For all cachable content, set Cache-Control: public• Do not cache content from AJAX controller
• Force AJAX to reload on every page to avoid stale content
• mod_deflate• GZIP-compress rarely changing text files (JS/CSS/XML)
Web Cache
Monday, October 17, 2011
Technical Architecture
25
Monday, October 17, 2011
Product Catalog
26
Monday, October 17, 2011
AJAX Embedded Application
27
Monday, October 17, 2011
Business-Controlled Content
28
Monday, October 17, 2011
29
Hire a team that’s done it before• Primary reason behind previous “false starts”
Avoid GFS like the plague!• Extremely difficult to set up properly• A file locking snafu would seize up all nodes in the system until rebooted!
More frequent code reviews, and project patterns• Could have avoided some • Tough to do, when the team’s under a tight deadline
OAM/WebGate has issues with non-signed Applets• UCM side was tricky to get working with SSO
Lessons Learned
Monday, October 17, 2011
If I Had To Do It All Over Again...
Straight WebLogic for front-end, no Portal• Admin interface used portlet features, but• Front-end web site was all in one SPRING portlet• Google-Friendly URLs would be easier• AJAX controller would be easier• Oracle really needs a lightweight Java framework for websites...
Use Diesel Point for search engine• IDOL was overkill, both in cost and features used
Focus on ONE JavaScript framework, and keep it lean• Because of the “plugin” architecture, jQuery grows like weeds• Pages can become HUGE relatively quickly
30
Monday, October 17, 2011
31
My Company: http://bezzotech.com
My Blog: http://bexhuff.com
My Self: [email protected]
Questions?
Monday, October 17, 2011