Vous êtes sur la page 1sur 30

Model-driven design

of Web applications:
WebML

The WebML team


Politecnico di Milano, Italy
www.webml.org

Introduction:
table of contents
The scenario of Web application development
Motivations of model-driven Web development
Web Data Modelling
Hypertext Modelling
Content Management Modelling
Practical model-driven development
Data Mapping and Implementation
WebRatio Site Development Studio, a CASE tool for
MDWD

Future directions: process-intensive applications,


workflows, web services

Data-Intensive Web
Applications
A Web-enabled software system whose main
purpose is to publish and maintain large
amounts of data
Interfaces directed to general public
exploratory
browsing-oriented
personalized (1 to 1)

Data stored by means of DBMS technology


Possibly pre-existing the Web application
Normally volatile
With severe freshness requirements
May be distributed and heterogeneous

Examples of data-intensive
Web applications
Commerce-oriented
Electronic catalogs, auctions, virtual marketplaces

Content-oriented
Online newspapers, digital libraries

Service-oriented
Order tracking sytems, reservation systems, tourist
information systems

Community-oriented
Portals, message boards, technical communities

Issues in the development


of Web applications
Lack of a well-founded software engineering
methods
Data-centric methods do not cover the hypertext front-end
OO methods (e.g., UML profiles) do not capture the essence
of Web-based systems

Lack of model-driven support


Navigation and presentation poorly modelled
Lot of hand-written code
Big efforts are requested even for prototyping

Further Complexity Factors


Multi-device output
PC, PDA, WAP phones, 3rd gen phones, Digital TV,
videotext

One-to-one delivery
myYahoo, myCDNOW,

Lack of skilled IT people


Web designers mostly focused on the look-and-feel
High programming efforts for coding very repetitive
software

Total cost of ownership


Maintenance costs = 10x cost of first system version
Poor documentation = poor evolution

Advantages of a
model-driven approach
A rigorous modeling approach:
Reduces development efforts (cost and time)
Allows a more structured development process
Produces more usable and coherent applications
Ensures better quality documentation
Grants immediate and low-cost prototyping through
automatic code generation

Successful examples in other fields:


ER for data design
UML for OOA&D
VLSI design
CAD systems in the manufacturing industry

Requirements
for Web modeling
Expressiveness
Real-life cases should be expressible
Frequently used design patterns should be captured

Ease of use
Intuitive and visual notation
Clear semantics
Consistency checks performed by the system

Implementability
Efficient mapping to physical data structures
Flexible code generation from high-level
specifications

Web Modeling Language


(WebML)
WebML: a conceptual language for high-level design of
data-intensive Web applications
Defined in 1998, in use for more than six years
Widely published: Ceri, Fraternali at al. Designing dataintensive Web applications, Morgan Kauffman, Dec. 2002
Adopted in many universities worldwide
Commercially implemented (www.webratio.com)
Used for developing several applications:
www.acer-euro.com, www.aceradvantage.com,
www.elet.polimi.it, www.image.co.uk,...

WebML basic concepts


Web application =
Structure
+

Hypertext

entities,
relationships

units, pages, links, site views

structure

navigation + composition +
user model

Presentation
styles

presentation

Model-driven design of
Web applications
1. Data Modelling

http://www.webratio.com

Data Modeling:
Purpose

MODEL

Q: what are the objects published in the site, what are


their properties, how are they related?
A: Structure model primitives
Entity: a class of objects in the application domain
Attribute: a property of an entity
Relationship: a connection between entities
IS-A hierarchy: for classification and grouping

MODEL

Entity and Relationship


Entities are boxes, labelled with the entity name in the upper
half of the box
Attributes are listed in the lower half of the entity box (optional)
Relationships are represented by a solid line between two
entity boxes
ISA hierarchies are denoted by an arrow pointing from the
sub-entity (more specific concept) the the super-entity (general
concept)

Entity2

