View
231
Download
5
Tags:
Embed Size (px)
Citation preview
TopicsTopics
Contextual Web
Web Infrastructure
Upcoming VisualWorks Stuff
Contextual WebContextual Web
The next level of personalizationWhat it means
Why it’s needed
Relation to other technologies
Supporting infrastructure
Application to marketing
Personalization and Contextual MarketingPersonalization and Contextual Marketing
Current Web PersonalizationMy stock portfolio
Selling search keywords
Mostly very basic
Almost entirely explicit personalizationtell us what news topics you’re interested in
log in with your customer account
“Eliza”-level implicit personalizationClick here to buy books about …
Going BeyondGoing Beyond
Complex, implicit models of the user
Model of content (metadata)
Model of interactions
This is hard workorganizational change
organizing to create the content and models
What is the justification?
BackgroundBackground
Generic Direct Marketing
98% of marketing budgets wasted
7/8 of sales effort wasted
So…Database-driven marketing
e.g. Capital One credit card offers
e.g. highly targeted coupon campaigns
If we waste only 96% that’s a big difference
Pillsbury· Increased average products per customer from 1.2 to 2.6· Lowered average value of coupon by more than 20% Wisconsin Tissue · 4 years straight, sales increases over 100%· 5th year, sold entire plant capacity for the next 18 months· Steadily decreasing cost of sales Mercury Marine Outboard Motors · For every $1 in cost of sale, $40 in revenue was generated· Many dealers with even greater ROI’s - as high as 84:1· 94% of dealers opted for repeat participation Procter & Gamble· Institutional sales grew from $100M to $700M in 4 years· 50% of the increase attributed by client to our methodology
Proven 10 years with Fortune 1000
HistoryHistory
Wanted to apply these techniques to the web
Connect with Cincom
Technology built in Smalltalk
Now merged with the general Smalltalk group
Synnection
Application to the WebApplication to the Web
Multiple ModelsContent
User’s interests
User’s mental processes
Marketing processes
Presentation
Very dynamicuser needs change
business needs change
Related TechnologiesRelated Technologies
EIS
CRM
Three levels of informationour own information
information about customers
information about site visitors
Content ModelContent Model
Topic Tree (meta-meta-data)
Associate content with relevance to topics
SportsSports
TennisTennis
ExpertExpert AdvancedAdvanced BasicBasic
Content ModelContent Model
Articles associated with relevance to topic
e.g. Lifting Weights to Improve Your Serve
Topic RelevanceWeight Lifting 1Tennis 5Expert Tennis 4Intermediate Tennis 2
User ModelUser Model
Explicit - what they have told us
Implicit - Inferred from actionsConjoint Content: “More like this…”
Historical vs. Current Visit
Emphasis on implicitUsers hate forms
Users resent providing information unless there’s a clear benefit to them
Interaction ModelInteraction Model
What should be presented?User’s interest
User’s buying cycle
Company’s selling cycle
Content organized by function as well as topicMagnets: Encourage repeat visits
e.g. jet-lag calculator
Catalysts: Advance in the buying cyclee.g. buy a fitness center membership before Friday and...
Information: default or variations on content
Presentation ModelPresentation Model
FixedNav
DynamicNav
RequestedContent
Default or Contextual ViewConjoint Content Offers
Drill Downs
Catalysts
Magnets
Blocks with templated content selection rules
Fixed Navigation
Dynamic Navigation
Main Content
Drill Downs
Magnet
Catalyst
TemplatingTemplating
Page Templates
Block Templates
JSP-based custom tags
Using standard JSP 1.1 implementation in VisualWorks Web Toolkit
Web and Internet ToolkitsWeb and Internet Toolkits
Built on top of long-standing VisualWave facilities
better server connectivity: CGI, ISAPI, FastCGI
completely standards-based: ASP, servlets, JSP
standard HTML editing tools
interoperability: standard internet protocolsFTP, SMTP, POP, IMAP, HTTP, SNMP, MIME, SSL
strong separation of presentation and domain logic
per-user localization
maintain and improve scalability and ease of use
ServletsServlets
Java standard, part of J2EE
Small programs (classes) that serve HTMLdoGet: aRequest response: aResponse
doPost: aRequest response: aResponse
Request has http request information
Response includes output stream
Servlet ExampleServlet Example
doGet: aRequest response: aResponse aResponse out
nextPutAll: ‘<HTML><BODY>’.
(aRequest getParameter: ‘foo’) = ‘1’
ifTrue: [aResponse out
nextPutAll: (session at: ‘foo1’) printString].
Templating/Server PagesTemplating/Server Pages
Embed code into HTML pages
HTML containing code <%= aPerson name %>
<% UnixProcess cshOne: ‘rm -r *’. %>
Server-side codeMicrosoft ASP
Java JSP
Smalltalk SSP
Smalltalk Server PagesSmalltalk Server Pages
Union of ASP and JSP semantics
Includes full JSP bean/custom tags<jsp:getproperty..>
pages portable between Smalltalk and J2EE
AdvantagesEnvironment available for server page development
Full debugging of server pages
Much more readable code
Overcomes many of the disadvantages of JSP
Sample SSP generated codeSample SSP generated code
<HTML><BODY>
<%= 3 halt%>
</BODY></HTML>
----------------------------------
response write: (htmlChunks at: 1).
response write:
((3 halt) displayStringForLocale: session locale).
response write: (htmlChunks at: 2).
Sample WebSphere CodeSample WebSphere Code
package jsp.demo2;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.Vector;
import com.sun.jsp.runtime.*;
import java.beans.*;
import com.sun.jsp.JspException;
import java.io.ByteArrayOutputStream;
import com.sun.jsp.compiler.ibmtsx.*;
import com.sun.jsp.compiler.db.*;
import java.sql.SQLException;
public class _thankyou_xjsp extends HttpJspBase {
static String[] _jspx_html_data = null;
// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(0,0);to=(0,84)]
// end
private boolean isHaltAtServiceBegin = false;
public _thankyou_xjsp( ) {
}
private static boolean _jspx_inited = false;
Sample Websphere code 2Sample Websphere code 2
public final void _jspx_init() throws JspException {
ObjectInputStream oin = null;
try {
FileInputStream fin = new FileInputStream("f:\\dev\\IBMVJava\\ide\\project_resources\\IBM WebSphere Test Environment/temp/JSP1_0/default_app\\etc\\jsp\\demo2\\thankyou.dat");
oin = new ObjectInputStream(fin);
_jspx_html_data = (String[]) oin.readObject();
} catch (Exception ex) {
throw new JspException("Unable to open data file");
} finally {
if (oin != null)
try { oin.close(); } catch (IOException ignore) { }
}
}
public void setJspInitedToFalse() {
_jspx_inited = false;
}
public void setIsHaltAtServiceBegin(Boolean curIsHaltAtServiceBegin) {
isHaltAtServiceBegin = curIsHaltAtServiceBegin.booleanValue();
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
if (isHaltAtServiceBegin) {
com.ibm.uvm.tools.DebugSupport.halt();
Sample Websphere code 3Sample Websphere code 3 boolean _jspx_cleared_due_to_forward = false;
JspFactory _jspxFactory = null;
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
String _value = null;
try {
if (_jspx_inited == false) {
_jspx_init();
_jspx_inited = true;
}
_jspxFactory = JspFactory.getDefaultFactory();
try
{
response.setContentType("text/html");
}
catch (IllegalStateException ws_jsp_ise)
{
}
pageContext = _jspxFactory.getPageContext(this, request, response,
"", true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
Sample Websphere code 4Sample Websphere code 4out.print(_jspx_html_data[0]);
// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(0,0);to=(0,84)]
oopsla.multiplexer.ActionContext context = null;
boolean _specialcontext = false;
synchronized (request) {
context= (oopsla.multiplexer.ActionContext)
pageContext.getAttribute("context",PageContext.REQUEST_SCOPE);
if ( context == null ) {
_specialcontext = true;
try {
context = (oopsla.multiplexer.ActionContext) Beans.instantiate(getClassLoader(), "oopsla.multiplexer.ActionContext");
} catch (Exception exc) {
throw new ServletException (" Cannot create bean of class "+"oopsla.multiplexer.ActionContext");
}
pageContext.setAttribute("context", context, PageContext.REQUEST_SCOPE);
}
}
if(_specialcontext == true) {
// end
out.print(_jspx_html_data[1]);
// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(0,0);to=(0,84)]
}
// end
out.print(_jspx_html_data[2]);
// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(9,12);to=(9,40)]
out.print(context.getValue("message") );
// end
out.print(_jspx_html_data[3]);
Sample Websphere Code 5Sample Websphere Code 5
} catch (Throwable t) {
if ((!_jspx_cleared_due_to_forward) && (out.getBufferSize() != 0))
out.clear();
throw new JspException("Unknown exception: ", t);
} finally {
if (!_jspx_cleared_due_to_forward)
out.flush();
_jspxFactory.releasePageContext(pageContext);
}
}
}
Server PagesServer Pages
Maintainable (in theory) by web designers
A number of drawbacks, but...
… standard and well known
Can, with servlets, be used quite effectively
Trick: static content placeholders with tags
<syn:SelectionRule name=“SpecialOffer”>
Register now for 20% off
</syn:SelectionRule>
PerformancePerformance
One arbitrary, not very good benchmark
Client = 800MhZ laptop Win2K, 256M RAM
Server=No-name Celeron 466 running Red Hat 6.2, 256M RAM
Network = 802.11b encrypted wireless, 10Mb
Users Apache VW100 72-101K hits/hr
wait 0.85-1.36 sec70-94K hits/hr wait1.1-1.25 sec
500 62-105K hits/hrwait 5.5-6.0 sec
136-159K hits/hr wait 3.9-4.0 sec
Upcoming VW FeaturesUpcoming VW Features
Browser RevisionsRefactoring Browser
Significant revision of functionality
GUI ImprovementsWheel mouse support built-in
Improved Dataset and Tree View
Image format support
Beta of major GUI refactoringNo wrappers
Significantly enhanced capabilities
Fully backward-compatible with existing GUI’s
Upcoming VW Features (2)Upcoming VW Features (2)
Store EnhancementsSignificant speedups, particularly for remote usage
Clearer and better support for multiple repositories
Edit properties directly in database
General improvements and bug fixes
VM ImprovementsSpeedups
Better weak references and finalization (ephemerons)
Immutable objects
Upcoming VW Features (3)Upcoming VW Features (3)
More web and connectivity additionsSNMP and ASN.1
FTP, HTTP, HTTPS with native SSL, IMAP, POP, SMTP, MIME
Web ServicesSOAP, UDDI, WSDL
Longer Term EnhancementsLonger Term Enhancements
Integration of Synnection FeaturesContent Management
Tools for content/business people to define content and its metadata
Database back-end frameworkSQLWorks: Very high-performance, powerful database framework.
Delivery Workflow EngineTools to manage the development and delivery of content and functionality
Enhanced and Simplified GUI
Common VM with Object Studio
2001 Cincom Systems, Inc. All Rights Reserved
Developed in the U.S.A.CINCOM, , and The Smart Choice are trademarks or registered trademarks of Cincom Systems, Inc
All other trademarks belong to their respective companies.