Entity1

attribute1

SubEntity

MODEL

Relationship role
A relationship role is one of the two directions under which a
relationship can be regarded
Relationship roles have user defined names
E.g.: Relationship Author_Book may have the roles
Role 1: author2book
Role 2: book2author

Author

author2book

Book

Author_Book
book2author

MODEL

Relationship cardinality
For each direction of the relationship, maximum and
minimum cardinality contraints can be specified
E.g. relationship Author_Book
author2book minCard: 0 maxCard: N
book2author minCard: 1 maxCard: N

It reads: an author may produce zero or more books, a


book may have one or more authors

Author

0..N

Book
1..N

MODEL

ISA hierarchy
A IS-A hierarchy is a special connection between two entities
that implies that one entity (the sub-entity) is a special case
of the other one (the super-entity)
The sub-entity inherits the properties of the super-entity
IS-A hierarchies may have several levels (e.g, book, novel,
thriller..)
Book

Biography

Novel

Thriller

RUNNING CASE

Example:
Acme e-Catalog
Acme is a small furniture company, which sells
products thru stores located all over the world.
Now, ACME wants to build a Web site for
publishing a product catalog and attracting new
customers. The site should include information
about products, special offers, i.e. combinations
of products sold at a discounted price, and
stores. Products are associated to a technical
record. Products may have several enlarged
images.

RUNNING CASE

ACME Complete structure


model (initial version)
Product

Combination

0:N
0:N

0:N

Name: string
Code: integer
Price: float
Description:text
Thumbnail:image

Name: string
Price: float
Description:text
Photo:image

0:1
1:1
Tech record
Colors:image
Size: text

1:1
Big image
Description: text
Photo:image

Store
Location: string
Map: image
URL: URL
Email: URL

Model-driven design of
Web applications
2. Hypertext Modelling

http://www.webratio.com

Hypertext Model:
purpose

MODEL

Goals:
Modelling at a high level the front-end of a dynamic
Web application and the interactions with the back
end business logic and data
Using a simple, yet formal, visual notation
Enabling automatic generation of dynamic page
templates and data access and manipulation queries

Hypertext Model:
questions

MODEL

Q1: what is the experience of the site that the user can
achieve?
Q2: how is the hypertext divided into pages served to users?
Q3: what information is published in the hypertext nodes?
Q4: how are the hypertext nodes connected?
A1: siteviews
A2: pages
A3: content units
A4: links

MODEL

Basic Content Units


DATAUNIT

INDEXUNIT

MULTIDATAUNIT

entity
[Selector]

entity
[Selector]

entity
[Selector]

SCROLLERUNIT

MULTICHOICE

HIERARCHICAL

entity
[Selector]

entity
[Selector]

entity
[Selector]

Content:
instances of
an entity
Selector:
set of
conditions
ENTRYUNIT

MODEL

Meaning of Content Units


DATAUNIT

Author
first name:XXX
last name:YYY
photo:

INDEXUNIT

All Authors

S. Ceri
P. Fraternali
O.Versand

ENTRYUNIT

SCROLLERUNIT

Insert Your Data

Browse Authors

Fname
Lname

MULTIDATAUNIT

Index of Authors

MULTICHOICE HIERARCHICAL
Choose Authors

5/12: go to 1/12

  

Ceri
Fraternali
Versand

Books&Authors
1. Web Applicat.
Ceri
Fraternali

2. Systems
Tannenbaum

MODEL

Content Units
A WebML unit is the atomic information publishing
element
unitX

container

It is a view defined upon a container of objects:


All the instances of an entity
Instances of an Entity that meet a selection condition called
selector

MODEL

Unit input and output


unitX

IN

OUT

entity
[selector (par 1, .., parN)]
A unit may need some context to be computed
Each unit exposes input and output parameters
Input is required to compute the unit itself
Parameters pre-defined for the unit +
Other parameters required by the selector of the unit
Output can be used to compute other unit(s) depending on the
current unit

Navigation:
contextual links
source unit

MODEL

target unit

Author

Author

A contextual link is an oriented connection between

two units (source unit and target unit), normally


rendered by means of anchors or submit buttons
Purpose of a contextual link:
Allowing the user to move from one place to another
Transporting information from one place to another
Activating a computation (side effect)

MODEL

Example of links
Which authors books?

Which book?

p2

p1

Author
[OID=p1]

Author
first name:James
last name:Joyce
photo:

p3

Book
[author2book(p2)]
Books of YYY
Ulysses
The Dubliners
Portrait...

Book
[OID=p3]

Book
Title:Ulysses
Price:23$
Cover:

MODEL

Link Parameters
param
Author

Book
[Author2Book(param)]

Context is transported through links using link


parameters

A link parameter is defined by:


Name
Source: one of the output parameters of the source
unit

Target: one of the input parameters of the target unit

MODEL

Default Link Parameters

Whenever possible, link parameters are inferred


from the diagram and need not be explicitly
specified
Diagrams become simpler and more readable

Example:

Author

Book
[Author2Book]

MODEL

Defaults for selectors

Whenever possible, selectors and their

parameters are inferred from the diagram and


need not be explicitly specified

Example:

Author

Book
[author2book]

Book

10

MODEL

Automatic Links
source unit

target unit

Author

Author

An automatic link passes some default context to the

destination unit immediately after the display of the


source unit, without the user intervention
Subsequently, the user can change the passed context
by choosing a different object, using the anchor(s)
representing the link

MODEL

Transport Links
source unit

target unit

Author

Book
[Author2Book]

A transport link has a default context that is passed to


the target unit immediately after the display of the
source unit, without the user intervention
The user cannot change the default context and
therefore the link is not rendered with an anchor

DataUnit
params

MODEL

OID

Entity
[selector(params)]
Data units
Publish information about ONE SINGLE INSTANCE
The container is an entity with (optional) selector
Input:
OID of the object to be published, OR
Parameters requested for the computation of the
selector, like:
Attribute values
OID of object participant to a relationship role

Output:
OID of the published object (and its attributes)

11

RUNNING CASE

ACME: data unit in

Product page

Product

Information
about a one
specific
product

MODEL

Examples
No input links and no
selector: wrong unit!
p1

EntityB

A.oid

Input parameter: OID


of a connected object:
the related object is
shown

B.oid

EntityB
[Relationship(A2B)]

param1

Input parameter:
value to be used in
the selector: the
matching object is
shown

B.oid

EntityB
[B.attr = param1]

MODEL

IndexUnit
selectedOID

params

Index units:

Entity
[Selector(params)]

Publish an index of elements (SET OF OBJECTS)

The container is an entity with (optional) selector


Input parameters for the computation of the selector:
Values for attribute comparisons
OID of related object

Output parameter:
OID of the object selected by the user

12

MODEL

Examples
No input links: all
objects shown

selOID
(B)

Input parameter: OID


of the source object of
the relationship role,
all related object are
shown

EntityB

sourceOID
(A)

selOID
(B)

EntityB
[Relationship(A2B)]

Param1

Input parameter:
value to be compared
with the attribute,
matching objects
shown

selOID
(B)

EntityB
[B.attr = Param1]

RUNNING CASE

ACME case: index unit in

Products page

selOID

Product

A simple index is
provided to the
user
Users can access
products by
clicking on index
elements

MODEL

MultiDataUnit
{OIDs}

params

Multidata units

Entity
[Selector(params)]

Present multiple instances of an entity (SET OF OBJECTS)

The container is an entity with (optional) selector


Input parameters requested for the computation of the
selector:

Values for attribute comparisons


OID of participants to relationships

Output parameter:

The set of OIDs of the published objects

13

MODEL

MultiData vs. Index

MultiData or Indexes?
Indexes can be used as access mechanism to shown
detailed information about one object
Multidata Units publish information about many objects at
time

The difference is in the output parameter:


Indexes output the OID of one selected object
Multidata units output the OIDs of all the displayed
objects

MODEL

Entry Unit
params

Unit for describing input forms that allow


information submission by the user
Content is shipped to other units via outgoing
links (normally one), using link parameters
Typically translated into HTML using the <form>
tag and the associated submit button

MODEL

Entry Fields
and Selection Fields
Entry units contains two types of widgets for
data entry:
Fields to insert new value
Selection fields to select a value from a list

Fields have properties:


Preloading (of an existing value in the field)
Modifiability (Y/N)
Visibility (hidden/shown)
Data type (string, integer, text, etc..)
Input validation rules

14

MODEL

Preloaded Fields
A field can be preloaded with value(s)
Field slots allow the concatenation of multiple values in the
same field
Slots can contain dynamic values taken from the database or
static values defined in the model
FirstName PF.S1
LastName PF.S2
NickName PF.S3

EntryUnit
PersonField

S1

S2

S3

AddrField
Artist

Selection fields need to be preloaded with a set of


instances (possibly with multiple slots per instance)
PersonField Bruce Springsteen the boss
Resulting
field
The user
chooses an instance among them

MODEL

Multichoice Unit
{selOIDs}

params

Entity
[Selector(params)]
[Preselector(params)]

Multichoice units:
Publish indexes of elements (SET OF OBJECTS) among which
the user to select one or more elements (with checkboxes)
The container is an Entity (with optional selector & pre-selector)

Input parameters:
Those requested for the computation of the selectors (values for
attribute comparisons and OID of participants to relationships)

Output parameters:
OIDs of the objects checked by the user
Preselector: allows one to define a sub-set of elements as pre-checked
(before any user interaction)

MODEL

Examples
{selOIDs}

Atzeni
(B)
Ceri
Fraternali
Versand
EntityB

sourceOID
(A)

Atzeni {selOIDs}
(B)
Ceri
Fraternali
Versand
EntityB

No input links: all objects


shown, no pre-checked
elements
Pre-selector: all objects
shown, pre-checked
elements related to A

[PRE:Relationship(A2B)]

sourceOID
(A)

{selOIDs}
Ceri
Fraternali (B)

Selector: only elements


related to A shown, no
pre-checked elements

EntityB
[Relationship(A2B)]

15

MODEL

Hierarchical Unit
{selOIDs}

params

{ Entity
(Relationship)
[Selector]}

Hierarchical units:

Publish an index of elements, with entries organized


hierarchically using entities connected by relationships
Allow the user to select one element from any level of the
hierarchy
The container is a set of entities and connecting relationships
(with optianl selectors at all levels)
Input param: requested for the computation of the selectors :
Values for attribute comparisons
OID of partecipants to relationships

Output parameter: OID of the object selected by the user

Hierarchical Unit
outgoing links
ParamA
ParamB
PEntityA
arB,P
arC

EntityB

EntityA
Category
[selector1]
SubCategory
EntityB
(A2B)
(Cat2SubCat)
[selector2]
Product
EntityC
(B2C)
(SubCat2Prod)
[selector3]

link a
link b
link c

EntityC

Tables link a
Kitchen link b
Korla KJD54
Chairs link a
Stools link b
Roy LKR34
OddVar JSQ87
Office link b
Jess RLT45

MODEL

link c

link c
link c
link c

Each link is rendered as an anchor at the proper


level of the hierarchy
The level where the link is placed depends on the
type of the link parameter(s)

MODEL

ScrollerUnit
{selOIDs}

params

Entity
[Selector(params)]
Scroller units:
Add browsing capabilities to a set of objects
Publish links to the first, previous, next, last object of the set
Used in conjunction with data, index and multidata units
Number of scrolled objects = block factor
Input: values for attribute comparisons, OID of participants to
a relationship
Output: the set of OIDs (possibly 1) of the current block of
objects
Always placed in the same page as another content unit that
publish the current (block of) object(s)

16

MODEL

Scroller + data unit

Artist

Artist

The entity is the same for the scroller and the data
unit
It is possible to access the data unit also from
another page and the scroller is automatically
syncronized

MODEL

Scroller + index
Paging the result of a search
t,y

Album
[Title contains t]
[Year > y]

Album

MODEL

Pages
A page is a container of one or more pieces of
information shown to the user at the same time
Nesting of pages is allowed: a page can have subpages
The user navigates a site made of pages
Book Index

Login

Catalog

17

MODEL

Non contextual links


A non contextual link is a link between pages
No context (information) is transported
HomePage

Book Index

The user can browse from a page to another one


via an anchor (e.g., >>Books)

MODEL

Home Page
The Home Page is the main page of a site
It is the first page of the site that the user should
see
Each siteview must contain a page marked as
Home
HomePage

Book Index

MODEL

Landmark pages
Store Page

Books

Books

Store Page

L
Book Details

Authors

Book Details

Authors

Landmark pages: globally visible pages. The user can jump to


them from everywhere in the site view
It is equivalent to a non contextual link implicitly defined from
every other page in the site view to the landmark page

18

MODEL

Areas
Area

An area is a set of logically homogeneous pages


Examples of areas:
Sections of a portal: Sport, Music, Technology,
Elements of a data-management system: Products management,
News management,

Areas can be nested, so that sub-areas can be


defined inside areas
Each area should have a DEFAULT PAGE or a
DEFAULT SUB-AREA, to give a meaning to landmark
areas and non-contextual links pointing to areas

MODEL

Site Views
A siteview is a set of pages and/or areas forming a
coherent view of the site
Multiple site views can be defined on the same data
model
Different site views can be published for different
types of users and for different types of output
devices
Site views can be
Public: everyone can enter
Private: access control with password protection is enforced

Acme site
view modeling
Two site views on the same data model
Customer: public, for customers
Admin: private, for the administrators and content
managers

19

RUNNING CASE

Acme customer site


view
Purpose: define the customer experience of the site
Structure:
Two main areas: products and combinations
Other landmark pages: home, stores
Customer
Combination
area

Product area

L
Home Page

Store Page

H,L

RUNNING CASE

ACME page modeling


Q: what main pages do I need in the site?
Home, Products, Combinations, Stores
AcmeHome

Product area

Combination area

Products

Stores

Combinations

Q: what other pages do I need?

Product detail, Combination detail, ByPrice,


BigImages,..
By price

Product
Page

Combination
Detail

BigImages

RUNNING CASE

ACME: HomePage

20

RUNNING CASE

ACME product page

RUNNING CASE

ACME combination
page

The Acme public siteview

21

Model-driven design of
Web applications
3. Content management
and access control

http://www.webratio.com

MODEL

Integrating hypertexts and


backend business logic
Example of web sites using back-end/remote
services:
Reservation Web site: create a reservation, undo a
reservation, overwrite a reservation..
Other examples: content management, e-commerce
trolley management, update of personal profile ..

How can we model the invocation of back end


operations, e.g., the update of content by the
user?
Response:
Embedding operation calls into the hypertext

MODEL

Operation Unit
Models a generic external operation, or a built-in
content manipulation operation
Input from one or more incoming links (at least
one is declared as normal link, the others as
transport links)
Two kinds of output links
OK link if the operation completes correctly
KO link if the operation fails

The predefined WebML units can be enriched by


adding custom external operations (e.g.
SendMail, )

22

MODEL

Built-in Operations
WebML predefines a set of frequently used built-in
operations to manage a sites content
They are the traditional database operations: create,
delete, modify, create relationship, delete
relationship
Users do not need to define the behaviour and the
implementation; they are provided off-the-shelf in
the model

MODEL

Built-in Operations
CREATE

DELETE

MODIFY

Create Unit

Delete Unit

Modify Unit

Entity

Entity

Entity

CONNECT

DISCONNECT

Connect
Unit

Disconnect
Unit

relationship

relationship

MODEL

In/out flow: create

value1 attribute1

KO
Create Unit

Nothing
OID of
the new object

OK

value2 attribute2

Entity

23

Example
ArtistCreationPage

CreationResultsPage
FName:FirstName
LName: LastName

ArtistEntry

CreateArtist

ArtistDetails
OK

KO
Artist
<FirstName := FName>
<LastName := LName>

Artist

KO

ArtistCreation

CreationResults

CREATE ARTIST

CREATION RESULTS

FirstName: Celine

FirstName: Celine

LastName: Dion

OK

LastName:
Press OK
to create

Dion

OK

MODEL

In/out flow: modify


Identifier(s) of the
object(s) to modify

value1 attribute2
Value2 attribute1
KO
Modify Unit

OIDs of objects to modify

Identifier(s) of the
modified object(s)

OK

Entity

Example:

ModifyArtist
BioData
KO

Result
ModifyBio

BioData
OK

Artist

BioEntry
Bio: BiographyField
Artist
<BiographicInfo := Bio>

Artist

KO

ModifyArtist

Result

EDIT BIOGRAPHY

ModifyArtist

BIOGRAPHY

Celine Dion

EDIT BIOGRAPHY
Celine Dion

Celine Dion was born in


1968, the youngest of
fourteen children.
OK

OK

Celine Dion
Bio: Celine Dion was born
in 1968, the youngest of
fourteen children.
OK

24

MODEL

In/out flow: delete


OIDs of the object(s) to delete

KO

OIDs of the
object(s) to delete

Delete Unit

Entity

Albums

Example:

Nothing

OK

AlbumIndex

DeletionError

DeleteAlbum

NotDeleted
KO

OK
Album

Album

Album

OK

DeletionError

Albums

Albums

NOT DELETED

DELETE ALBUMS
All the way
Anthology
Born in the USA
Bridges to Babylon
Imagine
Let's talk ...
Del
Sing-a-long

DELETE ALBUMS

All the way

Let's talk...

1999

1997

Anthology
Bridges to Babylon
Imagine

KO

Sing-a-long
1998

Del

MODEL

In/out flow: connect


Identifiers of the
objects to connect

OIDs of
source object(s)
to connect

KO
Connect
Unit

OIDs of
destination object(s)
to connect

Identifiers of the
connected objects

OK

relationship
role

Note: if the any of the input parameters is a set of OIDs,


the operation is applied to each element of the set
The disconnect operation is similar

MODEL

Example
ReviewPage

Result
Rev : Rev iew.OID

NewReview

ArtistDetails

KO

OK
Rev : OID

AssignReview

Rev iew

Art: Artist.OID
Rev : Rev iew.OID

Art:OID

AllArtists

Artist
[OID = Art]

ReviewDetails
ArtistToRev iew
[Artist.OID = Art ]
[Rev iew.OID = Rev ]

Artist

Rev iew
[OID=Rev ]
KO

Rev iew Page

NEW REVIEW
One of the most
romantic and
expressive artists
of the nineties.

Result

ARTISTS
Select an artist to
assign the review:

Beatles
* Dion
Prince

OK

ARTIST

REVIEW

First name:
Celine
Last name:
Dion

Review :
One of the m ost
rom antic and
expressive artists
of the nineties.

25

MODEL

Example/2
Artist&AlbumsPage
ArtistDetails

KO

OK

Album
Disconnect

Artist

PublishedAlbums

AlbumDetails
AlbumToArtist

Album
[ArtistToAlbum]

Album

KO

Artist&Albums

Celine Dion
ALBUMS

Artist&Albums

Artist&Albums

Celine Dion
ALBUMS
DETAILS
Sing-a-long

All the way

All the way

Let's talk...

Let's talk...

Sing-a-long
These are...

* Sing-a-long
These are...

1999

Celine Dion
ALBUMS
OK

All the way


Let's talk...
These are...

Press OK
to remove

OK

Acme administrator

Using global
information
It is often necessary to:
Set a parameter value (e.g. the country or language
preferred by a user)
Use this value globally in all the pages the site view,
without carrying it explicitly along links

Solution
Use global parameters stored in the session
Provide means for setting/getting their value

26

Global Parameters
Global parameters model site-wide information
stored globally or in the user session
A context parameter is defined by:
Name
ID
Duration (User session or Application)
Value type: can be either:
A Printable value (integer, string, )
An Entity (thus, the parameter can assume an OID value
of that entity)

Default value [optional]

Set unit
Unit that allows to SET the value of a parameter
Value/OID

ParamName

It is always placed outside a Page


It has only an incoming link (carrying the value to
be assigned to the parameter)
It has not outgoing links

Get unit
Unit that allows to RETRIEVE the value of a
parameter
Value/OID

ParamName

It is always placed inside a Page


It has only an outgoing link (carrying the value
retrieved from the parameter)
It has not incoming links
The retrieved value can be used in other units

27

Example
GetCountry

SetCountry

NewsPage[L]
CountryData
CurrCountry

CurrCountry

ProductPage [L]

CountrySelectionPage [L]
CountryIndex

CountryData

CountryData

Country

LocalNews

Country

Country

Country

LocalProducts

News
[Country2News]

Product
[Country2Product]

Personalization
Personalization has three facets:
Access control: login/logout operations for user
recognition

Site view assignement: based on the group the

user belong to, some site views are accessible (1 or


more site view per Group)
Content customization: user- or group-dependent
content

MODEL

User / Group model


Each User can belong to one or more Groups
(predefined entities in the structural model)
Each user has one default Group
Each group has one associated Siteview
User

1:N
1:1

1:N
user2group

1:N

user2defaultGroup

Group

1:1
1:N
SiteView

28

MODEL

Login/ Logout
A site-view may contain a page allowing users to
login
Entry Unit

Login

Each secured site-view should allow users to


logout
Logout

Changing Role (i.e. group) dynamically is allowed


ChangeGroup

MODEL

CurrentUser and
CurrentGroup
Each WebML project has two predefined
global parameters:

CurrentUser: the OID of the currently logged


User
CurrentGroup: the OID of the Group of the
currently logged user

Login and Logout operations automatically


set / unset these two parameters

MODEL

Page personalization
(user-level)
Personalization can be achieved with appropriate
data design
articles

preference

user

Hypertext can reflect structure,


and thus provide personalization
Recommendations

CurrentUser

user

article
[preference]

After login
CurrentUser is
identified, thus
the index
shows users
preferred
articles

29

Trolley management
TrolleyPage
GetUser

OK

CurrentUser

CurrentUser

TrolleyData

User

Trolley
[UserToTrolley]

OrderLines

DeleteOrderLine

to Artist Page
Artist:Artist.OID

Album:Album.OID
KO
OrderLine

to Album Page
OrderLine
[TrolleyToOrderLine]
NEST Support
[OrderLineToSupport]
NEST Album
[SupportToAlbum]
NESTArtist
[AlbumToArtist]

References
Building data-intensive Web applications.
By Stefano Ceri, Piero Fraternali, Aldo Bongio, Marco
Brambilla, Sara Comai, Maristella Matera, will be
published by Morgan-Kaufmann (Jim Grays series),
December 2002.

www.webml.org
WebML resources (papers, manuals, )
Web modeling compendium & bibliography

www.webratio.com
Tool can be downloaded for academic use

30

Vous aimerez peut-être aussi