OsCommerce - Universitat Politècnica de Catalunya (UPC)

Transcription

OsCommerce - Universitat Politècnica de Catalunya (UPC)
OsCommerce
CONCEPTUAL SCHEMA
Albert Tort Pugibet
Universitat Politècnica de Catalunya (UPC)
esquemaconceptual
OsCommerce
[ ÍNDEX ]
1
2
SCHEMA PRESENTATION...............................................................2
1.1
THE osCommerce SYSTEM ...................................................................................2
1.2
THE osCommerce CONCEPTUAL SCHEMA .........................................................2
STRUCTURAL SCHEMA ..................................................................4
2.1
INTRODUCTION .....................................................................................................4
2.2
OVERVIEW DIAGRAM ...........................................................................................5
2.3
MAIN DOMAIN CONCEPTS ...................................................................................6
2.4
STORE CONFIGURATION .....................................................................................7
Store Data ...............................................................................................................7
Minimum and maximum values .............................................................................10
Customer details configuration ..............................................................................12
Shipping and Packaging configuration ..................................................................13
Download configuration .........................................................................................14
Stock configuration ................................................................................................15
Payment methods..................................................................................................16
Shipping methods ..................................................................................................18
Languages.............................................................................................................20
Currencies .............................................................................................................22
Location & Taxes ...................................................................................................24
2.5
STORE ADMINISTRATION...................................................................................28
Products ................................................................................................................28
Product attributes and options ...............................................................................32
Product categories.................................................................................................35
Specials .................................................................................................................38
Manufacturers........................................................................................................40
Banners .................................................................................................................42
Newsletters ............................................................................................................45
2.6
CUSTOMERS........................................................................................................48
Customers .............................................................................................................48
2.7
ONLINE CATALOG ...............................................................................................52
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
Reviews .................................................................................................................52
Shopping carts.......................................................................................................54
Orders....................................................................................................................58
3
BEHAVIORAL SCHEMA .................................................................66
3.1
INTRODUCTION ...................................................................................................66
3.2
USE CASE DIAGRAM...........................................................................................66
3.3
USE CASE SPECIFICATION ................................................................................72
Change store data .................................................................................................72
Assign minimum values .........................................................................................73
Assign maximum values ........................................................................................73
Change shown customer details ...........................................................................74
Assign shipping and packaging configuration values ............................................74
Change download configuration values.................................................................75
Change stock configuration values........................................................................75
Install a payment method ......................................................................................76
Uninstall a payment method ..................................................................................77
Change payment method values ...........................................................................77
Install a shipping method .......................................................................................78
Uninstall a shipping method ..................................................................................79
Change shipping method values ...........................................................................79
Add a language .....................................................................................................80
Edit a language......................................................................................................80
Delete a language .................................................................................................81
Set the default language........................................................................................81
Add a currency ......................................................................................................82
Edit a currency.......................................................................................................82
Delete a currency ..................................................................................................82
Update currencies .................................................................................................83
Set the default currency.........................................................................................83
Add a country ........................................................................................................84
Edit a country.........................................................................................................84
Delete a country ....................................................................................................84
Add a zone ............................................................................................................85
Edit a zone.............................................................................................................85
Delete a zone ........................................................................................................86
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
Add a tax zone.......................................................................................................86
Edit a tax zone .......................................................................................................86
Delete a tax zone...................................................................................................87
Add a tax class ......................................................................................................87
Edit a tax class ......................................................................................................87
Delete a tax class ..................................................................................................88
Add a tax rate ........................................................................................................88
Edit a tax rate ........................................................................................................89
Delete a tax rate ....................................................................................................89
Add a product ........................................................................................................89
Add a product option .............................................................................................90
Edit a product option..............................................................................................91
Delete a product option .........................................................................................91
Add a product option value ....................................................................................91
Edit a product option value ....................................................................................92
Delete a product option value ................................................................................92
Add a product attribute ..........................................................................................93
Edit a product attribute ..........................................................................................93
Delete a product attribute ......................................................................................94
Edit a product ........................................................................................................94
Delete a product ....................................................................................................95
Move a product......................................................................................................95
Link a product ........................................................................................................96
Add a product category .........................................................................................96
Edit a product category..........................................................................................96
Move a product category .......................................................................................97
Delete a product category .....................................................................................97
Add a special .........................................................................................................98
Edit a special .........................................................................................................98
Delete a special .....................................................................................................98
Add a manufacturer ...............................................................................................99
Edit a manufacturer ...............................................................................................99
Delete a manufacturer .........................................................................................100
Add a banner .......................................................................................................100
Edit a banner .......................................................................................................100
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
Delete a banner ...................................................................................................101
Add a banner group .............................................................................................101
Edit a banner group .............................................................................................102
Delete a banner group .........................................................................................102
Send an email......................................................................................................102
Create a newsletter .............................................................................................103
Edit a newsletter ..................................................................................................103
Delete a newsletter..............................................................................................104
Lock a newsletter.................................................................................................104
Unlock a newsletter .............................................................................................104
Send a newsletter................................................................................................105
Create a customer ...............................................................................................105
Change password................................................................................................106
Change customer details .....................................................................................106
Administrate address book ..................................................................................106
Administrate subscriptions...................................................................................107
Edit a customer....................................................................................................108
Delete a customer ...............................................................................................108
Open session.......................................................................................................109
Finish session ......................................................................................................109
Log in...................................................................................................................110
LogOut.................................................................................................................110
Change the current language ..............................................................................111
Change the current currency ...............................................................................111
Add a review ........................................................................................................111
Edit a review ........................................................................................................112
Delete a review ....................................................................................................112
Place an order .....................................................................................................113
Cancel an order ...................................................................................................114
Add an order status .............................................................................................115
Edit an order status .............................................................................................115
Delete an order status .........................................................................................116
Change the status of an order .............................................................................116
Set cancelled order status ...................................................................................117
Set default order status .......................................................................................117
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
Show a banner ....................................................................................................117
Click a banner......................................................................................................118
Read a review......................................................................................................118
Download a product.............................................................................................118
Show manufacturer’s web ...................................................................................119
Show products under stock .................................................................................119
Show expected products .....................................................................................119
Show orders of a customer..................................................................................120
Show previous orders ..........................................................................................120
Show best viewed products .................................................................................120
Show best products purchased ...........................................................................121
Show customer’s orders total ..............................................................................121
Online customers.................................................................................................121
Show specials......................................................................................................122
Show products of a category ...............................................................................122
Show products of a manufacturer........................................................................122
Show new products .............................................................................................123
Show reviews of a product ..................................................................................123
Tell to a friend......................................................................................................123
Generate an invoice ............................................................................................124
Generate a packaging slip ...................................................................................124
3.4
EVENTS SPECIFICATION..................................................................................125
AddProductToShoppingCart................................................................................125
AddressBookEntriesMaximumChange ................................................................126
AllowCheckoutStockConfigurationChange ..........................................................127
AllowGuestToTellAFriendChange .......................................................................127
AttributeChange...................................................................................................128
CancelOrder ........................................................................................................128
CheckLevelStockConfigurationChange ...............................................................129
CityMinimumChange ...........................................................................................129
ClickBanner .........................................................................................................130
ClickManufacturer................................................................................................130
CompanyCustomerDetailChange ........................................................................131
CompanyNameMinimumChange.........................................................................131
CountryChange ...................................................................................................132
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
CountryShippingConfigurationChange ................................................................132
CreditCardNumberMinimumChange ...................................................................133
CreditCardOwnerNameMinimumChange ............................................................133
CurrencyStatusChange .......................................................................................134
CustomerStatusChange ......................................................................................134
DateOfBirthCustomerDetailChange.....................................................................135
DateOfBirthMinimumChange...............................................................................135
DaysExpiryDelayDownloadConfigurationChange ...............................................136
DefaultSearchOperatorChange ...........................................................................136
DeleteBanner.......................................................................................................137
DeleteBannerGroup.............................................................................................137
DeleteCategory....................................................................................................138
DeleteCountry......................................................................................................139
DeleteCurrency....................................................................................................140
DeleteCustomer...................................................................................................140
DeleteCustomerAddress .....................................................................................141
DeleteLanguage ..................................................................................................142
DeleteManufacturer .............................................................................................142
DeleteNewsletter .................................................................................................143
DeleteOrderStatus ...............................................................................................144
DeleteProduct ......................................................................................................145
DeleteProductAttribute ........................................................................................145
DeleteProductNotificationSubscription ................................................................146
DeleteProductOption ...........................................................................................146
DeleteProductOptionValue ..................................................................................147
DeleteReview ......................................................................................................148
DeleteSession .....................................................................................................148
DeleteSpecial ......................................................................................................149
DeleteTaxClass ...................................................................................................149
DeleteTaxRate.....................................................................................................150
DeleteTaxZone ....................................................................................................151
DeleteZone ..........................................................................................................151
DisplayCartAfterAddingProductChange ..............................................................152
DisplayPricesWithTaxChange .............................................................................152
EditAuthorizeNetPaymentMethod........................................................................153
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
EditBanner...........................................................................................................154
EditBannerGroup .................................................................................................155
EditCashOnDeliveryPaymentMethod ..................................................................155
EditCategory ........................................................................................................156
EditCheckMoneyPaymentMethod .......................................................................157
EditCountry ..........................................................................................................158
EditCreditCardPaymentMethod ...........................................................................158
EditCurrency ........................................................................................................159
EditCustomer.......................................................................................................160
EditCustomerAddress..........................................................................................161
EditCustomerDetails ............................................................................................163
EditDownloadableAttribute ..................................................................................164
EditFlatRateShippingMethod ...............................................................................165
EditGlobalNotifications ........................................................................................166
EditIPaymentPaymentMethod .............................................................................166
EditLanguage ......................................................................................................167
EditManufacturer .................................................................................................168
EditNewsletter .....................................................................................................169
EditNochexPaymentMethod ................................................................................169
EditOrderStatus ...................................................................................................170
EditPayPalPaymentMethod .................................................................................171
EditPerItemShippingMethod ................................................................................172
EditProduct ..........................................................................................................173
EditProductNotification ........................................................................................174
EditProductOption ...............................................................................................174
EditProductOptionValue ......................................................................................175
EditPSiGatePaymentMethod ...............................................................................176
EditReview...........................................................................................................177
EditSECPaymentMethod .....................................................................................178
EditSpecial...........................................................................................................179
EditTableRateShippingMethod ............................................................................180
EditTaxClass .......................................................................................................181
EditTaxRate .........................................................................................................181
EditTaxZone ........................................................................................................182
EditTwoCheckOutPaymentMethod......................................................................183
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
EditUSPostalServiceShippingMethod..................................................................184
EditZone ..............................................................................................................185
EditZoneRatesShippingMethod ...........................................................................185
EMailAddressChange ..........................................................................................186
EMailAddressMinimumChange ...........................................................................187
EMailFromChange...............................................................................................187
EnableDownloadConfigurationChange ...............................................................188
ExpectedSortFieldChange...................................................................................188
ExpectedSortOrderChange .................................................................................189
FirstNameMinimumChange .................................................................................189
GenderCustomerDetailChange ...........................................................................190
IncrementAndSignAttributeChange .....................................................................190
InstallAuthorizeNetPaymentMethod ....................................................................191
InstallCashOnDeliveryPaymentMethod ...............................................................191
InstallCheckMoneyPaymentMethod ....................................................................192
InstallCreditCardPaymentMethod........................................................................192
InstallFlatRateShippingMethod............................................................................193
InstallIPaymentPaymentMethod ..........................................................................194
InstallNochexPaymentMethod .............................................................................194
InstallPayPalPaymentMethod..............................................................................195
InstallPerItemShippingMethod.............................................................................195
InstallPSiGatePaymentMethod............................................................................196
InstallSECPaymentMethod..................................................................................197
InstallTableRateShippingMethod.........................................................................197
InstallTwoCheckOutPaymentMethod ..................................................................198
InstallUSPostalServiceShippingMethod ..............................................................198
InstallZoneRatesShippingMethod........................................................................199
LastNameMinimumChange .................................................................................200
LinkProduct..........................................................................................................200
LockNewsletter ....................................................................................................201
LogIn....................................................................................................................201
LogOut.................................................................................................................202
NameChange ......................................................................................................203
MaximumNumberDownloadConfigurationChange ..............................................203
MaximumPackageWeightShippingConfigurationChange ....................................204
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
MoveCategory .....................................................................................................204
MoveProduct .......................................................................................................205
NewBanner ..........................................................................................................205
NewBannerGroup ................................................................................................206
NewCategory .......................................................................................................207
NewCountry.........................................................................................................208
NewCurrency .......................................................................................................209
NewCustomer ......................................................................................................210
NewCustomerAddress.........................................................................................212
NewDownloadableProductAttribute .....................................................................214
NewLanguage .....................................................................................................215
NewManufacturer ................................................................................................216
NewNewsletter ....................................................................................................217
NewOrderStatus ..................................................................................................217
NewProduct .........................................................................................................218
NewProductAttribute............................................................................................219
NewProductNotification .......................................................................................220
NewProductNotificationSubscription ...................................................................221
NewProductOption ..............................................................................................222
NewProductOptionValue .....................................................................................223
NewReview..........................................................................................................224
NewSession.........................................................................................................224
NewSpecial..........................................................................................................225
NewTaxClass ......................................................................................................225
NewTaxRate ........................................................................................................226
NewTaxZone .......................................................................................................227
NewZone .............................................................................................................228
OrderConfirmation ...............................................................................................229
OwnerChange .....................................................................................................231
PasswordChange ................................................................................................231
PasswordMinimumChange..................................................................................232
PercentageIncreaseForLargerPackagesShippingConfigurationChange .............232
PostCodeMinimumChange..................................................................................233
PostCodeShippingConfigurationChange .............................................................233
PrimaryCustomerAddressChange .......................................................................234
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
ProductAttributeStatusChange ............................................................................235
ProductDownload ................................................................................................235
ProductOptionAttributeChange............................................................................237
ProductOptionValueAttributeChange ..................................................................237
ProductStatusChange .........................................................................................238
ReadProductInfo..................................................................................................238
ReadReview ........................................................................................................239
ReorderLevelStockConfigurationChange ............................................................239
RestorePreviousShoppingCart ............................................................................240
ReviewTextMinimumChange...............................................................................241
SendExtraOrderEmailChange .............................................................................241
SendNewsletter ...................................................................................................242
SetCancelledOrderStatus ....................................................................................242
SetCurrentCurrency.............................................................................................243
SetCurrentLanguage ...........................................................................................243
SetDefaultCurrency .............................................................................................244
SetDefaultLanguage ............................................................................................245
SetDefaultOrderStatus ........................................................................................245
ShowBanner ........................................................................................................246
ShowBestPurchasedProducts .............................................................................246
ShowBestViewedProducts ..................................................................................247
ShowCustomersOrdersTotal ...............................................................................247
ShowExpectedProducts ......................................................................................248
ShowNewProducts ..............................................................................................249
ShowOnlineCustomers ........................................................................................249
ShowOrdersOfCustomer .....................................................................................250
ShowProductsOfCategory ...................................................................................251
ShowProductsOfManufacturer ............................................................................252
ShowReviewsOfProduct ......................................................................................253
ShowSpecials ......................................................................................................253
ShowUnderStockProducts...................................................................................254
StateCustomerDetailChange ...............................................................................255
StateMinimumChange .........................................................................................255
StatusPaymentMethodChange............................................................................256
StatusShippingMethodChange ............................................................................256
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
esquemaconceptual
OsCommerce
StoreAddressAndPhoneChange .........................................................................257
StreetAddressMinimumChange...........................................................................257
SubstractStockConfigurationChange ..................................................................258
SuburbCustomerDetailChange............................................................................258
SwitchToDefaultLanguageCurrencyChange .......................................................259
TaxDecimalPlacesChange ..................................................................................259
TelephoneMinimumChange ................................................................................260
TypicalPackageTareWeightShippingConfigurationChange.................................260
UnInstallAuthorizeNetPaymentMethod................................................................261
UninstallCashOnDeliveryPaymentMethod...........................................................261
UninstallCheckMoneyPaymentMethod................................................................262
UninstallCreditCartPaymentMethod ....................................................................262
UninstallIPaymentPaymentMethod......................................................................263
UninstallNochexPaymentMethod.........................................................................264
UninstallPayPalPaymentMethod .........................................................................264
UninstallPerItemPaymentMethod ........................................................................265
UninstallPSiGatePaymentMethod .......................................................................265
UninstallSECPaymentMethod .............................................................................266
UninstallTableRatePaymentMethod ....................................................................267
UninstallTwoCheckOutPaymentMethod ..............................................................267
UninstallUSPostalServicePaymentMethod..........................................................268
UninstallZoneRatesShippingMethod ...................................................................268
UninstallFlatRateShippingMethod .......................................................................269
UnlockNewsletter.................................................................................................270
UpdateCurrencyValueChange.............................................................................270
UpdateOrderStatus..............................................................................................271
UpdateShoppingCart ...........................................................................................272
ZoneChange ........................................................................................................273
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
ÍNDEX
SCHEMA
PRESENTATION
conceptualschema
1
OsCommerce
1 SCHEMA PRESENTATION
1.1 THE osCommerce SYSTEM
E-commerce allows people exchanging goods and services with no barriers of time or
distance. Surfing the net, you can easily find online shops where you can buy almost
anything you need, at any time and without leaving home.
Electronic commerce changes the way of business operate. Nowadays, it is possible to start
a 24 hours opened online store with lower costs than traditional establishments. The idea of
small local shops has no sense for e-commerce: online stores are international accessible
since they start operating.
osCommerce is an e-commerce solution available as free software under the GNU General
Public License. osCommerce project was started in March 2000 in Germany and since then,
it has become the base of thousands of online stores around the world.
1.2 THE osCommerce CONCEPTUAL SCHEMA
The main purpose of this work is giving a conceptual schema of the osCommerce system as
a result of a reverse engineering process. This conceptual schema is specified using
standard UML and OCL with some extensions to improve expressivity.
The osCommerce conceptual schema is shown in chapters 2 and 3. It has been made up
using the public documentation of the system (sometimes limited and imprecise),
experimenting as a user with the current version and analysing the database schema.
We publish this work and we make it accessible for the community. It can be a
complementary documentation of the system and a detailed specification of its knowledge
and behaviour. It can be useful for engineers who are going to develop online stores based
on osCommerce and for everyone interested on it.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
2
STRUCTURAL
SCHEMA
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2 STRUCTURAL SCHEMA
2.1 INTRODUCTION
In this chapter we develop the structural schema of the osCommerce information system.
The main purpose of the osCommerce structural schema is providing a description of the
conceptualization of the osCommerce domain.
The structural schema is too large to be presented without partitioning it. For that reason, this
chapter begins with an UML general view diagram with the most important conceptual entity
types and their relationship types.
Afterwards, the whole schema is structured in several more detailed diagrams in order to
make it more understandable. Each diagram corresponds to a part of the whole detailed
schema and groups some related concepts which can be seen as a set of knowledge about
the information system.
Entities which participate in relationships of a structural schema fragment but are full
specified in other conceptual grouping diagrams are drawn without showing their attributes.
Moreover, these “external” entities have a reference which links them to the page where its
complete specification can be found.
Each fragment of the whole structural schema diagram is represented in UML and it is
introduced by a brief textual overview. Derived types and integrity constraints are specified in
OCL. The structural schema specification uses standard UML with some extensions
(specification of derived types and constraints by OCL operations, constant and permanent
stereotypes…) explained in Conceptual Modeling of Information Systems [Oli07] written by
Antoni Olivé.
In addition, a detailed description about the schema fragment and example instantiations of
it, improve comprehension. Some of the example instantiations are inspired from real online
shops based on osCommerce which can be found in the osCommerce website
(www.oscommerce.com). Others are made up from real life experiences.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
4
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2.2 OVERVIEW DIAGRAM
The next diagram represents a simplified conceptual schema which gives an overview of the
main concepts in the osCommerce domain. More details about each concept are given in the
next section, where the whole schema is fully specified.
Category
*
Manufacturer
0..1
ProductAttribute
Option
*
*
Review
*
*
Product
1
*
*
*
Attribute
*
1
*
0..1
TaxClass
Value
*
*
OrderLine
1
*
OrderLineAttribute
1
Customer
1..*
1
PaymentMethod
*
1
Order
*
ShippingMethod
*
0..1
*
1
1
1..*
Currency
Zone
1
0..1
*
*
1
Address
*
1
*
1
0..1
Session
*
1
Country
Language
0..1
0..1
ShoppingCart
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
Newsletter
Banner
5
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2.3 MAIN DOMAIN CONCEPTS
The products in the store are manufactured by manufacturers, are grouped into categories
and belong to a tax class. Moreover, customers can write reviews of a product.
osCommerce is a multilingual system able to deal with any number of languages. Likewise,
osCommerce allows working with different tax classes and currencies.
Products may have attributes. An attribute is an option/value pair which is used to offer
multiple varieties of a product without needing to create many separate but very similar
products. The price of a product is increased or decreased depending on the chosen
attributes. The price variation produced by an attribute is indicated, for each product, by
product attribute entity types.
Customers have one or more addresses. Each address is located in a country. If the
country has zones (states or provinces) then the address must be located in one of its
zones.
Every use of the online store is conceptually represented by a session. Sessions can be
anonymous or belong to a customer. Moreover, every session has always a current currency
and a current language.
In the context of sessions, users can surfing the online store. Shopping carts contain one or
more selected items (not shown in the figure) each of which is a quantity of a product with a
set of attributes.
When a customer confirms that he wants to buy the contents of his shopping cart the system
generates an order. An order is made by a customer using a payment method.
Furthermore, order prices are expressed in a specified currency and take into account the
shipping costs, according to the chosen shipping method.
An order contains one or more order lines, each of which is a quantity of a product with a
set of attributes.
Finally, osCommerce offers some administration tools like banners, used to customize the
online advertisements in the store, and newsletters, used to send information by email to
customers.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
6
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2.4 STORE CONFIGURATION
Store Data
„
Overview
osCommerce keeps general data about the store and some other information which is used
to customize the behaviour of the system.
„
Conceptual Diagram
Store
{<<Constant>>}
Languages 20
Language 1
*
defaultLanguage
Currency
1
defaultCurrency
*
Currencies 22
name : String [0..1]
owner : String [0..1]
eMailAddress : EMail [0..1]
eMailFrom : EMail [0..1]
expectedSortOrder : SortOrder
expectedSortField : SortField
sendExtraOrderEMail : NameEMail [*]
displayCartAfterAddingProduct : Boolean
allowGuestToTellAFriend : Boolean
defaultSearchOperator : Operator
storeAddressAndPhone : String [0..1]
taxDecimalPlaces : Natural
displayPricesWithTax : Boolean
switchToDefaultLanguageCurrency : Boolean
*
*
1 defaultStatus
1
cancelledStatus
OrderStatus
Orders 58
<<enumeration>>
<<enumeration>>
<<enumeration>>
SortOrder
Operator
SortField
ascending
descending
and
or
productName
expectedDate
<<dataType>>
<<dataType>>
NameEMail
EMail
name : String
eMail : EMail
eMail : String
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
7
Location & Taxes 24
0..1
1
Country
1
*
0..1
0..1
Zone
Location & Taxes 24
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Constraints
„
[1] There is only one instance of Store
context Store::alwaysOneInstance: Boolean
body : Store.allInstances() -> size() = 1
[2] The store’s zone is part of the country where the store is located.
context Store::zoneIsPartOfCountry: Boolean
body : self.zone -> notEmpty() implies self.country.zone -> includes (self.zone)
Description
„
There is only one instance of Store which is created and initialized on installation. It stores
the general data of the store and some other customizable properties:
•
Name: The store’s name.
•
Owner: The store owner’s name.
•
Email address: The store’s email address.
•
Email from: The email address used to send emails.
•
Country: The country where the store is located.
•
Zone: The state, zone or province where the store is located.
•
Expected sort order: Specifies how products are listed, either in ascending or
descending order.
•
Expected sort field: Specifies which field is used to sort products.
•
Send extra order e-mail: This is a set of NameEmail entities. It stores the email
addresses where orders will be received. There can be several email addresses for
backups.
•
Display cart after adding a product: Specifies whether the shopping cart will be
shown automatically by the system after adding a product.
•
Allow guest to tell a friend: Specifies whether users can send an e-mail to a friend
with information about the store.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
8
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
•
Default search operator: Specifies which operator is used in searches.
•
Store address and phone: The store owner’s name, phone, and other public
information that will be shown to customers.
•
Tax decimal places: Sets how many decimal places are used in taxes.
•
Display prices with tax: Indicates whether prices are shown with taxes or not.
•
Switch to default language currency: Specifies whether the system automatically
changes the currency when the language is changed.
„
•
Default language: Specifies the language used by default.
•
Default currency: Specifies the currency used by default.
•
Cancelled status: The OrderStatus used to indicate that an order is cancelled.
•
Default status: The OrderStatus assigned when an order is created.
Example
Gaudisc is a classical music online shop based on osCommerce. This is a possible
instantiation of Store for this shop:
gaudisc : Store
spanish : Language
defaultLanguage
euro : Currency
defaultCurrency
cancelado : OrderStatus
cancelledStatus
pendiente : OrderStatus
name = "Gaudisc"
eMailAddress = "info@gaudisc.com"
eMailFrom = "gaudisc@gaudisc.com"
expectedSortField = productName
expectedSortOrder = ascending
sendExtraOrderEMail = "orders@gaudisc.com,
backup@gaudisc.com"
displayCartAfterAddingProduct = true
allowGuestToTellAFriend = true
defaultSearchOperator = or
storeAddressAndPhone = " C/Historiador Mayans, 7
08026 Barcelona
Tel.934 355 441 "
taxDecimalPlaces = "2"
displayPricesWithTax = false
switchToDefaultLanguageCurrency = false
defaultStatus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
9
spain : Country
barcelona : Zone
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Minimum and maximum values
Overview
„
osCommerce allows defining the minimum and maximum length for some String attributes.
Structural Schema
„
<<utility>>
MinimumValues
firstName : PositiveInteger
lastName : PositiveInteger
dateOfBirth : PositiveInteger
eMailAddress : PositiveInteger
streetAddress : PositiveInteger
companyName : Natural
postCode : PositiveInteger
city : PositiveInteger
state : PositiveInteger
telephoneNumber : PositiveInteger
password : PositiveInteger
creditCardOwnerName : PositiveInteger
creditCardNumber : PositiveInteger
reviewText : Natural
<<utility>>
MaximumValues
addressBookEntries : Natural
Description
„
MinimumValues sets the minimum length of the following customer attributes:
•
First name
•
Last Name
•
Date of birth
•
Email From
•
Street address
•
Company
•
City and postal code
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
10
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
•
State
•
Telephone number
•
Password
•
Owner’s credit card name
•
Credit card number
Moreover, MinimumValues specifies the minimum length of:
•
Product reviews text
Finally, MaximumValues specifies the maximum number of:
•
Address book entries permitted for each customer.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
11
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Customer details configuration
Overview
„
The system allows specifying whether some customer attributes are shown and required
when creating, editing or showing an account.
Structural Schema
„
<<utility>>
CustomerDetails
gender : Boolean
dateOfBirth : Boolean
company : Boolean
suburb : Boolean
state : Boolean
Description
„
CustomersDetails allows configuring whether the following customer attributes are shown or
not:
•
Gender
•
Date of birth
•
Company name
•
Suburb
•
State
Customer attributes which are not shown, are not required when creating or editing an
account, even if they are mandatory customer attributes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
12
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Shipping and Packaging configuration
„
Overview
The system allows setting up some configuration values used in shipping costs calculation.
„
Structural Schema
<<utility>>
ShippingAndPackaging
postCode : PostalCode [0..1]
maximumPackageWeight : Decimal
typicalPackageTareWeight : Decimal
percentageIncreaseForLargerPackages : Decimal
Location & Taxes 24
0..1
1
Country
countryOfOrigin
<<dataType>>
PostalCode
postalCode : String
„
Constraints
[1] The package tare weight must be less than the maximum package weight.
context ShippingAndPackaging::tareIsLessThanMaximumWeight: Boolean
body : self.typicalPackageTareWeight < self.maximumPackageWeight
„
Description
The postal code and the country of origin are used for the system to calculate shipping
quotes in some shipping methods.
Maximum package weight is the maximum weight permitted for a single package.
Package tare weight is the typical weight of shipping box and packing material and it is
added to the weight of products when computing postage. Larger packages increase their
weight as indicated in the percentage increase for larger packages attribute instead of
using the typical package tare weight.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
13
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Download configuration
Overview
„
The system allows customizing the most important general downloadable product properties.
Structural Schema
„
<<utility>>
Download
enableDownload : Boolean
daysExpiryDelay : Natural
maximumNumberOfDownloads : Natural
Description
„
There is a special type of product Option which allows customers downloading it.
The general properties of downloadable products can be customized setting up the following
attributes:
• Enable download: Determines whether it is possible to download products.
•
Expiry delay: Specifies the maximum number of days the downloadable file of a
product will be available.
•
Maximum number of downloads: Sets the maximum number of times the customer
will be able to download the same product.
These values are used as default when creating a downloadable product attribute, although it
can be redefined then.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
14
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Stock configuration
„
Overview
The system allows configuring some options about the stock administration.
„
Structural Schema
<<utility>>
Stock
checkStockLevel : Boolean
substractStock : Boolean
allowCheckout : Boolean
stockReOrderLevel : Natural
„
Description
Checking the stock level can be enabled or disabled by changing the value of check stock
level attribute.
Moreover, it is possible to indicate whether the system has to decrease the stock when a
product is purchased, setting up the attribute subtract stock.
The store owner can allow customers checking out products even if there is insufficient stock
by activating the Boolean attribute allow checkout.
Finally, the attribute stock reorder level specifies the minimum inventory that indicates the
stock needs to be reordered.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
15
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Payment methods
„
Overview
The system allows operating with different payment methods.
„
Structural Schema
Orders 58
Location & Taxes 24
PaymentMethod
OrderStatus 0..1
*
*
status : Status
0..1
TaxZone
Currencies 22
AuthorizeNet
Nochex
CashOnDelivery
CheckMoney
CreditCard
splitCreditCardToMail : EMail
<<enumeration>>
makePayableTo : String
*
Currency
TwoCheckOut
PSiGate
SECPay
IPayment
PayPal
login : String
mode : TransactionMode
merchantNotification : Boolean
merchantID : String
mode : PSiGateMode
type : PSiGateType
creditCardCollection : PSiGateCollection
merchantID : String
mode : SECPayMode
account : Natural
user : String
password : String
eMail : EMail
<<enumeration>>
<<enumeration>>
<<enumeration>>
<<enumeration>>
TransactionMode
TransactionMethod
PSiGateMode
PSiGateType
PSiGateCollection
SECPayMode
test
production
creditCard
eCheck
production
alwaysGood
alwaysDuplicate
alwaysDecline
„
*
eMail : EMail
username : String
key : String
mode : TransactionMode
method : TransactionMethod
notification : Boolean
<<enumeration>>
SpecificCurrencyPaymentMethod
sale
preAuth
postAuth
local
remote
alwaysSuccessful
alwaysFail
production
<<enumeration>>
Status
enabled
disabled
Constraints
[1] There is at least one enabled payment method
context PaymentMethod::AtLeastOneEnabled: Boolean
body : PaymentMethod.allInstances() -> select (pm | pm.status=Status::enabled) -> size() >= 1
„
Description
The system allows customers paying through different payment methods, which can be
enabled or disabled by the store administrator.
Some of the payment methods, like Authorize.net, iPayment, Nochex, PayPal, 2Checkout,
PSiGate or SECPay, involve an external company for credit card processing.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
16
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
There are also a few methods that simply store information for off-line processing.
There are also modules available for handling cash, money order and check payments,
which do not involve an external merchant.
Therefore, all the payment methods have specific information about all the necessary data to
process the payment.
If the payment method has an associated TaxZone, it is only enabled in zones included in
the specified TaxZone.
If the payment method specifies an OrderStatus, the status of the orders paid through it, is
automatically setup to this status.
In addition, some payment methods have a set of associated currencies. In this case,
payment methods are only enabled for operating with these currencies.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
17
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Shipping methods
„
Overview
The system allows operating with different shipping methods.
„
Structural Schema
Location & Taxes 24
*
ShippingMethod
0..1
TaxClass
status : Status
Location & Taxes 24
ZoneRates
TaxZone 0..1
*
SpecificZoneMethod
items : ShippingTableItem [*]
HandlingFeeMethod
handlingFee : Money
*
*
Country
Location & Taxes 24
<<dataType>>
ShippingTableItem
FlatRate
cost : Money
cost : Money
<<dataType>>
TableRate
USPostalService
items : ShippingTableItem [*]
method : ShippingTableMethod
<<enumeration>>
Money
number : Natural
cost : Money
„
PerItem
userID : String
password : String
server : USPSServer
<<enumeration>>
USPSServer
Status
test
production
enabled
disabled
<<enumeration>>
ShippingTableMethod
weight
price
Constraints
[1] There is at least one enabled shipping method.
context ShippingMethod::AtLeastOneEnabled: Boolean
body : ShippingMethod.allInstances() -> select (sm | sm.enabled) -> size() >= 1
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
18
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Description
„
osCommerce allows customizing shipping methods which are available at checkout time.
During the checkout process, the chosen method is used to calculate the final shipping and
packaging costs for the order.
Depending on the selected method, the price can be affected by how many products have
been ordered, how much they weight or other criteria:
•
Flat rate: A single price is used on all orders, regardless of how many items are bought,
how much everything weights, etc…
•
Per Item: A single price is multiplied by the number of items in the customer’s basket. A
flat handling cost may also be added.
•
Table Rate: Table rate charging sets the price for shipping based on the total weight or
the total cost of the products ordered. The weight or price is looked up in a table to find
the matching range, and then that price is applied. This is similar to Flat Rate charging,
but with different levels.
•
United Parcel Service (UPS): The UPS shipping method interacts with the UPS
website to calculate the total price.
•
United States Postal Service (USPS): The USPS shipping method interacts with the
USPS website to calculate the total price.
•
Zone Rates: Zone rates shipping method is similar to Table Rate method. The total
weight of the customer's order is looked up in a table, and that price is used as the
shipping cost.
If the shipping method has an associated TaxClass, it will be applied in the shipping cost.
Specific zone methods can have an associated TaxZone. In this case, the payment method
is only applicable in zones included in the specified TaxZone.
Similarly, the associated countries for Zone Rates method represents the countries where
it is applicable.
Finally, like payment methods, shipping methods can be enabled or disabled as desired.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
19
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Languages
„
Overview
osCommerce is a multilingual system able to deal with any number of languages.
„
Structural Schema
Currencies 22
Language
name : String
code : String
image : File [0..1]
directory : String
sortOrder : Natural
„
*
0..1
defaultCurrency
Currency
Constraints
[1] A language is identified by its name and by its code
context Language::codeAndNameAreUnique: Boolean
body : Language.allInstances() -> isUnique(name) and Language.allInstances() -> isUnique(code)
„
Description
Languages can be added or deleted as desired and are identified by a name and a code.
The directory indicates to the system the name of the directory which contains its
configuration files.
Languages are listed taking into account the sort order number.
A language can have an image, which is used to identify it visually.
Moreover, languages can have a default currency.
If the Store attribute SwitchToDefaultLangaugeCurrency is true, when a language becomes
the current language, its default currency becomes the current currency.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
20
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
„
Examples
l1 : Language
l2 : Language
l3 : Language
l4 : Language
name = "English"
code = "EN"
name = "Deutsch"
code = "DE"
name = "Español"
code = "ES"
name = "Català"
code = "CAT"
defaultCurrency
defaultCurrency
dollar : Currency
euro : Currency
defaultCurrency
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
defaultCurrency
21
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Currencies
„
Overview
osCommerce allows working with different currencies.
„
Structural Schema
Currency
title : String
code : String
symbolLeft : String [0..1]
symbolRight : String [0..1]
decimalPlaces : Natural
value : Decimal
lastUpdate : DateTime [0..1]
status : Status
<<enumeration>>
Status
enabled
disabled
„
Constraints
[1] A currency is identified by its title and by its code.
context Currency::codeAndTitleAreUnique: Boolean
body :
Currency.allInstances() -> isUnique(title) and
Currency.allInstances() -> isUnique(code)
„
Description
Currencies can be added or deleted as desired by the store owner and are identified by a
title and a code. The product's price is multiplied by the attribute value in order to allowing
conversion between currencies.
For example, if the value of Euros is 1.0000 and the value of Dollars is 1.3286, we can
assume that product prices are saved by the system in Euros.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
22
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
If the current currency is changed to Dollars, all the prices will be multiplied by 1.3286 in
order to be expressed in Dollars.
Finally, the status of a currency indicates if the online store can currently operate with it.
„
Examples
osCommerce, by default, allows dealing with two different currencies: Euros and U.S.
Dollars. This is the instantiation of these currencies:
c1 : Currency
c2 : Currency
title = "Euro"
code = "EUR"
decimalPlaces = "2"
value = "1.0000"
symbolRight = "€"
title = "U.S.Dollar"
code = "USD"
decimalPlaces = "2"
symbolLeft = "$"
value = "1.3286"
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
23
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Location & Taxes
„
Overview
In order to supply a flexible use of taxes, product prices are stored tax free. This allows
calculating the final price of products depending on the customer's location and the tax class
applied to it.
„
Structural Schema
Country
Products 28
TaxClass
name : String
isoCode2 : String
isoCode3 : String
name : String
description : String [0..1]
rate : Natural
priority : Natural
description [0..1]
*
*
Zone
„
Product
*
TaxRate
*
1
name : String
code : String
0..1
TaxZone
*
*
name : String
description : String [0..1]
Constraints
[1] A Country is identified either by its name or its ISO codes.
context Country::nameAndCodesAreUnique: Boolean
body :
Country.allInstances() -> isUnique (name) and
Country.allInstances() -> isUnique (isoCode2) and
Country.allInstances() -> isUnique (isoCode3)
[2] A Zone is identified either by its name and country or its code and country.
context Zone::nameAndCountryAndCodeAndCountryAreUnique: Boolean
body :
Zone.allInstances() -> isUnique (Tuple{n:name, c:country}) and
Zone.allInstances() -> isUnique (Tuple{n:code, c:country})
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
24
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
[3] A TaxZone is identified by its name.
context TaxZone::nameIsUnique: Boolean
body : TaxZone.allInstances() -> isUnique (name)
[4] A TaxClass is identified by its name
context TaxClass::nameIsUnique: Boolean
body : TaxClass.allInstances() -> isUnique (name)
„
Description
The final price of products is calculated depending on the customer's location and the tax
class applied to a product. In order to be a customizable solution, osCommerce allows
setting up different types of taxes and different tax zones where they can be applied.
Tax Classes identify a particular type of tax.
Tax Zones are required to calculate the appropriate tax rate value based on where the
purchase is coming from and group Zones with the same tax regulation.
Tax Rates specify the tax percentage that is used in a Tax Zone for a TaxClass.
Priorities play an important role in a Tax Class as they state how multiple tax rates in the
same class are treated; either adding each rate together when the priorities are the same, or
compounding the rates together in the defining priority order.
„
Examples
The Value Added Tax (VAT) in the European Union is a general and indirect consumption
tax assessed on the value added to goods and services. Actually, rates are applied vary
between Member States and between certain types of products.
In Spain, for example, there are three types of VAT: general VAT (16%), reduced VAT (7%)
and super-reduced VAT (4%).
The following instantiation allows dealing with the three types of VAT for a Spanish online
store:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
25
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
esptz : TaxZone
name = "Spain"
z1 : Zone
z2 : Zone
name = "Barcelona"
name = "Tarragona"
z3 : Zone
z4 : Zone
name = "Lleida"
name = "Girona"
z5 : Zone
z7 : Zone
name = "Albacete"
name = "Sevilla"
tr1 : TaxRate
priority = "1"
rate = "16%"
description = "VAT 16%"
esptz : TaxZone
tc1 : TaxClass
name = "Spain"
name = "General products"
tr2 : TaxRate
description = "VAT 7%"
priority = "1"
rate = "7%"
tc2 : TaxClass
name = "Reduced products"
tr3 : TaxRate
description = "IVA 4%"
priority = "1"
rate = "4"
tc3 : TaxClass
name = "Super-reduced
products"
Otherwise, customers located in Quebec must pay a federal tax rate of 7% and a
compounded local tax rate of 7.5%.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
26
...
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Note that for a product bought in Quebec, you should pay a 7% and 7.5% compounded tax.
That is, you should add to your product’s price a 15,025% of taxes (1.075 x 0.07 + 0.075 =
0.15025).
The following instantiation allows dealing with Canadian Federal Tax and Quebec Local Tax:
cantz : TaxZone
name = "Canadian
Federal Tax Zone"
z2 : Zone
...
name = "Newfoundland"
z3 : Zone
name = "Ontario"
z4 : Zone
name = "Quebec"
z5 : Zone
name = " Yukon Territory "
quetz : TaxZone
name = "Quebec
Local Tax Zone"
tr1 : TaxRate
priority = "1"
rate = "7%"
description = "Federal Tax 7%"
cantz : TaxZone
tc1 : TaxClass
name = "Canadian
Federal Tax Zone"
name = "Canadian Federal Tax"
tr2 : TaxRate
priority = "2"
rate = "7.5%"
description = "Local Tax 7.5%"
quetz : TaxZone
tc2 : TaxClass
name = "Quebec
Local Tax Zone"
name = "Quebec Local Tax"
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
27
...
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2.5 STORE ADMINISTRATION
Products
„
Overview
The system must know the information about the products offered by the online store.
„
Structural Schema
Product
status : ProductStatus
available : DateTime [0..1]
netPrice : Money
/specialNetPrice [0..1]
/grossPrice : Money
quantityOnHand : Integer
/quantityOrdered : Natural
model : String [0..1]
imagePath : String [0..1]
weight : Decimal {<<constant>>}
/added : DateTime
/lastModified : DateTime [0..1]
*
0..1
*
*
Category
Product categories 35
*
*
Language
Languages 20
Manufacturer
ProductInLanguage
name : String
description : String [0..1]
url : URL [0..1]
viewed : Natural
<<enumeration>>
<<dataType>>
<<dataType>>
ProductStatus
Money
URL
inStock
outOfStock
„
Operations
context Product def:
addTaxes(z:Zone, basePrice:Money) : Money =
let appliedTaxRates:Set(TaxRate)=
z.taxZone.taxRate -> select (tr | tr.taxClass = self.taxClass)
in
let priorities:Set(Natural) =
if appliedTaxRate -> isEmpty() then set{}
else appliedTaxRates -> sortedBy(priority).priority -> asSet()
endif
in
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
28
Manufacturers 40
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
if priorities -> isEmpty() then basePrice
else priorities -> iterate (p:Natural; res:Money = 0 |
res +
(((appliedTaxRates -> select (tr | tr.priority = p).rate
-> sum()) / 100)+1)*basePrice)
endif
Derivation Rules
„
[1] Product::grossPrice is the product’s netPrice taking into account the applied taxes.
context Product::grossPrice(): Money
body : self.addTaxes(Store.allInstances() -> any(true).zone, self.netPrice)
[2] Product::specialNetPrice is the special price, if the product is an active special.
context Product::specialNetPrice(): Money
body :
if self.oclIsTypeOf(Special) then
if self.oclAsType(Special).specialStatus=Status::enabled and
self.oclAsType(Special).expiryDate < Now()
then self.oclAsType(Special).specialPrice
else set{}
endif
else set{}
endif
[3] Product::added is the DateTime of product creation.
context Product::added(): DateTime
body : Now()
Constraints
„
[1] A product is identified by a name in a language.
context Language::nameIsUnique(): Boolean
body : self.productInLanguage -> isUnique(name)
Description
„
OsCommerce saves the following information about products:
•
Status: Indicates whether the product is either in stock or out of stock.
•
Available: The date since the product will be available.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
29
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
•
Net price: The product's price without taxes.
•
Gross price: The product's price taking into account the taxes applied in the zone of
the store. Derived attribute.
•
Special net price: If the product has an active special offer, the current product price is
the special price. Otherwise, this attribute is empty. Derived attribute.
•
Quantity on hand: The product’s quantity in stock.
•
Quantity ordered: This attribute is updated by the system and keeps how many
products have been sold.
•
Model: An additional information field for products. It can be used, for example, for
specifying the product model number.
•
Image path: Every product can be associated to an image, which is located in the file
indicated by this attribute.
•
Weight: The product's weight. It is used for calculating the shipping costs in some
shipping methods.
•
Added: The DateTime when the product was created. Derived attribute.
•
Last modified: The last time when the product was modified.
•
Manufacturer: The product’s manufacturer.
•
Category: Products are classified into categories. Therefore, products can belong to
categories. In case that a product is not associated to a category, it is assumed that it
belongs to the top of categories hierarchy.
Moreover, the following attributes of a product can have different values in each language:
•
Name: The name which identifies the product.
•
Description: The product’s description.
•
URL: The web page where founding more information about the product.
•
Times viewed: It is updated by the system and gives information about how many
times the product has been viewed.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
30
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
„
Example
Nowadays, there are some online shops, based on osCommerce, which offers music and
entertainment products, like DVD’s.
The next one is an example instantiation of a film, sold on DVD, which can be found as a
product in some of those shops:
theDaVinciCode : Product
status = inStock
available = "25/10/2006 00:00"
netPrice = "11,95"
grossPrice = "13,86"
quantityOnHand = 130
quantityOrdered = "51"
imagePath = "/images/dvd/davincicode.jpg"
weight = "0,15"
added = "20/10/2006 12:34"
sonyPictures : Manufacturer
dvd : Category
p1 : ProductInLanguage
name = "The Da Vinci Code"
url = "www.sonypictures.com/movies/thedavincicode/"
english : Language
p2 : ProductInLanguage
name = "El código Da Vinci"
url = "www.elcodigodavinci-lapelicula.com"
spanish : Language
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
31
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Product attributes and options
„
Overview
osCommerce allows defining several attributes for each product. Product attributes are used
to offer multiple options of a product without needing to create many separate but very
similar products.
„
Structural Schema
HasOptionName
Option
0..1
*
Products 28
1
*
Product *
Attribute
String
1
ProductAttribute
optionName
valueName
*
0..1
Value
increment : Money
sign : Sign
statuts : Status
HasValueName
Downloadable
filename : File
expiryDays : Natural
maximumDownloadCount : Natural
<<enumeration>>
<<enumeration>>
<<dataType>>
<<dataType>>
Sign
Status
File
Money
plus
minus
„
enabled
disabled
Constraints
[1] In each language, each product option has a unique name.
context Language::optionNameIsUnique(): Boolean
body : self.hasOptionName -> isUnique(optionName)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
32
*
optionLanguage
Language Languages 20
*
valueLanguage
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
[2] In each language, each product value has a unique name.
context Language::valueNameIsUnique(): Boolean
body : self.hasOptionValue -> isUnique(valueName)
Description
„
Usually, there are products which are sold in different options.
An attribute is an option/value pair such as, for example, Size/Small, Size/Medium,
Color/Red or Color /Yellow.
Product attributes can be enabled or disabled setting up the attribute status.
Moreover, the “base price” of products goes up or goes down according to the attributes
chosen by the customer. The amount of money incremented or decremented by choosing a
product attribute can be specified by setting up:
•
Sign: The sign of the increment (plus or minus).
•
Increment: The amount of money incremented or decremented.
There is a specific type of product attribute which allows products being downloadable. In
this case, the system requires information about:
•
File Name
•
Expiry days: How many days, since the product was ordered, the download will be
enabled.
•
Maximum downloads: How many times the customer can download the product.
Remember that there are configuration properties which specify a general value for this
downloadable product attributes.
Finally, options and values can have different names in each language.
„
Examples
This is an instantiation of a typical product offered by fashion shops:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
33
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
A T-Shirt which can be bought in two sizes: large or small.
pa1 : ProductAttribute
increment = "5"
sign = plus
large : Value
largeSize : Attribute
size : Option
FashionT-Shirt : Product
smallSize : Attribute
pa2 : ProductAttribute
small : Value
increment = "2"
sign = minus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
34
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Product categories
„
Overview
Products are grouped into categories which are arranged hierarchically.
„
Structural Schema
String
0..1
parent
categoryName
1
Category
imagePath : String [0..1]
child sortOrder : Natural
/added : DateTime {<<constant>>}
*
lastModified : DateTime [0..1]
/subcategories : Natural
/products : Natural
„
Languages 20
0..1
*
Language
HasCategoryName
Operations
context Category def:
allParents() : Set(Category) = self.parent -> union(self.parent.allParents())
„
Derivation Rules
[1] Category::added is the DateTime of category creation.
context Category::added():DateTime
body : Now()
[2] Category::subcategories is the number of subcategories owned by the category.
context Category::subcategories(): Natural
body : self.child -> size()
[3] Category::products is the number of products owned by the category.
context Category::products(): Natural
body : Category.allInstances() -> select(c | c.allParents() -> includes(self)).product -> size()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
35
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Constraints
„
[1] In each language, each category has a unique name.
context Language::categoryNameIsUnique(): Boolean
body : self.hasCategoryName -> isUnique(name)
[2] There are no cycles in category hierarchy.
context Category::isAHierarchy(): Boolean
body : not self.allParents() -> includes(self)
Description
„
OsCommerce groups products into categories which are arranged hierarchically. Categories
are identified by a name in each language and have the following attributes:
•
Image path: Categories can be associated to an image, which is located in the file
specified by this attribute.
•
Sort order: The categories of the same hierarchical level are displayed as indicated by
their sort order. In case that the sort order is the same, these are displayed
alphabetically ordered.
„
•
Added: The DateTime when the category was created. Derived attribute.
•
Last modified: The last time when the category was modified.
•
Subcategories: The quantity of subcategories. Derived attribute.
•
Products: The quantity of products contained in the category.
Examples
L’ Isola dei bambini is an Italian toys shop based on osCommerce.
The following is a real example which shows the instantiation of some product categories
from that shop. There are three categories: Wooden toys, Games and Trains.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
36
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Like products, categories can have different names in each language. In the example, we
assume that there are two languages: Italian and English.
Italian : Language
woodenToys : Category
english : Language
categoryName
categoryName
str4 : String
str1 : String
value = "Giocattoli di legno"
value = "Wooden toys"
Italian : Language
games : Category
english : Language
categoryName
categoryName
str5 : String
str2 : String
value = "Giochi di società"
value = "Games"
Italian : Language
trains : Category
english : Language
categoryName
categoryName
str6 : String
str3 : String
value = "Trenini"
value = "Trains"
Wooden toys are at the top of the categories hierarchy and Games and Trains are
subcategories of wooden toys.
woodenToys : Category
imagePath = "/images/categories/wood.jpg"
sortOrder = "1"
added = "16/12/2003 19:21"
lastModified = "18/12/2003 16:35"
subcategories = "2"
products = "3"
parent
parent
child
child
games : Category
trains : Category
imagePath = "/images/categories/games.jpg"
sortOrder = "1"
added = "16/12/2003 20:01"
subcategories = "0"
products = "2"
imagePath = "/images/categories/trains.jpg"
sortOrder = "2"
added = "17/12/2003 10:35"
subcategories = "0"
products = "1"
fourInARow : Product
PFCAlbert tort
domino : Product
UNIVERSITAT POLITÈCNICA DE CATALUNYA
motorrailTrain : Product
37
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Specials
Overview
„
osCommerce allows offering specials. That is, lower prices for a set of products can be
offered during a specific time period.
Structural Schema
„
Product
Products 28
Special
specialPrice : Money
expiryDate : DateTime [0..1]
/specialAdded : DateTime {<<constant>>}
specialLastModified : DateTime [0..1]
specialStatus : Status
dateStatusChanged : DateTime [0..1]
<<enumeration>>
<<dataType>>
Status
Money
enabled
disabled
Derivation Rules
„
[1] Special::added is the DateTime when the special was created
context Special::added():DateTime
body : Now()
Description
„
Specials are products which are sold, during an interval of time, in a lower price. The
information kept by the system about specials is:
•
Special price: The product’s price during the special offer.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
38
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
•
Expiry date: The date until the special offer is active.
•
Added: The DateTime when the Special was created. Derived attribute.
•
Last modified: The last time when the Special was modified.
•
Status: Specials can be enabled or disabled by setting this attribute.
•
Date status changed: The system updates automatically the last time when the status
of the Special was modified.
„
Examples
Egyptian Jewellery Online is an online shop based on osCommerce. This is an instance
corresponding to one of their special offers:
goldWingedHorusNecklace : Special
status = inStock
available = "25/10/2006 00:00"
netPrice = "1740"
grossPrice = "2018,40"
quantityOnHand = 2
quantityOrdered = "1"
imagePath = "/images/necklaces/gen01.jpg"
weight = "0,15"
added = "20/10/2006 12:34"
specialPrice = "1400"
specialStatus = enabled
specialAdded = "17/02/2007 15:32"
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
39
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Manufacturers
„
Overview
In osCommerce, the products in the store are manufactured by manufacturers.
„
Structural Schema
Manufacturer
name : String
imagePath : String [0..1]
/added : DateTime {<<constant>>}
lastModified : DateTime [0..1]
Languages 20
*
*
Language
ManufacturerInLanguage
<<dataType>>
URL
„
url : URL
urlClicked : Natural
lastClick : DateTime [0..1]
Derivation Rules
[1] Manufacturer::added is the DateTime when the Manufacturer was created.
context Manufacturer::added():DateTime
body : Now()
„
Constraints
[1] A manufacturer is identified by its name
context Manufacturer::nameIsUnique(): Boolean
body : Manufacturer.allInstances() -> isUnique(name)
[2] Each manufacturer must have a URL in each language
context Manufacturer::aURLInEachLanguage(): Boolean
body : self.language ->size() = Language.allInstances() -> size()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
40
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Description
„
OsCommerce keeps the following information about manufacturers:
•
Name: The manufacturer’s name.
•
Image path: Manufacturers can be illustrated by an image, which is located in the file
specified by this attribute.
•
Added: The DateTime when the manufacturer was created. Derived attribute.
•
Last modified: The system updates automatically the last time when the manufacturer
information was modified.
Moreover, for each language, each manufacturer must have a URL, in order to allow
customers to obtain information about it. The system updates automatically how many
times the URL has been clicked and when the last clicked was.
„
Example
Vinoverde is a German wine online shop. This based on osCommerce online store sells
wines of the Penedès guarantee of origin, among others.
This is a real instantiation of one of the manufacturers of this famous wine region, whose
products are sold in the example store:
spanish : Language
ml1 : ManufacturerInLanguage
url = "www.albetinoya.com/cast/index.html"
urlClicked = "5"
lastClick = "14/03/2007"
albetinoya : Manufacturer
name = " Albet i Noya "
imagePath = "/images/penedes/albetinoya"
added = "16/12/2006 12:36"
ml2 : ManufacturerInLanguage
url = " www.albetinoya.com/eng/index.html "
english : Language
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
41
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Banners
„
Overview
osCommerce allows administrating banners published in the online store.
„
Structural Schema
BannerGroup
name : String
1
*
Banner
title : String
url : URL [0..1]
imagePath : String
html : HtmlText [0..1]
expires : Date [0..1]
/added : DateTime {<<constant>>}
scheduled : Date [0..1]
statusChanged : DateTime [0..1]
status : Status
*
*
<<dataType>>
Date
BannerHistory
shown : Natural
clicked : Natural
<<dataType>>
<<dataType>>
<<enumeration>>
HtmlText
URL
Status
enabled
disabled
„
Derivation Rules
[1] Banner::added is the DateTime when the banner was created.
context Banner::added():DateTime
body : Now()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
42
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Constraints
„
[1] A Banner is identified by its title.
context Banner::titleIsUnique: Boolean
body : Banner.allInstances() -> isUnique(title)
[2] A Banner Group is identified by its name.
context BannerGroup::nameIsUnique: Boolean
body : BannerGroup.allInstances() -> isUnique(name)
Description
„
Banners are images which are shown in the online store. osCommerce allows administrating
the current banners and adding new banners. The system saves the following information
about them:
•
Title: A name which identifies the banner.
•
URL: The URL where a customer is redirected when the banner is clicked.
•
Image path: The file where the banner is located.
•
Size: The banner’s size (width and height).
•
Title: A name which identifies the banner.
•
Html: HTML based banners can be defined by this attribute.
•
Expires: When the expiry date is reached, the banner is automatically disabled.
•
Added: The DateTime when the banner was created. Derived attribute.
•
Scheduled: A future date when the banner is to become active. If no scheduled date is
defined, the banner is automatically published when it is created.
•
Status changed: The system updates automatically the last time when the banner
status was modified.
•
Status: The banner can be enabled or disabled.
Banners grouped into the same BannerGroup are shown iteratively in the same place.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
43
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Moreover, the system maintains historical information about how many times the banner
has been shown or clicked every day.
„
Example
This is a possible instantiation of a banner used as an advertisement during the sales:
bg : BannerGroup
bh1 : BannerHistory
name = "Top banners"
clicked = "2"
shown = "4"
bh2 : BannerHistory
clicked = "1"
shown = "1"
b1 : Banner
d1 : Date
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
title = "SaleAdvertisment"
url = "http://oscommerce/specials.html"
imagePath = "/images/banners/sale.jpg"
status = enabled
added = "18/6/2006 19:32"
44
d2 : Date
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Newsletters
„
Overview
osCommerce allows store owners sending emails and product notifications to customers.
„
Structural Schema
Newsletter
title : String
content : String
/added : DateTime {<<constant>>}
sent : DateTime [0..1]
status : NewsletterStatus
Products 28
ProductNotification
global : Boolean
Product
*
explicitRelatedProduct
*
/ relatedProduct
*
explicitNotifications
*
/ notifications
<<enumeration>>
NewsletterStatus
locked
unlocked
„
Derivation Rules
[1] ProductNotification::notifications is the set of implied products in the notification.
context ProductNotification::notifications():Set(Product)
body :
if self.global then Product.allInstances()
else self.explicitNotifications
endif
[2] ProductNotification::added is the DateTime when the newsletter was created.
context Newsletter::added():DateTime
body : Now()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
45
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Constraints
„
[1] A Newsletter is identified by its title.
context Newsletter::titleIsUnique: Boolean
body : Newsletter.allInstances() -> isUnique(title)
Description
„
Newsletters are used to send emails to the customers who gave their email address when
they created his account.
The system saves the following information about newsletters:
•
Title: A name which identifies the newsletter.
•
Content: The e-mail's content.
•
Added: The DateTime when the newsletter was created. Derived attribute.
•
Sent: The System sets up, automatically, the date when the newsletter was sent.
•
Status: Newsletters can be locked or unlocked. If a Newsletter is locked, it cannot be
modified by any administrator. Only if the newsletter is locked, it can be sent.
•
Status: The banner can be enabled or disabled.
Newsletters are sent to all the customers who selected to receive newsletters upon creating
their user account.
However, there is a specific type of newsletter, called ProductNotification. This particular
type of newsletter is sent only to customers who selected to be notified about product
updates included in the list of products implied in the notification.
The list of products involved in the notification is represented by the derived association
notifications.
New implied products are specified through the association explicitNotifications.
attribute global is true, all products are implied in the product notification.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
46
If the
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
„
Example
Catalan culture will be the guest of honour at the 2007 Frankfurt Book Fair considered to be
the most important event in the world of publishing.
Imagine that the administrator of an online bookshop wants to send a newsletter to
customers who bought books like L’auca del senyor Esteve or Tirant Lo Blanc, famous
Catalan books, to inform them about this event:
pn1 : ProductNotification
title = "Frankfurt 2007"
content = "Catalan culture will
be the guest of honour at the
2007 Frankfurt Book Fair.
Visit our online catalan books
section."
global = false
added = "23/04/2007 12:00"
status = unlocked
PFCAlbert tort
aucaSenyorEsteve : Product
explicitNotifications
/notifications
tirantLoBlanc : Product
explicitNotifications
/notifications
UNIVERSITAT POLITÈCNICA DE CATALUNYA
47
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2.6 CUSTOMERS
Customers
„
Overview
osCommerce keeps information about customers and their addresses, one of which is the
primary address.
„
Structural Schema
Customer
gender : Gender [0..1]
firstName : String
lastName : String
dateOfBirth : Date [0..1]
eMailAddress : EMail
phone : String
fax : String [0..1]
newsletter : Boolean
password : String
/added : DateTime {<<constant>>}
lastModified : DateTime [0..1]
lastLogon : DateTime [0..1]
numberOfLogons : Natural
globalNotifications : Boolean
status : Status
/subscriber *
*
<<dataType>>
Address
gender : Gender
1..* firstName : String
{ordered}
lastName : String
company : String [0..1]
street : String
suburb : String [0..1]
1
postCode : PostalCode
primary city : String
{subsets address}
state : String [0..1]
*
*
primaryAddressCustomer
{<<constant>>}
explicitNotificationsSubscriber
Products 28
*
explicitNotifications
*
/notifications
*
*
{<<constant>>}
0..1
Zone
Location & Taxes 24
Product
*
1
1
Country
Location & Taxes 24
<<enumeration>>
<<enumeration>>
Gender
Status
male
female
PFCAlbert tort
enabled
disabled
UNIVERSITAT POLITÈCNICA DE CATALUNYA
48
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Derivation Rules
„
[1] Customer::notifications is the set of subscriptions to product notifications.
context Customer::notifications():Set(Product)
body :
if self.globalNotifications then Product.allInstances()
else self.explicitNotifications
endif
[2] Customer::added is the DateTime of the customer creation.
context Customer::added():DateTime
body : Now()
Constraints
„
[1] Customers are identified by their email address.
context Customer::eMailIsUnique(): Boolean
body : Customer.allInstances() -> isUnique(eMailAddress)
[2] Addresses have zone if needed.
context Country::addressesHaveZoneIfNeeded(): Boolean
body :
self.zone -> notEmpty() implies self.address -> forAll
(a | a.state = a.zone.name and self = a.zone.country)
Description
„
osCommerce has the following information about Customers :
•
Gender
•
First Name
•
Last Name
•
Date of Birth
•
Email address
•
Phone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
49
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
•
Fax
•
Password
The System also maintains the DateTime of the last modification, the DateTime of the last
logon and the customer’s number of logons. There is a derived attribute (added) which
indicates when the Customer was created.
Additionally, Customers can be subscribed to product notifications. This fact is represented
by the association role explicitNotifications. If the attribute globalNotifications is true, then
the customer will receive notifications for all the products of the store. The derived
association notifications, keeps the active subscriptions to product notifications associated
to the customer, taking into account the explicit notifications and the attribute
globalNotifications.
Customers, in osCommerce, have one or more addresses, one of which is the primary. The
primary address is the default shipping and delivering addresses for the orders placed in the
store.
The status of a customer indicates if the customer is currently active.
osCommerce has the following information about Addresses:
•
Gender
•
First Name
•
Last Name
•
Company
•
Street
•
Suburb
•
Postal Code
•
City
•
State
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
50
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Moreover, Addresses are located in a Country. If the Country has zones, the address must
be located in a zone whose name is the same as the name of the state, and the country of
the zone must be the same as the country of the address.
„
Examples
The following instantiation is an example of a customer with two address book entries. The
customer can choose, for each order, which one is the shipping and the billing address:
addr1 : Address
gender = male
firstName = "Albert"
lastName = "Tort Pugibet"
postCode = "08731"
street = "Serra de Dalt"
city = "Sant Martí Sarroca"
state = "Barcelona"
c1 : Customer
gender = male
firstName = "Albert"
lastName = "Tort Pugibet"
dateOfBirth = "16/12/1984"
eMailAddress = "atort@lsi.upc.edu"
phone = "+34 93 899 XX XX"
newsletter = false
password = "p087654"
added = "25/04/2005"
numberOfLogons = "5"
lastLogon = "31/03/2007"
globalNotifications = false
BCN : Zone
ESP : Country
code = "BCN"
name = "Barcelona"
isoCode2 = "ES"
isoCode3 = "ESP"
name = "España"
addr2 : Address
gender = male
firstName = "Antoni"
lastName = "Olivé Ramón"
company = "Universitat
Politècnica de Catalunya"
postCode = "08034"
street = "Jordi Girona"
city = "Barcelona"
state = "Barcelona"
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
51
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
2.7 ONLINE CATALOG
Reviews
„
Overview
In order to allow users reading evaluations of a product, customers can write reviews.
„
Structural Schema
Review
review : String
rating : Rating
/added : DateTime {<<constant>>}
lastModified : DateTime [0..1]
timesRead : Natural
*
*
*
1
1
1
Language
Product
Customer
Languages 20
Products 28
Customers 48
<<enumeration>>
Rating
oneStar
twoStars
threeStars
fourStars
fiveStars
„
Derivation Rules
[1] Review::added is the DateTime of the review creation.
context Review::added():DateTime
body : Now()
„
Description
Reviews are customer evaluations of a product and are written in a language.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
52
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
osCommerce takes into account the following information about reviews:
•
Review: The customer’s opinion about the product.
•
Rating: The rating for the product.
•
Added: The DateTime when the review was created. Derived attribute.
•
Last modified: The system updates automatically the last time when the review
information was modified.
•
Review read: The system updates automatically how many times a review has been
read.
„
Examples
osCommerce is a solution used in some travel and tours online shops. In these online shops,
travel packages are sold as products.
Usually, in this kind of shops, users write reviews about their impression about the hotels
where they stayed during travels.
While they are surfing the online store, customers can read the reviews in order to obtain
more information about products.
rw1 : Review
english : Language
review = "Very easy to find the hotel
near Notting Hill gate. Generally very
polite and helpful people in the area."
rating = fourStars
timesRead = "2"
added = "08/10/2006"
c1 : Customer
hotelcomfort : Product
rw2 : Review
rating = twoStars
review = "Muy bien localizado en
Londres, al lado del mercado de Porto
Bello. És un hotel con una distribución
extraña al ocupar varios edificios lo que
hace que el laberinto de pasillos sea
de lo más divertido.El personal és
distante."
added = "25/01/2007"
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
c2 : Customer
spanish : Language
53
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Shopping carts
„
Overview
Customers can add or remove products from their shopping carts while they are surfing the
online store.
„
Structural Schema
Products 28
Languages 20
Currencies 22
Language
currentLanguage
1
ShoppingCartItem
Currency
1
currentCurrency
1..*
*
*
sessionID : Natural {constant}
expiry : DateTime {constant}
ipAddress : String {constant}
timeEntry : DateTime {constant}
timeLastClick : DateTime [0..1]
lastPageURL : URL [0..1]
1
{redefines session}
0..1
Product
*
Attribute
{<<constant>>}
*
{<<constant>>}
{ordered}
Product attributes
and options 32
{<<constant>>}
0..1
Session
0..1
quantity : PositiveInteger
/added : DateTime {<<constant>>}
/price : Money
*
1
1
0..1
ShoppingCart
{disjoint, complete}
AnonymousShoppingCart
CustomerShoppingCart
0..1
Customer
0..1
1
{<<constant>>}
Customers 48
„
Derivation Rules
[1] ShoppingCartItem::price is the net price for an item taking into account the selected
product attributes.
context ShoppingCartItem::price():Money
body :
let netPriceWithSpecial:Money =
if self.product.specialNetPrice ->notEmpty() then self.product.specialNetPrice
else self.product.netPrice
endif
in
if self.attribute -> isEmpty() then self.product.netPriceWithSpecial
else
self.attribute.productAttribute -> select (pa | pa.product = self.product) -> collect
(if sign = Sign::plus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
54
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
then increment
else –increment
endif) -> sum() + self.product.netPriceWithSpecial
endif
[2] ShoppingCartItem::added is the DateTime when the item was created.
context ShoppingCartItem::added():DateTime
body : Now()
„
Constraints
[1] If a customer shopping cart exists in the context of a session then its customer is the
customer of the session
context CustomerShoppingCart::sameCustomer(): Boolean
body : self.session.customer -> notEmpty() implies self.session.customer = self.customer
[2] The shopping cart item specifies the selected product attributes, which must be a subset
of all the product attributes.
context ShoppingCartItem::productHasTheAttributes(): Boolean
body : self.product.attribute -> includesAll(self.attribute)
[3] The shopping cart item specifies only one attribute per option.
context ShoppingCartItem::onlyOneAttributePerOption(): Boolean
body : self.attribute -> isUnique(option)
[4] Sessions are identified by its sessionID.
context Session::sessionIDIsUnique(): Boolean
body : Session.allInstances() -> isUnique (sessionID)
„
Description
Shopping carts contains the products chosen by customers from the online catalog.
A shopping cart is anonymous until de customer logs in. At this moment, if the customer
didn’t have a previous CustomerShoppingCart, it becomes a CustomerShoppingCart. If the
customer had a previous customer shopping cart, the anonymous shopping cart is removed
from the system and their products are added to the previous CustomerShoppingCart.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
55
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
In summary, if a customer leaves a session with a non-empty customer shopping cart, then
the cart will be automatically restored in his next session.
Anonymous shopping carts can only exist in the context of a session, and they are
automatically removed when its session expires.
A shopping cart contains a sequence of one or more ShoppingCartItem, each of which is a
quantity of a product. If the product has attributes then the shopping cart item specifies the
selected attributes of the product.
Moreover, there is a derived attribute which calculates the net price for the shopping cart
item, taking into account the net price of the product and the increments or decrements of
the attributes. Note that the net price of the product is the special net price if it is an active
special offer.
When an order, corresponding to a shopping cart, is confirmed, the shopping cart is removed
from the system.
„
State Transition Diagram
The state of ShoppingCart entities can be conceptually modelled by using a state transition
diagram.
[CustomerIsLoggedIn and
SessionDoNotHaveAShoppingCart]
AddProductToShoppingCart /
PreviousShoppingCartIsRestored
[CustomerIsNotLoggedIn and
SessionDoNotHaveAShoppingCart]
AddProductToShoppingCart
LogOut
AnonymousShopping Cart
[NoPreviousCustomer
ShoppingCart] LogIn
FinishSession
[Previous
Customer
ShoppingCart]
LogIn /
AnonymousContents
AreAddedToPrevious
CustomerShoppingCart
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
OrderConfirmation
56
CustomerShoppingCart
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
„
Examples
These are two example instantiations of an anonymous shopping cart and a customer
shopping cart in the context of a session.
The first example represents an anonymous shopping cart:
size : Option
small : Value
sci1 : ShoppingCartItem
quantity = "3"
price = "18"
added = "26/02/2007"
catalan : Language
at1 : Attribute
FashionT-Shirt : Product
s1 : Session
asc : AnonymousShoppingCart
sci2 : ShoppingCartItem
euro : Currency
quantity = "1"
hotelcomfort : Product
The second example represents a customer shopping cart which will not disappear when the
session expires. Thanks to it, the shopping cart will be restored when the customer initiates a
new session.
size : Option
small : Value
sci1 : ShoppingCartItem
quantity = "3"
price = "18"
added = "26/02/2007"
at1 : Attribute
FashionT-Shirt : Product
csc : CustomerShoppingCart
sci2 : ShoppingCartItem
quantity = "1"
s1 : Session
PFCAlbert tort
c1 : Customer
UNIVERSITAT POLITÈCNICA DE CATALUNYA
57
hotelcomfort : Product
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
Orders
„
Overview
Orders are the confirmation that a customer wants to buy the contents of his shopping cart.
„
Structural Schema
Customers 48
Customer
Product attributes
and options 32
1
*
1
{<<constant>>}
*
OrderLine
Order
{<<Permanent>>}
Shipping methods 18
ShippingMethod 1
Payment methods 16
PaymentMethod 1
Currencies 22
Currency
1
*
{<<constant>>}
/name : String
/option : String
* /value : String
1
/model : String [0..1]
{<<constant>>}
{<<constant>>}
/price : Money [0..1]
/increment : Money
/sign : Sign
1..* /tax : Decimal
{ordered} /finalPrice : Money
quantity : PositiveInteger
/basePrice : Money
1
*
{<<constant>>}
OrderDownload
Products 28
downloadCount : Natural
1
Product
OrderStatusChange
/added : DateTime {<<constant>>}
comments : String [0..1]
{<<permanent>>}
1..*
OrderStatus *
*
status : Status
OrderStatusInLanguage
name : String
<<enumeration>>
<<enumeration>>
<<dataType>>
Sign
Status
Money
„
enabled
disabled
<<dataType>>
EMail
eMail : String
Operations
context ShippingMethod def:
addTaxes(z:Zone, basePrice:Money) : Money =
let appliedTaxRates:Set(TaxRate)=
z.taxZone.taxRate -> select (tr | tr.taxClass = self.taxClass)
in
let priorities:set(Natural) =
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
{<<constant>>}
OrderLineAttribute
{<<constant>>}
/id : PositiveInteger {<<constant>>}
* /name : String {<<constant>>}
/phone : String [0..1] {<<constant>>}
/eMail : EMail{<<constant>>}
delivery : Address {<<constant>>}
billing : Address {<<constant>>}
* /creditCardType : String [0..1] {<<constant>>}
/creditCardOwner : String [0..1] {<<constant>>}
/creditCardNumber : String [0..1]{<<constant>>}
/creditCardExpires : Date [0..1] {<<constant>>}
/currencyValue : Decimal {<<constant>>}
*
/purchased : DateTime {<<constant>>}
/lastModified : DateTime [0..1]
/total : Money {<<constant>>}
plus
minus
Attribute
58
Language
Languages 20
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
in
if appliedTaxRate -> isEmpty() then set{}
else appliedTaxRate -> sortedBy(priority).priority -> asSet()
endif
if priorities -> isEmpty() then basePrice
else priorities -> iterate (p:Natural; res:Money = 0 |
res +
(((appliedTaxRates -> select (tr | tr.priority = p).rate
-> sum()) / 100)+1)*basePrice
endif
context ShippingMethod def:
shippingCosts(totalWeight:Decimal, totalPrice:Money, quantity:PositiveInteger): Money = 0
context FlatRate def:
shippingCosts(totalWeight:Decimal, totalPrice:Money, quantity:PositiveInteger): Money = self.cost
context PerItem def:
shippingCosts(totalWeight:Decimal, totalPrice:Money, quantity:PositiveInteger): Money =
self.cost*quantity
context TableRate def:
shippingCosts(totalWeight:Decimal, totalPrice:Money, quantity:PositiveInteger): Money =
if self.method = ShippingTableMethod::weight
then
self.items -> select (i | i.number <= (totalWeight*quantity)) -> sortedBy(number) ->last().cost
else
self.items -> select (i | i.number <= (totalPrice*quantity)) -> sortedBy(number) ->last().cost
endif
context USPostalService def:
shippingCosts(totalWeight:Decimal, totalPrice:Money, quantity:PositiveInteger): Money =
calculateFromUSPS (self.userID, self.password, self.server, totalWeight, totalPrice, quantity)
context TableRate def:
shippingCosts(totalWeight:Decimal, totalPrice:Money, quantity:PositiveInteger): Money =
if self.method = ShippingTableMethod::weight
then
self.items -> select (i | i.number <= (totalWeight*quantity)) -> sortedBy(number) ->last().cost
endif
„
Derivation Rules
[1] Order::id identifies the order and it is assigned automatically.
context Order::id():PositiveInteger
body :
if Order.allInstances() -> size() = 0 then 0
else Order.allInstances() -> sortedBy(id) -> last().id + 1
endif
[2] Order::primary address of an order is that of its customer.
context Order::primary():Address
body : self.customer.primary
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
59
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
[3] Order::eMailAddress of an order is that of its customer.
context Order::eMailAddress():EMail
body : self.customer.eMailAddress
[4] Order::phone of an order is that of its customer.
context Order::phone():String
body : self.customer.phone
[5] Order::purchased is the DateTime when the order was created
context Order::purchased():DateTime
body : Now()
[6] Order::lastModified is the last DateTime when the status order was modified
context Order::lastModified():DateTime
body : self.orderStatusChange -> sortedBy(added) -> last().added
[7] Order::statuts is the current status of the order
context Order::status():OrderStatus
body : self.orderStatusChange -> sortedBy(added) -> last().orderStatus
[8] Order::total gives the total amount of an order
context Order::total():Money
body :
let totalWithoutShippingCosts:Money =
self.orderLine -> collect(finalPrice*quantity) -> sum()
let totalWeight:Decimal =
self.orderLine -> collect(product.weight*quantity) -> sum()
let quantity:PositiveInteger =
self.orderLine.quantity -> sum()
let handlingFee:Money =
if self.shippingMethod.oclIsTypeOf(HandlingFeeMethod)
then
self.shippingMethod.oclAsType(HandlingFeeMethod).handlingFee
else 0
endif
in
let totalWeightIncreased:Decimal =
if totalWeight* (ShippingAndPackaging.percentageIncreaseForLargerPackages/100) >
ShippingAndPackaging.typicalPackageTareWeight
then
totalWeight * (1 +totalWeight*
ShippingAndPackaging.percentageIncreaseForLargerPackages/100)
else totalWeight + ShippingAndPackaging.typicalPackageTareWeight
endif
in
totalWithoutShippingCosts +
self.shippingMethod.shippingCosts
(totalWeightIncreased, totalWithoutShippingCosts, quantity) + handlingFee
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
60
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
[9] OrderStatusChange::added is the DateTime when the change is done.
context OrderStatusChange::added():DateTime
body : Now()
[10] OrderLine::name is that of its product in the default language
context OrderLine::name():String
body :
self.product.productInLanguage
->select(pil | pil.language = Store.allInstances() -> any(true).defaultLanguage).name
[11] OrderLine::model is that of its product
context OrderLine::model():String
body : self.product.model
[12] OrderLine::basePrice is the net price of the product without taking into account the
selected attributes.
context OrderLine::basePrice():Money
body :
if self.product.specialNetPrice ->notEmpty()
then self.product.specialNetPrice
else self.product.netPrice
endif
[13] OrderLine::price is the net price of the product with the selected attributes
context OrderLine::price():Money
body :
if self.orderLineAttribute -> isEmpty() then self.basePrice
else
self.orderLineAttribute -> collect
(if sign = Sign::plus then increment
else –increment
endif) -> sum() + self.basePrice
endif
[14] OrderLine::finalPrice is the price of the product with the selected attributes and taking
into account the shipping costs and the taxes
context OrderLine::finalPrice():Money
body :
if self.billing.zone -> notEmpty() then
self.product.addTaxes(self.billing.zone, self.price)
else self.price
endif
[15] OrderLineAttribute::option is the option name in the default language
context OrderLineAttribute::option():String
body :
self.attribute.option.hasOptionName
-> select (hon | hon.optionLanguage = Store.allInstances()
-> any(true).defaultLanguage).optionName
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
61
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
[16] OrderLineAttribute::value is the option value in the default language
context OrderLineAttribute::value():String
body :
self.attribute.value.hasValueName
-> select (hvn | hon.valueLanguage = Store.allInstances()
-> any(true).defaultLanguage).valueName
[17] OrderLineAttribute::increment is the increment applied in the product price by the
attribute
context OrderLineAttribute::increment():Money
body :
self.attribute.productAttribute
-> select (pa | pa.product = self.orderLine.product).increment
[18] OrderLineAttribute::sign is the sign of the increment applied in the product price by the
attribute
context OrderLineAttribute::sign():Sign
body :
self.attribute.productAttribute
-> select (pa | pa.product = self.orderLine.product).sign
„
Constraints
[1] A specific zone shipping method with a specific tax zone can only be applied if the
delivery address zone is included in the tax zone.
context Order::ApplicableZoneShippingMethod: Boolean
body :
self.shippingMethod.oclIsTypeOf(SpecificZoneMethod) and
self.shippingMethod.oclAsType(SpecificZoneMethod).taxZone -> notEmpty implies
self.shippingMethod.oclAsType(SpecificZoneMethod).taxZone.zone
-> includes(self.delivery.zone)
[2] The Zone Rates shipping method can only be applied in the specified countries.
context Order::ApplicableZoneRatesShippingMethod: Boolean
body :
self.shippingMethod.oclIsTypeOf(ZoneRates) implies
self.shippingMethod.oclAsType(ZoneRates).country -> includes(self.delivery.country)
[3] Payment methods with a specified tax zone can only be applied in orders with a billing
address located in a zone included in the tax zone.
context Order::ApplicableZonesPaymentMethod: Boolean
body :
self.paymentMethod.taxZone -> notEmpty() implies
self.paymentMethod.taxZone.zone -> includes(self.billing.zone)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
62
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
[4] Payment methods with a specified set of applicable currencies can only be applied if the
current currency is included in that set.
context Order::ApplicableCurrenciesPaymentMethod: Boolean
body :
self.shippingMethod.oclIsTypeOf(SpecificCurrenciesMethod) implies
self.shippingMethod.oclAsType(SpecificCurrenciesMethod).currency
-> includes(self.currency)
[5] Orders are identified by its id
context Order::IDIsUnique: Boolean
body : Order.allInstances() -> isUnique(id)
[6] Order status are identified by its name
context Order::NameIsUnique: Boolean
body : OrderStatus.allInstances() -> isUnique(name)
Description
„
When the customer confirms that he/she wants to buy the contents of his shopping cart, the
system generates an order. Orders have the following information:
•
Id: Identifies an order. It is assigned automatically. Derived Attribute.
•
Billing address
•
Delivery address
•
Email Address: A copy of the customer’s email. Derived Attribute.
•
Phone: A copy of the customer’s phone. Derived Attribute.
•
Purchased: The DateTime when the order was created. Derived Attribute.
•
Last Modified: The last time the order was changed. Derived Attribute.
•
Status: The current status of the order. Derived Attribute.
•
Total: The total price of the order, taking into account the shipping costs and the taxes.
An order is made by a customer during check out process, and can be in different
OrderStatus during time.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
63
conceptualschema
2/ STRUCTURAL SCHEMA
OsCommerce
An order is composed by order lines which represents a quantity of a product. The
information about order lines is:
•
Name: A copy of the product’s name. Derived Attribute.
•
Model: The current status of the order. Derived Attribute.
•
Total: The total price of the order, taking into account the shipping costs and the taxes.
Likewise, order lines can have order line attributes, which represents the product attributes
chosen for an order line product.
Order line attributes which corresponds to downloadable product attributes have an specific
attribute, called downloadCount that maintains how many times the product has been
download by the customer.
„
Example
The Vienna Mozart Orchestra plays concerts in Vienna in the most famous concert halls,
including the Golden Hall in the Musikverein, a well-known building where takes place the
most popular New Year’s concert.
Imagine that we would like to implement a ticket online shop based on the osCommerce
solution. The following would be a possible instantiation of an order:
zubin : Customer
mozartConcert26/05/07 : Product
superiorCategory : Attribute
or : Order
fr : FlatRate
cost = "2"
cd : CashOnDelivery
ola : OrderLineAttribute
id = "15236"
name = "Zubin Metha"
eMail = "zubin@philarmonicconductor.at"
purchased = "31/01/2007 13:43"
total = "227,04"
ol : OrderLine
name = " Mozart Concert
26/05/2007 "
price = "97"
finalPrice = " 112,52 "
quantity = "2"
tax = "16"
basePrice = "55"
euro : Currency
osc : OrderStatusChange
added = "31/01/2007 13:43"
pending : OrderStatus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
64
increment = "42"
option = "category"
sign = plus
value = " superior "
BEHAVIORAL
SCHEMA
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
3 BEHAVIORAL SCHEMA
3.1 INTRODUCTION
In the next sections we develop the behavioral schema of the osCommerce system.
The main purpose of the osCommerce behavioral schema is specifying the valid changes in
the domain state, as well as the actions that the osCommerce system can perform.
Firstly, we show an overview use cases diagram which gives a general view of the most
important functionalities of the system. Include relationships are not shown for clarity.
Afterwards, we specify each use case textually, as an interaction of activities between the
primary actors and the system.
Use cases specification contains the mapping of use cases with the most important events of
the system using textual references. Events of the system are presented alphabetically, in
order to improve search. Each event is represented by an UML diagram, and its effect and
constraints are specified using OCL operations.
3.2 USE CASE DIAGRAM
Change store
data
Change stock
configuration values
Assign minimum
values
Assign maximum
values
Change download
configuration values
System
Administrator
Assign shipping and packaging
configuration values
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
66
Change shown
customer details
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Install a payment method
Uninstall a payment method
Change payment method
values
Install a shipping method
Uninstall a shipping method
Change shipping method
values
Add a language
Edit a language
Delete a language
Set the default language
Add a currency
Edit a currency
Store
Administrator
Delete a currency
Update currencies
Set the default currency
Add a country
Edit a country
Delete a country
Add a zone
Edit a zone
Delete a zone
Add a tax zone
Edit a tax zone
Delete a tax zone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
67
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Add a tax class
Edit a tax class
Delete a tax class
Add a tax rate
Edit a tax rate
Delete a tax rate
Add a product
Add a product option
Edit a product option
Delete a product option
Add a product option value
Edit a product option value
Delete a product option
value
Store
Administrator
Add an attribute
Edit an attribute
Delete an attribute
Add a product attribute
Edit a product attribute
Delete a product attribute
Edit a product
Delete a product
Move a product
Link a product
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
68
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Add a product category
Edit a product category
Move a product category
Delete a product category
Add a special
Edit a special
Delete a special
Add a manufacturer
Edit a manufacturer
Delete a manufacturer
Add a banner
Edit a banner
Store
Administrator
Delete a banner
Add a banner group
Edit a banner group
Delete a banner group
Send an email
Create a newsletter
Edit a newsletter
Delete a newsletter
Lock a newsletter
Unlock a newsletter
Send a newsletter
Edit a customer
Delete a customer
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
69
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Edit a review
Delete a review
Cancel an order
Add an order status
Edit an order status
Delete an order status
Store
Administrator
Change the status of an order
Set cancelled order status
Set default order status
Show products under stock
Show orders of a customer
Show customer’s orders total
Online customers
Generate an invoice
Generate a packaging slip
Show reviews of a product
Show expected products
Show new products
Store
Administrator
Show best viewed products
Show best products purchased
Show products of a category
Show products of a manufacturer
Customer
Show specials
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
70
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Create a customer
Change password
Change customer details
Administrate address book
Administrate subscriptions
Open session
Finish session
LogIn
LogOut
Change the current language
Change the current currency
Add a review
Place and order
Customer
Click a banner
Read a review
Show manufacturer’s web
Tell to a friend
Show previous orders
Download a product
Show a banner
System
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
71
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
3.3 USE CASE SPECIFICATION
Use case
Change store data
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change the initial values of the store data.
Main Success Scenario:
1. The system displays the current values of the store data.
2. The system administrator provides a new value for one of the store attributes:
[ÆMameChange]
[ÆOwnerChange]
[ÆEMailAddressChange]
[ÆEMailFromChange]
[ÆExpectedSortOrderChange]
[ÆExpectedSortFieldChange]
[ÆSendExtraOrderChange]
[ÆDisplayCartAfterAddingProductChange]
[ÆAllowGuestToTellAFriendChange]
[ÆDefaultSearchOperatorChange]
[ÆStoreAddressAndPhoneChange]
[ÆTaxDecimalPlacesChange]
[ÆDisplayPricesWithTaxChange]
[ÆSwitchToDefaultLanguageCurrencyChange]
[ÆCountryChange]
[ÆZoneChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new values of the store data.
The system administrator repeats steps 2-5 until he is done.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
72
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Assign minimum values
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change the minimum values of some attributes.
Main Success Scenario:
1. The system displays the current minimum values.
2. The system administrator provides a new value for one of the minimum values:
[ÆFirstNameMinimumChange]
[ÆLastNameMinimumChange]
[ÆDateOfBirthMinimumChange]
[ÆEMailAddressMinimumChange]
[ÆStreetAddressMinimumChange]
[ÆCompanyNameMinimumChange]
[ÆPostCodeMinimumChange]
[ÆCityMinimumChange]
[ÆStateMinimumChange]
[ÆTelephoneMinimumChange]
[ÆPasswordMinimumChange]
[ÆCreditCardOwnerNameMinimumChange]
[ÆCreditCardNumberMinimumChange]
[ÆReviewTextMinimumChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new current minimum values.
The system administrator repeats steps 2-5 until he is done.
Use case
Assign maximum values
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change the maximum number of address book
entries permitted for each customer.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
73
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The system displays the current maximum number of address book entries for each customer.
2. The system administrator provides the new maximum value:
[ÆAddressBookEntriesMaximumChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new current maximum value.
Use case
Change shown customer details
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change whether some customer attributes are
shown.
Main Success Scenario:
1. The system displays the current values of customer details configuration (shown or not shown).
2. The system administrator provides the new value for one of the customer details:
[ÆGenderCustomerDetailChange]
[ÆDateOfBirthCustomerDetailChange]
[ÆCompanyCustomerDetailChange]
[ÆSuburbCustomerDetailChange]
[ÆStateCustomerDetailChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new current values of customer details configuration.
The system administrator repeats steps 2-5 until he is done.
Use case
Assign shipping and packaging configuration values
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change the shipping and packaging
configuration values.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
74
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The system displays the current shipping and packaging configuration values.
2. The system administrator provides the new value for one of the shipping and packaging
configurable options:
[ÆPostCodeShippingConfigurationChange]
[ÆMaximumPackageWeightShippingConfigurationChange]
[ÆTypicalPackageTareWeightShippingConfigurationChange]
[ÆPercentageIncreaseForLargerPackagesShippingConfigurationChange]
[ÆCountryShippingConfigurationChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new current shipping and packaging configuration values.
The system administrator repeats steps 2-5 until he is done.
Use case
Change download configuration values
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change the download configuration values.
Main Success Scenario:
1. The system displays the current download configuration values.
2. The system administrator provides the new value for one of the download configuration options:
[ÆEnableDownloadConfigurationChange]
[ÆDaysExpiryDelayDownloadConfigurationChange]
[ÆMaximumNumberDownloadConfigurationChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new current download configuration values.
The system administrator repeats steps 2-5 until he is done.
Use case
Change stock configuration values
Primary Actor: System administrator
Precondition: None.
Trigger: The system administrator wants to change the stock configuration values.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
75
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Main Success Scenario:
1. The system displays the current stock configuration values.
2. The system administrator provides the new value for one of the stock configuration options:
[ÆCheckLevelStockConfigurationChange]
[ÆSubstractStockConfigurationChange]
[ÆAllowCheckoutStockConfigurationChange]
[ÆReorderLevelStockConfigurationChange]
3. The system validates that the value is correct.
4. The system saves the new value.
5. The system displays the new current stock configuration values.
The system administrator repeats steps 2-5 until he is done.
Use case
Install a payment method
Primary Actor: Store administrator
Precondition: The payment method is not installed yet.
Trigger: The store administrator wants to install a payment method.
Main Success Scenario:
1. The system shows all the available payment methods and which of they are installed.
2. The store administrator selects a non installed payment method.
3. The store administrator provides the data of the payment method:
[ÆInstallAuthorizeNetPaymentMethod]
[ÆInstallCreditCardPaymentMethod]
[ÆInstallCashOnDeliveryPaymentMethod]
[ÆInstallIPaymentPaymentMethod]
[ÆInstallCheckMoneyPaymentMethod]
[ÆInstallNochexPaymentMethod]
[ÆInstallPayPalPaymentMethod]
[ÆInstallTwoCheckOutPaymentMethod]
[ÆInstallPSiGatePaymentMethod]
[ÆInstallSECPaymentMethod]
4. The system validates that the data is correct.
5. The system uninstalls the new payment method.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
76
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Uninstall a payment method
Primary Actor: Store administrator
Precondition: The payment method is installed.
Trigger: The store administrator wants to uninstall a payment method.
Main Success Scenario:
1. The system shows all the payment methods and which of they are installed.
2. The store administrator selects an installed payment method.
[ÆUninstallAuthorizeNetPaymentMethod]
[ÆUninstallCreditCardPaymentMethod]
[ÆUninstallCashOnDeliveryPaymentMethod]
[ÆUninstallIPaymentPaymentMethod]
[ÆUninstallCheckMoneyPaymentMethod]
[ÆUninstallNochexPaymentMethod]
[ÆUninstallPayPalPaymentMethod]
[ÆUninstallTwoCheckOutPaymentMethod]
[ÆUninstallPSiGatePaymentMethod]
[ÆUninstallSECPaymentMethod]
3. The system uninstalls the selected payment method.
Extensions:
2a. The payment method is used in an existing order:
2a1. The system warns the store administrator that the payment method is used in the
information of existing orders and that is only possible to disable the payment method.
2a2. The system changes the status of the payment method to disabled:
[ÆStatusPaymentMethodChange]
2a3. The use case ends.
Use case
Change payment method values
Primary Actor: System administrator
Precondition: The payment method is installed.
Trigger: The system administrator wants to change the configuration values of an installed
payment method.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
77
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Main Success Scenario:
1. The system displays the installed payment methods.
2. The customer selects an installed payment method.
3. The system displays the current values of the payment method.
4. The system administrator provides the new values for the configurable attributes of the payment
method:
[ÆEditAuthorizeNetPaymentMethod]
[ÆEditCreditCardPaymentMethod]
[ÆEditCashOnDeliveryPaymentMethod]
[ÆEditIPaymentPaymentMethod]
[ÆEditCheckMoneyPaymentMethod]
[ÆEditNochexPaymentMethod]
[ÆEditPayPalPaymentMethod]
[ÆEditTwoCheckOutPaymentMethod]
[ÆEditPSiGatePaymentMethod]
[ÆEditSECPaymentMethod]
5. The system validates that the new values are correct.
6. The system saves the new values.
7. The system displays the new values of the payment method.
Use case
Install a shipping method
Primary Actor: Store administrator
Precondition: The shipping method is not installed yet.
Trigger: The store administrator wants to install a shipping method.
Main Success Scenario:
1. The system shows all the available shipping methods and which of they are installed.
2. The store administrator selects a non installed shipping method.
3. The store administrator provides the data of the shipping method.
[ÆInstallZoneRatesShippingMethod]
[ÆInstallFlatRateShippingMethod]
[ÆInstallPerItemShippingMethod]
[ÆInstallTableRateShippingMethod]
[ÆInstallUSPostalServiceShippingMethod]
4. The system validates that the data is correct.
5. The system creates an instance of the new shipping method.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
78
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Uninstall a shipping method
Primary Actor: Store administrator
Precondition: The shipping method is installed.
Trigger: The store administrator wants to uninstall a shipping method.
Main Success Scenario:
1. The system shows all the available shipping methods and which of they are installed.
2. The store administrator selects an installed shipping method.
[ÆUninstallZoneRatesShippingMethod]
[ÆUnistallFlatRateShippingMethod]
[ÆUninstallPerItemShippingMethod]
[ÆUninstallTableRateShippingMethod]
[ÆUninstallUSPostalServiceShippingMethod]
3. The system deletes the instance of the selected shipping method.
Extensions:
2a. The shipping method is the shipping method used in an existing order:
2a1. The system warns the store administrator that the shipping method is used in the
information of existing orders and that is only possible to disable the shipping method.
2a2. The system changes the enabled attribute of the shipping method to false:
[ÆStatusShippingMethodChange]
2a3. The use case ends.
Use case
Change shipping method values
Primary Actor: System administrator
Precondition: The shipping method is installed.
Trigger: The system administrator wants to change the configuration values of an installed
shipping method.
Main Success Scenario:
1. The system displays the installed shipping methods.
2. The customer selects an installed shipping method.
3. The system displays the current values of the selected shipping method.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
79
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
4. The system administrator provides the new values for the configurable attributes of the shipping
method:
[ÆEditZoneRatesShippingMethod]
[ÆEditFlatRateShippingMethod]
[ÆEditPerItemShippingMethod]
[ÆEditTableRateShippingMethod]
[ÆEditUSPostalServiceShippingMethod]
5. The system validates that the new values are correct.
6. The system saves the new values.
7. The system displays the new values of the shipping method.
Use case
Add a language
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a new language.
Main Success Scenario:
1. The store administrator provides the details of the new language:
[ÆNewLanguage]
2. The system validates that the data is correct.
3. The system saves the new language.
Use case
Edit a language
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a language.
Main Success Scenario:
1. The store administrator selects the language to be edited.
2. The store administrator provides the new details of the selected language:
[ÆEditLanguage]
3. The system validates that the data is correct.
4. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
80
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete a language
Primary Actor: Store administrator
Precondition: There are at least two languages.
Trigger: The store administrator wants to delete a language.
Main Success Scenario:
1. The store administrator selects the language to be deleted.
2. The store administrator confirms that he wants to delete the language:
[ÆDeleteLanguage]
3. The system deletes the language.
Extensions:
2a. The deleted language is the default language of the store.
2a1. The system sets any of the available languages as the default language:
[ÆSetDefaultLanguage]
2b. The deleted language is the current language of any active session.
2b1. The system sets any of the available languages as the current language:
[ÆSetCurrentLanguage]
Use case
Set the default language
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to change the default language.
Main Success Scenario:
1. The store administrator selects the language which will become the default language.
2. The system updates the default language:
[ÆSetDefaultLanguage]
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
81
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Add a currency
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a new currency.
Main Success Scenario:
1. The store administrator provides the details of the new currency:
[ÆNewCurrency]
2. The system validates that the data is correct.
3. The system saves the new currency.
Use case
Edit a currency
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a currency.
Main Success Scenario:
1. The store administrator selects the currency to be edited.
2. The store administrator provides the new details of the selected currency:
[ÆEditCurrency]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a currency
Primary Actor: Store administrator
Precondition: There are at least two currencies.
Trigger: The store administrator wants to delete a currency.
Main Success Scenario:
1. The store administrator selects the currency to be deleted.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
82
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
2. The store administrator confirms that he wants to delete the currency:
[ÆDeleteCurrency]
3. The system deletes the currency.
Extensions:
2a. The deleted currency was the default currency.
2a1. The system sets any of the available currencies as the default currency:
[ÆSetDefaultCurrency]
2b. The deleted currency is the current currency of an active session.
2b1. The system sets any of the available currencies as the current currency:
[ÆSetCurrentCurrency]
2c. The currency is the currency of an order:
2c1. The system changes the status of the currency to disable.
[ÆCurrencyStatusChange]
2c2. The use case ends.
Use case
Update currencies
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to update automatically via Internet the change
values for currencies.
Main Success Scenario:
1. The system connects to the change information server.
2. The value change is automatically updated for all the currencies:
[ÆUpdateCurrencyValueChange]
Use case
Set the default currency
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to change the default currency.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
83
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The store administrator selects the currency which will become the default currency.
2. The system updates the default currency:
[ÆSetDefaultCurrency]
Use case
Add a country
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a country.
Main Success Scenario:
1. The store administrator provides the details of the new country:
[ÆNewCountry]
2. The system validates that the data is correct.
3. The system saves the new country.
Use case
Edit a country
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a country.
Main Success Scenario:
1. The store administrator selects the country to be edited.
2. The store administrator provides the new details of the selected country:
[ÆEditCountry]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a country
Primary Actor: Store administrator
Precondition: The country is not the location of any address.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
84
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Trigger: The store administrator wants to delete a country.
Main Success Scenario:
1. The store administrator selects the country to be deleted.
2. The system warns the store administrator of the number of zones which are part of the country to
be deleted.
3. The store administrator confirms that he wants to delete the country and their zones:
[ÆDeleteCountry]
4. The system deletes the country and their zones.
Use case
Add a zone
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a zone.
Main Success Scenario:
1. The store administrator provides the details of the new zone:
[ÆNewZone]
2. The system validates that the data is correct.
3. The system saves the new zone.
Use case
Edit a zone
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a zone.
Main Success Scenario:
1. The store administrator selects the zone to be edited.
2. The store administrator provides the new details of the selected zone:
[ÆEditZone]
3. The system validates that the data is correct.
4. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
85
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete a zone
Primary Actor: Store administrator
Precondition: The zone is not the location of any address.
Trigger: The store administrator wants to delete a zone.
Main Success Scenario:
1. The store administrator selects the zone to be deleted.
2. The store administrator confirms that he wants to delete the zone:
[ÆDeleteZone]
3. The system deletes the zone.
Use case
Add a tax zone
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a tax zone.
Main Success Scenario:
1. The store administrator provides the details of the new tax zone:
[ÆNewTaxZone]
2. The system validates that the data is correct.
3. The system saves the new tax zone.
Use case
Edit a tax zone
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a tax zone.
Main Success Scenario:
1. The store administrator selects the tax zone to be edited.
2. The store administrator provides the new details of the selected tax zone:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
86
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
[ÆEditTaxZone]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a tax zone
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a tax zone.
Main Success Scenario:
1. The store administrator selects the tax zone to be deleted.
2. The store administrator confirms that he wants to delete the tax zone:
[ÆDeleteTaxZone]
3. The system deletes the tax zone and all the associated tax rates.
Use case
Add a tax class
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a tax class.
Main Success Scenario:
1. The store administrator provides the details of the new tax class:
[ÆNewTaxClass]
2. The system validates that the data is correct.
3. The system saves the new tax class.
Use case
Edit a tax class
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a tax class.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
87
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Main Success Scenario:
1. The store administrator selects the tax class to be edited.
2. The store administrator provides the new details of the selected tax class:
[ÆEditTaxClass]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a tax class
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a tax class.
Main Success Scenario:
1. The store administrator selects the tax class to be deleted.
2. The system informs the store administrator about how many products are associated to the deleted
tax class.
3. The store administrator confirms that he wants to delete the tax class:
[ÆDeleteTaxClass]
4. The system deletes the tax class and all the associated tax rates.
Extensions:
2a. The store administrator don’t want to delete the tax class.
2a1. The use case ends.
Use case
Add a tax rate
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a tax rate.
Main Success Scenario:
1. The store administrator provides the details of the new tax rate:
[ÆNewTaxRate]
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
88
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
2. The system validates that the data is correct.
3. The system saves the new tax rate.
Use case
Edit a tax rate
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a tax rate.
Main Success Scenario:
1. The store administrator selects the tax rate to be edited.
2. The store administrator provides the new details of the selected tax rate:
[ÆEditTaxRate]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a tax rate
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a tax rate.
Main Success Scenario:
1. The store administrator selects the tax rate to be deleted.
2. The store administrator confirms that he wants to delete the tax rate:
[ÆDeleteTaxRate]
3. The system deletes the tax rate.
Use case
Add a product
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a product to the store catalog.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
89
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Main Success Scenario:
1. The store administrator selects the product category.
2. The store administrator provides the product data:
[ÆNewProduct]
3. The system validates that the data is correct.
4. The system saves the new product.
5. The store administrator provides a product attribute:
[ÆNewProductAttribute]
6. The system validates that the product attribute is correct.
7. The system saves the new product attribute.
The store administrator repeats steps 5-7 until he is done.
Extensions:
5a. The product does not have product attributes:
5a1. The use case ends.
5b. The product option is new:
5b1. Add a product option.
5c. The product option value is new:
5c1. Add a product option value.
Use case
Add a product option
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a product option to the store catalog.
Main Success Scenario:
1. The store administrator provides the product option data:
[ÆNewProductOption]
2. The system validates that the data is correct.
3. The system saves the new product option.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
90
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Edit a product option
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a product option.
Main Success Scenario:
1. The store administrator selects the product option to be edited.
2. The store administrator provides the new details of the selected product option:
[ÆEditProductOption]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a product option
Primary Actor: Store administrator
Precondition: The product option has not products or values linked to it.
Trigger: The store administrator wants to delete a product option.
Main Success Scenario:
1. The store administrator selects the product option to be deleted.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the product option:
[ÆDeleteProductOption]
4. The system deletes the product option.
Use case
Add a product option value
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a value to a product option.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
91
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The store administrator selects the product option.
2. The store administrator provides the product option value data:
[ÆNewProductOptionValue]
3. The system validates that the data is correct.
4. The system saves the new product option value.
Use case
Edit a product option value
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a product option value.
Main Success Scenario:
1. The store administrator selects the product option value to be edited.
2. The store administrator provides the new details of the selected product option value:
[ÆEditProductOptionValue]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a product option value
Primary Actor: Store administrator
Precondition: The product option value has not products linked to it.
Trigger: The store administrator wants to delete a product option value.
Main Success Scenario:
1. The store administrator selects the product option value to delete.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the product option value:
[ÆDeleteProductOptionValue]
4. The system deletes the product option value.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
92
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Add a product attribute
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to assign an attribute to a product.
Main Success Scenario:
1. The store administrator selects the product.
2. The store administrator provides the attribute and the product attribute data (increment and sign):
[ÆNewProductAttribute]
[ÆNewDownloadableProductAttribute]
3. The system validates that the data is correct.
4. The system saves the new product attribute.
Extensions:
2a. The product option is new:
2a1. Add a product option.
2b. The product option value is new:
2b1. Add a product option value.
Use case
Edit a product attribute
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a product attribute.
Main Success Scenario:
1. The store administrator selects the product attribute to be edited.
2. The store administrator provides the new details for the product attribute:
[ÆAttributeChange]
[ÆIncrementAndSignAttributeChange]
[ÆEditDownloadableAttribute]
3. The system validates that the data is correct.
4. The system saves the changes.
The system repeats steps 2-4 until he is done.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
93
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete a product attribute
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a product attribute.
Main Success Scenario:
1. The store administrator selects the product attribute to be deleted.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the product attribute:
[ÆDeleteProductAttribute]
4. The system deletes the product attribute.
Extensions:
3a. The product attribute is part of an existing order line:
3a1. The system changes the status of the product attribute to disable.
[ÆProductAttributeStatusChange]
3a2. The use case ends
Use case
Edit a product
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a product.
Main Success Scenario:
1. The store administrator selects the product to be edited.
2. The store administrator provides the new values for the attributes of the product:
[ÆEditProduct]
3. The system validates that the data is correct.
4. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
94
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete a product
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a product.
Main Success Scenario:
1. The store administrator selects the product to be deleted.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the product:
[ÆDeleteProduct]
4. The system deletes the product and their product attributes.
Extensions:
3a. The product is part of an order:
3a1. The system changes the status of the product to disable.
[ÆProductStatusChange]
3a2. The use case ends.
Use case
Move a product
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to change the category of a product.
Main Success Scenario:
1. The store administrator selects the product to be moved.
2. The store administrator indicates the new category of the selected product, if any:
[ÆMoveProduct]
3. The system validates that the data is correct.
4. The system saves the new placement.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
95
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Link a product
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to link a product to another category.
Main Success Scenario:
1. The store administrator selects the product to be linked.
2. The store administrator indicates the new category of the selected product, if any :
[ÆLinkProduct]
3. The system links the product.
Use case
Add a product category
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a category.
Main Success Scenario:
1. The store administrator provides the details of the new product category, including its parent
category, if any:
[ÆNewCategory]
2. The system validates that the data is correct.
3. The system saves the new category.
Use case
Edit a product category
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a category.
Main Success Scenario:
1. The store administrator selects the category to be edited.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
96
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
2. The store administrator provides the new details of the selected category:
[ÆEditCategory]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Move a product category
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to change the placement of a category in the
category hierarchy.
Main Success Scenario:
1. The store administrator selects the category to be moved.
2. The store administrator indicates the new parent category, if any:
[ÆMoveCategory]
3. The system validates that the data is correct.
4. The system saves the new placement.
Use case
Delete a product category
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a category.
Main Success Scenario:
1. The store administrator selects the category to be deleted.
2. The system warns the store administrator of the number of subcategories and products linked to the
category to be deleted.
3. The store administrator confirms that he wants to delete the category:
[ÆDeleteCategory]
4. The system deletes the selected category and its subcategories. The products linked to the deleted
category or its subcategories are removed from the system if they do not participate in any orders.
The system changes the status of the products which participate in orders to out of stock.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
97
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Add a special
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a special.
Main Success Scenario:
1. The store administrator selects the product which will be offered in a special price.
2. The store administrator provides the details of the special:
[ÆNewSpecial]
3. The system validates that the data is correct.
4. The system saves the new special.
Use case
Edit a special
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a special.
Main Success Scenario:
1. The store administrator selects the special to be edited.
2. The store administrator provides the new details of the selected special:
[ÆEditSpecial]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a special
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a special.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
98
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The store administrator selects the special to be deleted.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the special:
[ÆDeleteSpecial]
4. The system deletes the special.
Use case
Add a manufacturer
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a manufacturer.
Main Success Scenario:
1. The store administrator provides the details of the new manufacturer:
[ÆNewManufacturer]
2. The system validates that the data is correct.
3. The system saves the new manufacturer.
Use case
Edit a manufacturer
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a manufacturer.
Main Success Scenario:
1. The store administrator selects the manufacturer to be edited.
2. The store administrator provides the new details of the selected manufacturer:
[ÆEditManufacturer]
3. The system validates that the data is correct.
4. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
99
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete a manufacturer
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a manufacturer.
Main Success Scenario:
1. The store administrator selects the manufacturer to delete.
2. The system warns the store administrator of the number of products linked to the manufacturer to
be deleted.
3. The store administrator confirms that he wants to delete the manufacturer:
[ÆDeleteManufacturer]
4. The system deletes the manufacturer and, if requested, changes the status of the products
manufactured by it to out of stock.
Use case
Add a banner
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a new banner.
Main Success Scenario:
1. The store administrator provides the details of the new banner:
[ÆNewBanner]
2. The system validates that the data is correct.
3. The system saves the new banner.
Use case
Edit a banner
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a banner.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
100
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The store administrator selects the banner to be edited.
2. The store administrator provides the new details of the selected banner:
[ÆEditBanner]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a banner
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a banner.
Main Success Scenario:
1. The store administrator selects the banner to be deleted.
2. The store administrator confirms that he wants to delete the banner:
[ÆDeleteBanner]
3. The system deletes the banner.
Use case
Add a banner group
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a new banner group.
Main Success Scenario:
1. The store administrator provides the details of the new banner group:
[ÆNewBannerGroup]
2. The system validates that the data is correct.
3. The system saves the new banner.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
101
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Edit a banner group
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a banner group.
Main Success Scenario:
1. The store administrator selects the banner group to be edited.
2. The store administrator provides the new details of the selected banner group:
[ÆEditBannerGroup]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a banner group
Primary Actor: Store administrator
Precondition: The banner group doesn’t contain any banners.
Trigger: The store administrator wants to delete a banner.
Main Success Scenario:
1. The store administrator selects the banner group to be deleted.
2. The store administrator confirms that he wants to delete the banner group:
[ÆDeleteBannerGroup]
3. The system deletes the banner.
Use case
Send an email
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to send an email to customers.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
102
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The store administrator selects the addressee customer, or one of the predefined set of addressee
customers (all the customers or all the newsletter subscribers).
2. The store administrator specifies the sender address.
3. The store administrator provides the subject and the message.
4. The store administrator confirms that he wants to send the email.
5. The system sends the email.
Use case
Create a newsletter
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to create a new newsletter.
Main Success Scenario:
1. The store administrator selects the type of the newsletter (newsletter or product nofitification).
2. The store administrator provides the title and the content of the newsletter:
[ÆNewNewsletter]
[ÆNewProductNotification]
3. The system validates that the data is correct.
4. The system saves the newsletter.
Use case
Edit a newsletter
Primary Actor: Store administrator
Precondition: The newsletter is unlocked.
Trigger: The store administrator wants to edit a newsletter.
Main Success Scenario:
1. The store administrator selects the newsletter to be edited.
2. The store administrator provides the new details of the selected newsletter:
[ÆEditNewsletter]
[ÆEditProductNotification]
3. The system validates that the data is correct.
4. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
103
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete a newsletter
Primary Actor: Store administrator
Precondition: The newsletter is unlocked.
Trigger: The store administrator wants to delete a newsletter.
Main Success Scenario:
1. The store administrator selects the newsletter to be deleted.
2. The store administrator confirms that he wants to delete the newsletter:
[ÆDeleteNewsletter]
3. The system deletes the newsletter.
Use case
Lock a newsletter
Primary Actor: Store administrator
Precondition: The newsletter is unlocked.
Trigger: The store administrator wants to indicate to the other administrators that a
newsletter is pending to be delivered.
Main Success Scenario:
1. The store administrator selects the newsletter to be locked.
[ÆLockNewsletter]
2. The system saves the change.
Use case
Unlock a newsletter
Primary Actor: Store administrator
Precondition: The newsletter is locked.
Trigger: The store administrator wants to indicate to the other administrators that a
newsletter ceases to be locked.
Main Success Scenario:
1. The store administrator selects the newsletter to be unlocked.
[ÆUnlockNewsletter]
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
104
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
2. The system saves the change.
Use case
Send a newsletter
Primary Actor: Store administrator
Precondition: The newsletter is locked.
Trigger: The store administrator wants to send a newsletter.
Main Success Scenario:
1. The store administrator selects the newsletter which will be sent.
2. The system sends the newsletter to all the newsletter subscribers.
3. The system saves that the newsletter has been sent.
[ÆSendNewsletter]
Extensions:
2a. The newsletter is a product notification.
2a1. The store administrator selects which products are implied in the notification.
2a2. The systems sends the newsletter to customers who are subscribed to some of the
notificated products.
2a3. The use case continues at step 3.
Use case
Create a customer
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to open an account in the store.
Main Success Scenario:
1. The customer provides the required customer data:
[ÆNewCustomer]
2. The system validates the customer data.
3. The system saves the new account.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
105
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Change password
Primary Actor: Customer
Precondition: The customer is logged in.
Trigger: A customer wants to change his password.
Main Success Scenario:
1. The customer provides the old password.
2. The customer provides the new password twice.
[ÆPasswordChange]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Change customer details
Primary Actor: Customer
Precondition: The customer is logged in.
Trigger: A customer wants to change its customer details.
Main Success Scenario:
1. The customer provides the new customer details.
[ÆEditCustomerDetails]
2. The system validates that the data is correct.
3. The system saves the changes.
Use case
Administrate address book
Primary Actor: Customer
Precondition: The customer is logged in and the number of addresses is less than the
maximum number of address entries permitted.
Trigger: A customer wants to view or change the address book.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
106
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The system displays the current address book entries of the customer.
2. The customer selects an address book entry to be edited :
[ÆEditCustomerAddress]
3. The system validates that the data is correct.
4. The system saves the changes and displays the new address book.
The customer repeats steps 1-4 until he is done.
Extensions:
2a. The customer doesn’t want to change the address book:
2a1. The use case ends.
2b. The customer wants to add a new address book entry:
2b1. The customer provides the required data:
[ÆNewCustomerAddress]
2b2. The use case continues at step 3.
2c. The customer wants to delete an address book entry:
2c1. The customer selects the address book entry:
[ÆDeleteCustomerAddress]
2c2. The use case continues at step 3.
2d. The customer wants to change the default address book entry:
2d1. The customer selects the new default address book entry:
[ÆPrimaryCustomerAddressChange]
2d2. The use case continues at step 3.
Use case
Administrate subscriptions
Primary Actor: Customer
Precondition: The customer is logged in.
Trigger: A customer wants to view or change their product notification subscriptions.
Main Success Scenario:
1. The system displays the details of the current product notification subscriptions of the customer.
2. The customer adds a new product subscription:
[ÆNewProductNotificationSubscription]
3. The system validates that the data is correct.
4. The system saves the changes and displays the new product notification subscriptions.
The customer repeats steps 1-4 until he is done.
Extensions:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
107
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
2a. The customer doesn’t want to change their product notification subscriptions:
2a1. The use case ends.
2b. The customer wants to be subscribed or unsubscribed to all product notifications:
[Æ EditGlobalNotifications]
2c. The customer wants to delete a product notification subscription:
2c1. The customer selects the product:
[ÆDeleteProductNotificationSubscription]
2c2. The use case continues at step 3.
Use case
Edit a customer
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a customer.
Main Success Scenario:
1. The store administrator selects the customer to be edited.
2. The store administrator provides the new details of the selected customer:
[ÆEditCustomer]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a customer
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a customer.
Main Success Scenario:
1. The store administrator selects the customer to be deleted.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the customer:
[ÆDeleteCustomer]
4. The system deletes the customer and their addresses, reviews, notification subscriptions and
shopping carts.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
108
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Extensions:
3a. The customer has orders:
3a1. The system changes the status of the customer to disable.
[ÆCustomerStatusChange]
3a2. The system deletes customer's addresses, reviews, notification subscriptions
and shopping carts.
3a3. The use case ends.
Use case
Open session
Primary Actor: Customer
Precondition: None.
Trigger: A customer starts using the system.
Main Success Scenario:
1. The system creates an anonymous session :
[ÆNewSession]
Use case
Finish session
Primary Actor: Customer
Precondition: None.
Trigger: A customer finishes using the system.
Main Success Scenario:
1. The system deletes the current session.
[ÆDeleteSession]
Extensions:
1a. The customer is logged in and the session has a non empty shopping cart.
1a1. The shopping cart is saved.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
109
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Log in
Primary Actor: Customer
Precondition: The customer is not logged in yet.
Trigger: A customer logs in the system.
Main Success Scenario:
1. The customer introduces their identification data.
2. The system validates the identification data.
3. The customer becomes the owner of the current session.
[ÆLogIn]
Extensions:
3a. The customer has a shopping cart from a previous session.
3a1. The previous shopping cart is restored.
[ÆRestorePreviousShoppingCart]
Use case
LogOut
Primary Actor: Customer
Precondition: The customer is logged in.
Trigger: A customer logs out from the system.
Main Success Scenario:
1. The current session becomes anonymous.
[ÆLogOut]
Extensions:
1a. The customer has a non empty shopping cart.
1a1. The shopping cart is saved.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
110
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Change the current language
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to change the current language of the session.
Main Success Scenario:
1. The store administrator selects the language which will become the current language.
2. The system updates the current language.
[ÆSetCurrentLanguage]
Use case
Change the current currency
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to change the current currency of the session.
Main Success Scenario:
1. The store administrator selects the currency which will become the current currency.
2. The system updates the current currency.
[ÆSetCurrentCurrency]
Use case
Add a review
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to write a review of a product.
Main Success Scenario:
1. The customer selects a product.
2. The customer provides the content and the rate of the review:
[ÆNewReview]
3. The system validates that the data is correct.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
111
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
4. The system saves the review.
Extensions:
2a. The customer is not logged in:
2a1. The customer logs in:
[ÆLogIn]
2a2. The use case continues at step 2.
Use case
Edit a review
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit a review.
Main Success Scenario:
1. The store administrator selects the review to be edited.
2. The store administrator provides the modified text and the new rating of the selected review.
[ÆEditReview]
3. The system validates that the data is correct.
4. The system saves the changes.
Use case
Delete a review
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to delete a review.
Main Success Scenario:
1. The store administrator selects the review to be deleted.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to delete the review:
[ÆDeleteReview]
4. The system deletes the review.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
112
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Place an order
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to place and order.
Main Success Scenario:
1. At any time before step 10 the customer logs in:
[ÆLogIn]
The system adds the contents of the anonymous shopping cart to the customer shopping cart.
2. The system displays the contents of the shopping cart.
3. The customer browses the product catalog.
[ÆReadProductInfo]
4. The customer selects a product to buy:
[ÆAddProductToShoppingCart]
5. The system adds the product to the shopping cart.
6. The system displays the contents of the shopping cart.
7. The customer changes the contents of the shopping cart:
[ÆUpdateShoppingCart]
8. The system updates the shopping cart.
9. The system displays the contents of the updated shopping cart.
The customer repeats steps 3,4 and 7 as necessary to build his order.
10. The customer checks out the order.
11. The system shows the shipping address and the available shipping methods.
12. The customer selects the preferred shipping method.
13. The system shows the billing address and the available payment methods.
14. The customer selects the preferred payment method.
15. The system displays a summary of the order.
16. The customer confirms the order:
[ÆOrderConfirmation]
17. The system saves the order.
18. The system sends an email to the customer and to the store extra order emails with the
information about the order.
Extensions:
1a. The customer is new:
1a1. Create customer.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
113
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
5a. The configurable option Display cart after adding a product is disabled
The customer repeats steps 3 and 4 as necessary.
5a1. The customer continues with the checkout procedure at step 9.
16a. The customer wants to change the contents of the shopping cart:
16a1. The customer changes the contents of the shopping cart:
[ÆUpdateShoppingCart]
16a2. The customer continues with the checkout procedure at step 11.
11a, 16a. The customer wants to change the shipping address:
11a1. The system shows the know addresses of the customer.
11a2. The customer selects a different shipping address.
11a3. The customer continues with the checkout procedure at step 11.
13a, 16b. The customer wants to change the billing address:
13a1. The system shows the know addresses of the customer.
13a2. The customer selects a different billing address.
13a3. The customer continues with the checkout procedure at step 13.
16c. The customer wants to change the shipping method:
16c1. The customer selects the new shipping method.
16c2. The customer continues with the checkout procedure at step 13.
16d. The customer wants to change the payment method:
16d1. The customer selects the new payment method.
16d2. The customer continues with the checkout procedure at step 15.
11a2a,16a2a. The customer wants to define a new shipping address:
11a2a1. The customer gives the new address:
[ÆNewCustomerAddress]
11a2a2. The system saves the address.
11a2a3. The customer continues with the checkout procedure at step 11.
13a2a,16b2a. The customer wants to define a new billing address:
13a2a1. The customer gives the new address:
[ÆNewCustomerAddress]
13a2a2. The system saves the address.
13a2a3. The customer continues with the checkout procedure at step 13.
Use case
Cancel an order
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to cancel an order.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
114
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Main Success Scenario:
1. The store administrator selects the order to be cancelled.
2. The system asks for the confirmation of the store administrator.
3. The store administrator confirms that he wants to cancel the order:
[ÆCancelOrder]
4. The system sets the order status to cancelled.
Use case
Add an order status
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to add a new order status.
Main Success Scenario:
1. The store administrator provides the details of the new order status:
[ÆNewOrderStatus]
2. The system validates that the data is correct.
3. The system saves the new order status.
Use case
Edit an order status
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to edit an order status.
Main Success Scenario:
1. The store administrator selects the order status to be edited.
2. The store administrator provides the new details of the selected order status:
[ÆEditOrderStatus]
3. The system validates that the data is correct.
4. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
115
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Delete an order status
Primary Actor: Store administrator
Precondition: The deleted order status is not the current status of any order.
Trigger: The store administrator wants to delete an order status.
Main Success Scenario:
1. The store administrator selects the order status to be deleted.
2. The store administrator confirms that he wants to delete the order status:
[ÆDeleteOrderStatus]
3. The system deletes the order status.
Extensions:
2a. The order status has been an status of an order:
2a1. The system changes the status of the order status to disable.
[ÆProductStatusChange]
2a2. The use case ends.
Use case
Change the status of an order
Primary Actor: Store administrator
Precondition: None.
Trigger: The store administrator wants to change the status of an order.
Main Success Scenario:
1. The system shows the orders and their status.
2. The store administrator selects the order which will be edited.
3. The system shows the applicable order status.
4. The store administrator selects the new status.
[ÆUpdateOrderStatus]
5. The system validates that the data is correct.
6. The system saves the changes.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
116
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Set cancelled order status
Primary Actor: Store administrator
Precondition: The order status is not yet the cancelled status.
Trigger: The store administrator wants to indicate to the system which order status is used
to indicate that an order is cancelled.
Main Success Scenario:
1. The store administrator selects an order status.
2. The system register that the selected order status represents cancelled orders.
[ÆSetCancelledOrderStatus]
Use case
Set default order status
Primary Actor: Store administrator
Precondition: The order status is not yet the default status.
Trigger: The store administrator wants to indicate to the system which order status is assign
when an order is created.
Main Success Scenario:
1. The store administrator selects an order status.
2. The system register that the selected order status is the default order status.
[ÆSetDefaultOrderStatus]
Use case
Show a banner
Primary Actor: System.
Precondition: None.
Trigger: The system shows a banner.
Main Success Scenario:
1. The system shows a banner.
[ÆShowBanner]
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
117
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Use case
Click a banner
Primary Actor: Customer
Precondition: None.
Trigger: The customer clicks on a banner.
Main Success Scenario:
1. The customer clicks on a banner.
[ÆClickBanner]
2. The system redirects the online store to the banner’s web page.
Use case
Read a review
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to read a review of a product.
Main Success Scenario:
1. The system shows a summary of the reviews of the product.
2. The customer selects a review.
[ÆReadReview]
3. The system shows the selected review.
Use case
Download a product
Primary Actor: Customer
Precondition: The customer is logged in.
The customer purchased the product.
Download is enabled by the system.
The download is not expired and the number of download has not been
exceeded.
Trigger: A customer wants to download a purchased product.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
118
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The customer selects the purchased product to be downloaded.
[ÆProductDownload]
2. The system allows the customer downloading the product.
Use case
Show manufacturer’s web
Primary Actor: Customer
Precondition: None.
Trigger: A customer wants to be redirected to the manufacturer’s web page.
Main Success Scenario:
1. The customer selects a manufacturer.
[ÆClickManufacturer]
2. The customer is redirected to the the manufacturer’s web page.
Use case
Show products under stock
Primary Actor: Store administrator.
Precondition: None.
Trigger: The store administrator wants to obtain which products have to be reordered.
Main Success Scenario:
1. The system shows the set of products under stock :
[ÆShowUnderStockProducs]
Use case
Show expected products
Primary Actor: Store administrator, Customer.
Precondition: None.
Trigger: The store administrator or the customer wants to obtain which products will be in
stock soon.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
119
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The system shows the set of expected products:
[ÆShowExpectedProducs]
Use case
Show orders of a customer
Primary Actor: Store administrator.
Precondition: None.
Trigger: The store administrator wants to obtain the orders of a customer.
Main Success Scenario:
1. The system shows the list of customers.
2. The store administrator selects a customer.
3. The system shows the orders of the selected customer:
[ÆShowOrdersOfCustomer]
Use case
Show previous orders
Primary Actor: Customer.
Precondition: The customer is logged in.
Trigger: A Customer wants to visualize their orders.
Main Success Scenario:
1. The system shows the previous orders made by the customer:
[ÆShowOrdersOfCustomer]
Use case
Show best viewed products
Primary Actor: Store administrator, Customer.
Precondition: None.
Trigger: The store administrator or the customer wants to visualize the most viewed
products.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
120
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The system shows the products in stock ordered by the number of times which has been visualized
by the customers.
[ÆShowBestViewedProducts]
Use case
Show best products purchased
Primary Actor: Store administrator, Customer.
Precondition: None.
Trigger: The store administrator or the customer wants to visualize the most purchased
products.
Main Success Scenario:
1. The system shows the products in stock ordered by the number of times which has been purchased
by the customers.
[ÆShowBestPurchasedProducts]
Use case
Show customer’s orders total
Primary Actor: Store administrator.
Precondition: None.
Trigger: The store administrator wants to visualize the total amount of money spent by each
customer in the online store.
Main Success Scenario:
1. The system shows the customers and the total price of their orders.
[ÆShowCustomersOrdersTotal]
Use case
Online customers
Primary Actor: Store administrator.
Precondition: None.
Trigger: The store administrator wants to visualize the customers who are online.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
121
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The system shows the online customers.
[ÆShowOnlineCustomers]
Use case
Show specials
Primary Actor: Store administrator, Customer.
Precondition: None.
Trigger: The store administrator or the customer wants to visualize products on offer.
Main Success Scenario:
1. The system shows the products on offer.
[ÆShowSpecials]
Use case
Show products of a category
Primary Actor: Store administrator, customer.
Precondition: None.
Trigger: The store administrator or the customer wants to visualize the products contained in
a category.
Main Success Scenario:
1. The store administrator or the customer selects a category.
2. The system shows the products of the selected category.
[ÆShowProductsOfCategory]
Use case
Show products of a manufacturer
Primary Actor: Store administrator, customer.
Precondition: None.
Trigger: The store administrator or the customer wants to visualize the products produced
by a manufacturer.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
122
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The store administrator or the customer selects a manufacturer.
2. The system shows the products manufactured by the selected manufacturer.
[ÆShowProductsOfManufacturer]
Use case
Show new products
Primary Actor: Customer.
Precondition: None.
Trigger: The customer wants to visualize the last launched products.
Main Success Scenario:
1. The system shows the last products on sale.
[ÆShowNewProducts]
Use case
Show reviews of a product
Primary Actor: Store administrator, customer.
Precondition: None.
Trigger: The store administrator or the customer wants to visualize the reviews of a product.
Main Success Scenario:
1. The store administrator or the customer selects a product.
2. The system shows the reviews of the selected product
[ÆShowReviewsOfProduct]
Use case
Tell to a friend
Primary Actor: Customer.
Precondition: None.
Trigger: A Customer wants to send the current web page to a friend with a comment by
email.
Main Success Scenario:
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
123
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
1. The customer provides his name, his friend’s name, his friend’s email and the message about the
web page.
2. The system sends the email with a link to the current web page.
Use case
Generate an invoice
Primary Actor: Store administrator.
Precondition: None.
Trigger: The store administrator wants to generate an invoice corresponding to an order.
Main Success Scenario:
1. The store administrator selects the order.
2. The system shows a printable invoice.
Use case
Generate a packaging slip
Primary Actor: Store administrator.
Precondition: None.
Trigger: The store administrator wants to generate a packaging slip of an order.
Main Success Scenario:
1. The store administrator selects the order.
2. The system shows a printable packaging slip.
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
124
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
3.4 EVENTS SPECIFICATION
Event
AddProductToShoppingCart
„
Event diagram
Session
1
SessionEvent
DomainEvent
AddProductToShoppingCart
Attribute
*
1
quantity : PositiveInteger
Product
effect()
„
Initial Integrity Constraints
context AddProductToShoppingCart::AttributesAreFromProduct(): Boolean
body : self.product.attribute -> includesAll(self.attribute)
context AddProductToShoppingCart::AttributesAreOfDifferentOptions(): Boolean
body : self.attribute -> isUnique(option)
„
Effect
context AddProductToShoppingCart::effect()
post ShoppingCartItemIsCreated :
sci.oclIsNew and
sci.oclIsTypeOf(ShoppingCartItem) and
sci.quantity = self.quantity and
sci.product = self.product and
sci.attribute = self.attribute and
if self.session.shoppingCart -> notEmpty() then
--The session has a shopping cart
self.session.shoppingCart.shoppingCartItem -> includes(sci)
else
--The session does not have a shopping cart
if self.session.customer -> isEmpty() then
--The session is Anonymous
sc.oclIsNew() and
sc.oclIsTypeOf(AnonymousShoppingCart) and
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
125
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
self.session.shoppingCart = sc and
sc.shoppingCartItem -> includes(sci)
else
--The customer has logged in
if self.session.customer.customerShoppingCart -> notEmpty() then
--The customer has a previous shopping cart
self.session.shoppingCart = self.session.customer.customerShoppingCart and
self.session.shoppingCart.shoppingCartItem -> includes(sci)
else
--The customer does not have a previous shopping cart
csc.oclIsNew() and
csc.oclIsTypeOf(CustomerShoppingCart) and
self.session.shoppingCart = csc and
csc.shoppingCartItem -> includes(sci)
endif
endif
endif
Event
AddressBookEntriesMaximumChange
„
Event diagram
DomainEvent
AddressBookEntriesMaximumChange
newMaximum : Natural
effect()
„
Effect
context AddressBookEntriesMaximumChange::effect()
post : MaximumValues.addressBookEntries = self.newMaximum
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
126
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
AllowCheckoutStockConfigurationChange
„
Event diagram
DomainEvent
AllowCheckoutStockConfigurationChange
newValue : Boolean
effect()
„
Effect
context AllowCheckoutStockConfigurationChange::effect()
post : Stock.allowCheckout= self.newValue
Event
AllowGuestToTellAFriendChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
AllowGuestToTellAFriendChange
newAllowGuestToTellAFriend : Boolean
effect()
context StoreEvent::myStore():Store
body : Store.allInstances() -> any(true)
„
Effect
context AllowGuestToTellAFriendChange::effect()
post : myStore.allowGuestToTellAFriend = self.newAllowGuestToTellAFriend
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
127
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
AttributeChange
„
Event diagram
ProductAttribute
1
ExistingProductAttributeEvent
1
newValue
Value
„
DomainEvent
AttributeChange
effect()
1
newOption
Effect
context AttributeChange::effect()
post :
self.productAttribute.attribute.value = self.newValue and
self.productAttribute.attribute.option = self.newOption
Event
CancelOrder
„
Event diagram
Order
1
ExistingOrderEvent
DomainEvent
CancelOrder
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
128
Option
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context CancelOrder::effect()
post:
self.order.orderStatusChange -> sortedBy(added) -> last().orderStatus =
Store.allInstances() ->any(true).cancelledStatus
Event
CheckLevelStockConfigurationChange
„
Event diagram
DomainEvent
CheckLevelStockConfigurationChange
newValue : Boolean
effect()
„
Effect
context CheckLevelStockConfigurationChange::effect()
post : Stock.checkStockLevel= self.newValue
Event
CityMinimumChange
„
Event diagram
DomainEvent
CityMinimumChange
newMinimum : PositiveInteger
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
129
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context CityMinimumChange::effect()
post : MinimumValues.city = self.newMinimum
Event
ClickBanner
„
Event diagram
DomainEvent
1
ExistingBannerEvent
ClickBanner
effect()
„
Effect
context ClickBanner::effect()
post :
BannerHistory.allInstances() -> one
(bh | bh.banner = self.banner and
bh.date = Today() and
bh.clicked = bh@pre.clicked + 1)
Event
ClickManufacturer
„
Event diagram
Manufacturer
1
ExistingManufacturerEvent
DomainEvent
ClickManufacturer
1
Language
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
130
Banner
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ClickManufacturer::effect()
post :
let manufacturerLanguageRead:ManufacturerInLanguage =
ManufacturerInLanguage.allInstances() -> select
(mil | mil.manufacturer = self.manufacturer and
mil.language = self.language)
in
manufacturerLanguageRead.urlClicked = manufacturerLanguageRead@pre.urlClicked + 1 and
manufacturerLanguageRead.lastClick = Now()
Event
CompanyCustomerDetailChange
„
Event diagram
DomainEvent
CompanyCustomerDetailChange
newValue : Boolean
effect()
„
Effect
context CompanyCustomerDetailChange::effect()
post : CustomerDetails.company = self.newValue
Event
CompanyNameMinimumChange
„
Event diagram
DomainEvent
CompanyNameMinimumChange
newMinimum : Natural
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
131
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context CompanyNameMinimumChange::effect()
post : MinimumValues.companyName = self.newMinimum
Event
CountryChange
„
Event diagram
DomainEvent
StoreEvent
Store
1
/myStore
CountryChange
1
newCountry
effect()
„
Country
Effect
context CountryChange::effect()
post : myStore.country = self.newCountry
Event
CountryShippingConfigurationChange
„
Event diagram
DomainEvent
CountryShippingConfigurationChange
1
effect()
„
Country
newCountryOfOrigin
Effect
context CountryShippingConfigurationChange::effect()
post : ShippingAndPackaging.countryOfOrigin = self.newCountryOfOrigin
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
132
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
CreditCardNumberMinimumChange
„
Event diagram
DomainEvent
CreditCardNumberMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context CreditCardNumberMinimumChange::effect()
post : MinimumValues.creditCardNumber = self.newMinimum
Event
CreditCardOwnerNameMinimumChange
„
Event diagram
DomainEvent
CreditCardOwnerNameMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context CreditCardOwnerNameMinimumChange::effect()
post : MinimumValues.creditCardOwnerName = self.newMinimum
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
133
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
CurrencyStatusChange
„
Event diagram
Currency
1
ExistingCurrencyEvent
DomainEvent
CurrencyStatusChange
newStatus : Status
effect()
„
Effect
context CurrencyStatusChange::effect()
post : self.currency.status = self.newStatus
Event
CustomerStatusChange
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
CustomerStatusChange
newStatus : Status
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
134
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context CustomerStatusChange::effect()
post : self.customer.status = self.newStatus
Event
DateOfBirthCustomerDetailChange
„
Event diagram
DomainEvent
DateOfBirthCustomerDetailChange
newValue : Boolean
effect()
„
Effect
context DateOfBirthCustomerDetailChange::effect()
post : CustomerDetails.dateOfBirth = self.newValue
Event
DateOfBirthMinimumChange
„
Event diagram
DomainEvent
DateOfBirthMinimumChange
newMinimum : PositiveInteger
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
135
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context DateOfBirthMinimumChange::effect()
post : MinimumValues.dateOfBirth = self.newMinimum
Event
DaysExpiryDelayDownloadConfigurationChange
„
Event diagram
DomainEvent
DaysExpiryDelayDownloadConfigurationChange
newValue : Natural
effect()
„
Effect
context DaysExpiryDelayDownloadConfigurationChange::effect()
post : Download.daysExpiryDelay= self.newValue
Event
DefaultSearchOperatorChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
DefaultSearchOperatorChange
newDefaultSearchOperator : Operator
effect()
„
Effect
context DefaultSearchOperatorChange::effect()
post : myStore.defaultSearchOperator = self.newDefaultSearchOperator
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
136
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteBanner
„
Event diagram
Banner
1
ExistingBannerEvent
DomainEvent
DeleteBanner
effect()
„
Effect
context DeleteBanner::effect()
post : not self.banner@pre.oclIsKindOf(OclAny)
Event
DeleteBannerGroup
„
Event diagram
BannerGroup
1
ExistingBannerGroupEvent
DomainEvent
DeleteBannerGroup
effect()
„
Initial Integrity Constraints
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
137
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
context DeleteBannerGroup::BannerGroupIsEmpty():Boolean
body : self.bannerGroup.banner -> isEmpty()
„
Effect
context DeleteBannerGroup::effect()
post : not self.bannerGroup@pre.oclIsKindOf(OclAny)
Event
DeleteCategory
„
Event diagram
Category
1
DomainEvent
ExistingCategoryEvent
DeleteCategory
effect()
„
Effect
context DeleteCategory::effect()
post deleteCategoryAndSubcategories:
not self.category@pre.oclIsKindOf(OclAny) and
not self.category@pre.child@pre -> forAll(c | c.oclIsKindOf(OclAny))
post deleteProductsOfCategory:
self.category@pre.product@pre -> forAll(p |
if p.orderLine -> notEmpty() then p.status = ProductStatus::outOfStock
else p@pre.oclIsKindOf(OclAny)
endif )
post deleteProductsOfChildCategory:
self.category@pre.child@pre.product@pre -> forAll(p |
if p.orderLine -> notEmpty() then p.status = ProductStatus::outOfStock
else p.oclIsKindOf(OclAny)
endif )
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
138
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteCountry
„
Event diagram
Country
1
ExistingCountryEvent
DomainEvent
DeleteCountry
effect()
„
Initial Integrity Constraints
context DeleteCountry::CountryIsNotALocation():Boolean
body :
Store.allInstances() -> any(true).country <> self.country and
Address.allInstances().country -> excludes(self.country)
„
Effect
context DeleteCountry::effect()
post : not self.country@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
139
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteCurrency
„
Event diagram
Currency
1
ExistingCurrencyEvent
DomainEvent
DeleteCurrency
effect()
„
Initial Integrity Constraints
context DeleteCurrency::AtLeastTwoCurrencies(): Boolean
body : Currency.allInstances() -> size() >= 2
„
Effect
context DeleteCurrency::effect()
post: not self.currency@pre.oclIsKindOf(OclAny)
Event
DeleteCustomer
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
DeleteCustomer
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
140
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context DeleteCustomer::effect()
post deleteCustomer:
not customer@pre.oclIsKindOf(OclAny)
post deleteReviewsAndShoppingCart:
not customer@pre.review@pre -> forAll (r | r.oclIsKindOf(OclAny)) and
customer@pre.customerShoppingCart->notEmpty()
implies
not customer@pre.customerShoppingCart@pre.oclIsKindOf(OclAny))
Event
DeleteCustomerAddress
„
Event diagram
<<dataType>>
Customer
Address
1
1
ExistingAddressEvent
DomainEvent
ExistingCustomerEvent
DeleteCustomerAddress
effect()
„
Initial Integrity Constraints
context DeleteCustomerAddress::AddressOfCustomer(): Boolean
body : self.customer.address -> includes(self.address)
context DeleteCustomerAddress::AtLeastTwoAddresses(): Boolean
body : self.customer.address.size() >= 2
„
Effect
context DeleteCustomerAddress::effect()
post : self.customer.address -> excludes(self.address)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
141
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteLanguage
„
Event diagram
Language
1
ExistingLanguageEvent
DomainEvent
DeleteLanguage
effect()
„
Initial Integrity Constraints
context DeleteLanguage::AtLeastTwoLanguages(): Boolean
body : Language.allInstances() -> size() >= 2
„
Effect
context DeleteLanguage::effect()
post: not self.language@pre.oclIsKindOf(OclAny)
Event
DeleteManufacturer
„
Event diagram
Manufacturer
1
DomainEvent
ExistingManufacturerEvent
DeleteManufacturer
deleteProds : Boolean
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
142
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context DeleteManufacturer::effect()
post deleteManufacturer:
not self.manufacturer@pre.oclIsKindOf(OclAny)
post changeProductsToOutOfStock:
deleteProds implies
manufacturer@pre.product@pre ->
forAll(status = ProductStatus::outOfStock)
Event
DeleteNewsletter
„
Event diagram
Newsletter
1
ExistingNewsletter
DomainEvent
DeleteNewsletter
effect()
„
Effect
context DeleteNewsletter::effect()
post : not self.newsletter@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
143
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteOrderStatus
„
Event diagram
OrderStatus
1
ExistingOrderStatusEvent
DomainEvent
DeleteOrderStatus
effect()
„
Initial Integrity Constraints
context DeleteOrderStatus:: IsNotTheCurrentStatusOfAnyOrder(): Boolean
body :
Order.allInstances() -> forAll (o | o.orderStatusChange -> sortedBy(added)
-> last().orderStatus <> self.orderStatus)
„
Effect
context DeleteOrderStatus::effect()
post : not self.orderStatus@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
144
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteProduct
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
DeleteProduct
effect()
„
Effect
context DeleteProduct::effect()
post: not product@pre.oclIsKindOf(OclAny)
Event
DeleteProductAttribute
„
Event diagram
ProductAttribute
1
ExistingProductAttributeEvent
DomainEvent
DeleteProductAttribute
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
145
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context DeleteProductAttribute::effect()
post: not productAttribut@pre.oclIsKindOf(OclAny)
Event
DeleteProductNotificationSubscription
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
DeleteProductNotificationSubscription
„
1
Product
deletedSubscribedProduct
effect()
Effect
context DeleteProductNotificationSubscription::effect()
post : customer.explicitNotifications -> excludes(self.deletedSubscribedProduct)
Event
DeleteProductOption
„
Event diagram
Option
1
ExistingOptionEvent
DomainEvent
DeleteProductOption
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
146
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context DeleteProductOption::HasNotProductsOrValues():Boolean
body : self.option.value -> isEmpty() and self.option.attribute.product -> isEmpty()
„
Effect
context DeleteProductOption::effect()
post : not self.option@pre.oclIsKindOf(OclAny)
Event
DeleteProductOptionValue
„
Event diagram
Value
1
ExistingValueEvent
DomainEvent
DeleteProductOptionValue
effect()
„
Initial Integrity Constraints
context DeleteProductOptionValue::HasNotProducts():Boolean
body : self.value.attribute.product -> isEmpty()
„
Effect
context DeleteProductOptionValue::effect()
post : not self.value@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
147
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteReview
„
Event diagram
Review
1
ExistingReviewEvent
DomainEvent
DeleteReview
effect()
„
Effect
context DeleteReview::effect()
post : not self.review@pre.oclIsKindOf(OclAny)
Event
DeleteSession
„
Event diagram
Session
1
ExistingSessionEvent
DomainEvent
DeleteSession
effect()
„
Effect
context DeleteSession::effect()
post : not self.session@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
148
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteSpecial
„
Event diagram
Special
1
ExistingSpecialEvent
DomainEvent
DeleteSpecial
effect()
„
Effect
context DeleteSpecial::effect()
post :
special.oclIsTypeOf(Product) and
not special.oclIsTypeOf(Special)
Event
DeleteTaxClass
„
Event diagram
TaxClass
1
ExistingTaxClassEvent
DomainEvent
DeleteTaxClass
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
149
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context DeleteTaxClass::effect()
post deleteTaxClass:
not self.taxClass@pre.oclIsKindOf(OclAny)
post deleteAssociatedTaxRates:
self.taxClass@pre.taxRate@pre -> forAll(tr | tr.oclIsKindOf(OclAny))
Event
DeleteTaxRate
„
Event diagram
TaxRate
1
ExistingTaxRateEvent
DomainEvent
DeleteTaxRate
effect()
„
Effect
context DeleteTaxRate::effect()
post : not self.taxRate@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
150
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
DeleteTaxZone
„
Event diagram
TaxZone
1
ExistingTaxZoneEvent
DomainEvent
DeleteTaxZone
effect()
„
Effect
context DeleteTaxZone::effect()
post deleteTaxZone:
not self.taxZone@pre.oclIsKindOf(OclAny)
post deleteAssociatedTaxRates:
self.taxZone@pre.taxRate@pre -> forAll(tr | tr.oclIsKindOf(OclAny))
Event
DeleteZone
„
Event diagram
Zone
1
ExistingZoneEvent
DomainEvent
DeleteZone
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
151
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context DeleteZone::ZoneIsNotALocation():Boolean
body : Store.allInstances() -> any(true).zone <> self.zone and
Address.allInstances().zone -> excludes(self.zone)
„
Effect
context DeleteZone::effect()
post : not self.zone@pre.oclIsKindOf(OclAny)
Event
DisplayCartAfterAddingProductChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
DisplayCartAfterAddingProductChange
newDisplayCartAfterAddingProduct : Boolean
effect()
„
Effect
context DisplayCartAfterAddingProductChange::effect()
post : myStore.displayCartAfterAddingProduct = self.newDisplayCartAfterAddingProduct
Event
DisplayPricesWithTaxChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
DisplayPricesWithTaxChange
newDisplayPricesWithTax : Boolean
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
152
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context DisplayPricesWithTaxChange::effect()
post : myStore.displayPricesWithTax = self.newDisplayPricesWithTax
Event
EditAuthorizeNetPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
status:Status
EditAuthorizeNetPaymentMethod
newUsername : String
newKey : String
newMode : TransactionMode
newMethod : TransactionMethod
newNotification : Boolean
effect()
„
Initial Integrity Constraints
context EditAuthorizeNetPaymentMethod::PaymentMethodIsInstalled():Boolean
body : AuthorizeNet.allInstances() -> notEmpty()
„
Effect
context EditAuthorizeNetPaymentMethod::effect()
post :
let pm:AuthorizeNet = AuthorizeNet.allInstances() -> any(true)
in
pm.username=self.newUsername and
pm.key=self.newKey and
pm.mode=self.newMode and
pm.method=self.newMethod and
pm.notification=self.newNotification and
pm.orderStatus=self.orderStatus and
pm.status=self.status and
pm.taxZone=self.taxZone
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
153
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
EditBanner
„
Event diagram
Banner
1
ExistingBannerEvent
DomainEvent
EditBanner
newTitle : String
newUrl : URL [0..1]
newImagePath : String
newHtml : HtmlText [0..1]
newExpires : Date [0..1]
newScheduled : Date [0..1]
newStatus : BannerStatus
effect()
„
Effect
context EditBanner::effect()
post :
self.banner.title = self.newTitle and
self.banner.url = self.newUrl and
self.banner.imagePath = self.newImagePath and
self.banner.html = self.newHtml and
self.banner.expires = self.newExpires and
self.banner.scheduled = self.newScheduled and
self.banner.status = self.newStatus
post :
self.banner@pre.status <> self.newStatus implies self.banner.statusChanged = Now()
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
154
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
EditBannerGroup
„
Event diagram
BannerGroup
1
ExistingBannerGroupEvent
DomainEvent
EditBannerGroup
newName : String
effect()
„
Effect
context EditBannerGroup::effect()
post : self.bannerGroup.name = self.newName
Event
EditCashOnDeliveryPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
status:Status
EditCashOnDeliveryPaymentMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
155
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context EditCashOnDeliveryPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CashOnDelivery.allInstances() -> notEmpty()
„
Effect
context EditCashOnDeliveryPaymentMethod::effect()
post :
let pm:CashOnDelivery = CashOnDelivery.allInstances() -> any(true) in
pm.orderStatus=self.orderStatus and
pm.status=self.status and
pm.taxZone=self.taxZone
Event
EditCategory
„
Event diagram
String
1
name
Category
Language
HasNewName
*
CategoryNameEvent
1
DomainEvent
EditCategory
Category
„
0..1
parent
imagePath : String [0..1]
sortOrder : Natural
Effect
context EditCategory::effect()
post :
self.category.imagePath = self.imagePath and
self.category.sortOrder = self.sortOrder and
self.category.parent = self.parent and
Language.allInstances() ->
forAll(l|
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
156
ExistingCategoryEvent
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
self.hasNewName->select(language=l).name=
self.category.hasCategoryName->select(language=l).categoryName)
post :
self.category.lastModified = Now()
Event
EditCheckMoneyPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
status:Status
EditCheckMoneyPaymentMethod
newMakePayableTo : Natural
effect()
„
Initial Integrity Constraints
context EditCheckMoneyPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CheckMoney.allInstances() -> notEmpty()
„
Effect
context EditCheckMoneyPaymentMethod::effect()
post :
let pm: CheckMoney = CheckMoney.allInstances() -> any(true) in
pm.makePayableTo=self.newMakePayableTo and
pm.orderStatus=self.orderStatus and
pm.status=self.status and
pm.taxZone=self.taxZone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
157
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditCountry
„
Event diagram
Country
1
ExistingCountryEvent
DomainEvent
EditCountry
newName : String
newIsoCode2 : String
newIsoCode3 : String
effect()
„
Effect
context EditCountry::effect()
post :
country.name = self.newName and
country.isoCode2 = self.newIsoCode2 and
country.isoCode3 = self.newIsoCode3
Event
EditCreditCardPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
status:Status
EditCreditCardPaymentMethod
newSplitCreditCardToMail : EMail
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
158
0..1
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context EditCreditCardPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CreditCard.allInstances() -> notEmpty()
„
Effect
context EditCreditCardPaymentMethod::effect()
post :
let pm:CreditCard = CreditCard.allInstances() -> any(true) in
pm.splitCreditCardToMail=self.newSplitCreditcardToMail and
pm.status=self.status and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
Event
EditCurrency
„
Event diagram
Currency
1
ExistingCurrencyEvent
DomainEvent
EditCurrency
newTitle : String
newCode : String
newSymbolLeft : String [0..1]
newSymbolRight : String [0..1]
newDecimalPlaces : Natural
newValue : Decimal
effect()
„
Effect
context EditCurrency::effect()
post :
currency.title = self.newTitle and
currency.code = self.newCode and
currency.symbolLeft = self.newSymbolLeft and
currency.symbolRight = self.newSymbolRight and
currency.decimalPlaces = self.newDecimalPlaces and
currency.value = self.newValue
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
159
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditCustomer
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
EditCustomer
newGender : Gender [0..1]
newFirstName : String
newLastName : String
newDateOfBirth : Date [0..1]
newEMailAddress : EMail
newPhone : String
newFax : String [0..1]
newNewsletter : Boolean
newPassword : String
newGlobalNotifications : Boolean
effect()
„
Initial Integrity Constraints
context EditCustomer::firstNameRight(): Boolean
body : self.newFirstName.size() >= MinimumValues.firstName
context EditCustomer::lastNameRight(): Boolean
body : self.newLastName.size() >= MinimumValues.lastName
context EditCustomer::dateOfBirthRight(): Boolean
body :
CustomerDetails.dateOfBirth implies
self.newDateOfBirth->notEmpty() and
self.newDateOfBirth.size() >= MinimumValues.dateOfBirth
context EditCustomer::genderRight(): Boolean
body : CustomerDetails.gender implies self.newGender->notEmpty()
context EditCustomer::eMailRight(): Boolean
body : self.newEMailAddress.size() >= MinimumValues.eMailAddress
context EditCustomer::telephoneRight(): Boolean
body : self.newTelephone.size() >= MinimumValues.telephoneNumber
„
Effect
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
160
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
context EditCustomer::effect()
post :
customer.gender = self.newGender and
customer.firstName = self.newFirstName and
customer.lastName = self.newLastName and
customer.dateOfBirth = self.newDateOfBirth and
customer.eMailAddress = self.newEMailAddress and
customer.phone = self.newPhone and
customer.fax = self.newFax and
customer.newsletter = self.newNewsletter and
customer.password = self.newPassword and
customer.globalNotifications = self.newGlobalNotifications and
post :
customer.lastModified = Now()
Event
EditCustomerAddress
„
Event diagram
<<dataType>>
Customer
Address
1
1
ExistingAddressEvent
DomainEvent
ExistingCustomerEvent
EditCustomerAddress
newAddress : Address
effect()
„
Initial Integrity Constraints
context EditCustomerAddress::AddressOfCustomer(): Boolean
body : self.customer.address -> includes(self.address)
context EditCustomerAddress::firstNameRight(): Boolean
body : self.newAdress.firstName.size() >= MinimumValues.firstName
context EditCustomerAddress::lastNameRight(): Boolean
body : self. newAdress.lastName.size() >= MinimumValues.lastName
context EditCustomerAddress::genderRight(): Boolean
body : CustomerDetails.gender implies self. newAdress.gender->notEmpty()
context EditCustomerAddress::suburbRight(): Boolean
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
161
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
body : CustomerDetails.suburb implies self. newAdress.suburb->notEmpty()
context EditCustomerAddress::streetAddressRight(): Boolean
body : self.newAdress.street.size() >= MinimumValues.streetAddress
context EditCustomerAddress::companyRight(): Boolean
body :
CustomerDetails.company implies
self.newAdress.company -> notEmpty() and
self.newAdress.company.size() >= MinimumValues.companyName
context EditCustomerAddress::postCodeRight(): Boolean
body : self.newAdress.postCode.size() >= MinimumValues.postCode
context EditCustomerAddress::cityRight(): Boolean
body : self.newAdress.city.size() >= MinimumValues.city
context EditCustomerAddress::stateRight(): Boolean
body :
CustomerDetails.state implies
self.newAdress.state -> notEmpty() and
self.newAdress.state.size() >= MinimumValues.state
context EditCustomerAddress::addressesHaveZoneIfNeeded(): Boolean
body :
self.newAdress.zone -> notEmpty() implies
self.newAdress.state = self.newAdress.zone.name and
self.newAdress.country = self.newAdress.zone.country
„
Effect
context EditCustomerAddress::effect()
post :
self.customer.address -> excludes(self.address) and
self.customer.address ->includes(self.newAddress)
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
162
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
EditCustomerDetails
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
EditCustomerDetails
newGender : Gender [0..1]
newFirstName : String
newLastName : String
newDateOfBirth : Date [0..1]
newEMailAddress : EMail
newPhone : String
newFax : String [0..1]
newNewsletter : Boolean
effect()
„
Initial Integrity Constraints
context EditCustomerDetails::firstNameRight(): Boolean
body : self.newFirstName.size() >= MinimumValues.firstName
context EditCustomerDetails::lastNameRight(): Boolean
body : self.newLastName.size() >= MinimumValues.lastName
context EditCustomerDetails::dateOfBirthRight(): Boolean
body :
CustomerDetails.dateOfBirth implies
self.newDateOfBirth->notEmpty()
self.newDateOfBirth.size() >= MinimumValues.dateOfBirth
context EditCustomerDetails::genderRight(): Boolean
body : CustomerDetails.gender implies self.newGender->notEmpty()
context EditCustomerDetails::eMailRight(): Boolean
body : self.newEMailAddress.size() >= MinimumValues.eMailAddress
context EditCustomerDetails::telephoneRight(): Boolean
body : self.newTelephone.size() >= MinimumValues.telephoneNumber
„
Effect
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
163
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
context EditCustomerDetails::effect()
post :
customer.gender = self.newGender and
customer.firstName = self.newFirstName and
customer.lastName = self.newLastName and
customer.dateOfBirth = self.newDateOfBirth and
customer.eMailAddress = self.newEMailAddress and
customer.phone = self.newPhone and
customer.fax = self.newFax and
customer.newsletter = self.newNewsletter
Event
EditDownloadableAttribute
„
Event diagram
Downloadable
1
ExistingDownloadableEvent
DomainEvent
EditDownloadableProductAttribute
newFilename : File
newExpiryDays : Natural
newMaximumDownloadCount : Natural
effect()
„
Effect
context EditDownloadableProductAttribute::effect()
post :
self.downloadable.filename = self.newFilename and
self.downloadable.expiryDays = self.newExpiryDays and
self.downloadable.maximumDownloadCount = self.newMaximumDonwloadCount
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
164
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
EditFlatRateShippingMethod
„
Event diagram
DomainEvent
ShippingMethodEvent
0..1
TaxClass
status : Status
SpecificZoneShippingMethodEvent
0..1
TaxZone
EditFlatRateShippingMethod
newCost : Money
effect()
„
Initial Integrity Constraints
context EditFlatRateShippingMethod::PaymentMethodIsInstalled():Boolean
body : FlatRate.allInstances() -> notEmpty()
„
Effect
context EditFlatRateShippingMethod::effect()
post :
let sm: FlatRate= FlatRate.allInstances() -> any(true) in
sm.cost=self.newCost and
sm.taxZone=self.taxZone and
sm.taxClass=self.taxClass and
sm.status = self.status
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
165
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
EditGlobalNotifications
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
EditGlobalNotifications
newGlobalNotifications : Boolean
effect()
„
Effect
context EditGlobalNotifications::effect()
post : self.customer.globalNotifications = self.newGlobalNotifications
Event
EditIPaymentPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
status : Status
EditIPaymentPaymentMethod
newAccount : Natural
newUser : String
newPassword : String
* Currency
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
166
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context EditIPaymentPaymentMethod::PaymentMethodIsInstalled():Boolean
body : IPayment.allInstances() -> notEmpty()
„
Effect
context EditIPaymentPaymentMethod::effect()
post :
let pm:IPayment = IPayment.allInstances() -> any(true) in
pm.account=self.newAccount and
pm.user=self.newUser and
pm.password=self.newPassword and
pm.status=self.status and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
Event
EditLanguage
„
Event diagram
Language
1
ExistingLanguageEvent
DomainEvent
EditLanguage
newName : String
newCode : String
0..1
newDefaultCurrency
Currency
effect()
„
Effect
context EditLanguage::effect()
post :
self.language.name = self.newName and
self.language.code = self.newCode and
self.language.defaultCurrency = self.newDefaultCurrency
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
167
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditManufacturer
„
Event diagram
Language
*
HasURL
Manufacturer
1
url
ManufacturerURLEvent
<<dataType>>
URL
1
ExistingManufacturerEvent
DomainEvent
EditManufacturer
name : String
imagePath : String [0..1]
effect()
„
Effect
context EditManufacturer::effect()
post :
self.manufacturer.name = self.name and
self.manufacturer.imagePath = self.imagePath and
Langauge.allInstances() ->
forAll(l|
self.hasURL->select(language=l).url=
self.manufacturer.manufacturerInLanguage->
select(language=l).url)
post :
self.manufacturer.lastModified = Now()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
168
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditNewsletter
„
Event diagram
Newsletter
1
ExistingNewsletter
DomainEvent
EditNewsletter
newTitle : String
newContent : String
effect()
„
Effect
context EditNewsletter::effect()
post :
newsletter.title = self.newTitle and
newsletter.content = self.newContent
Event
EditNochexPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
status:Status
EditNochexPaymentMethod
newEMail : EMail
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
169
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context EditNochexPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CheckMoney.allInstances() -> notEmpty()
„
Effect
context EditNochexPaymentMethod::effect()
post :
let pm: Nochex = Nochex.allInstances() -> any(true) in
pm.eMail=self.newEMail and
pm.status=self.status and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
Event
EditOrderStatus
„
Event diagram
OrderStatus
1
ExistingOrderStatusEvent
DomainEvent
EditOrderStatus
newName : String
effect()
„
Effect
context EditOrderStatus::effect()
post : self.orderStatus.name = self.newName
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
170
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditPayPalPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
status:Status
EditPayPalPaymentMethod
newEMail : EMail
* Currency
effect()
„
Initial Integrity Constraints
context EditPayPalPaymentMethod::PaymentMethodIsInstalled():Boolean
body : PayPal.allInstances() -> notEmpty()
„
Effect
context EditPayPalPaymentMethod::effect()
post :
let pm: PayPal = PayPal.allInstances() -> any(true) in
pm.eMail=self.newEMail and
pm.status=self.status and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
171
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditPerItemShippingMethod
„
Event diagram
HandlingFeeMethodEvent
DomainEvent
handlingFee : Money
ShippingMethodEvent
SpecificZoneShippingMethodEvent
EditPerItemShippingMethod
newCost : Money
effect()
„
Initial Integrity Constraints
context EditPerItemShippingMethod::PaymentMethodIsInstalled():Boolean
body : PerItem.allInstances() -> notEmpty()
„
Effect
context EditPerItemShippingMethod::effect()
post :
let sm: PerItem= PerItem.allInstances() -> any(true) in
sm.cost=self.newCost and
sm.handlingFee=self.handlingFee and
sm.taxZone=self.taxZone and
sm.taxClass=self.taxClass and
sm.status = self.status
PFCAlbert tort
0..1
TaxClass
status : Status
UNIVERSITAT POLITÈCNICA DE CATALUNYA
172
0..1
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditProduct
„
Event diagram
String
1
name
Product
Language
HasNewProductName
*
1
ProductNameEvent
DomainEvent
ExistingProductEvent
EditProduct
status : ProductStatus
available : DateTime [0..1]
netPrice : Money
quantityOnHand : Integer
model : String [0..1]
imagePath : String [0..1]
weight : Decimal
0..1
*
Category
0..1
TaxClass
effect()
„
Effect
context EditProduct::effect()
post :
self.product.status = self.status and
self.product.available = self.available and
self.product.netPrice = self.netPrice and
self.product.quantityOnHand = self.quantityOnHand and
self.product.model = self.model and
self.product.imagePath = self.imagePath and
self.product.weight = self.weight and
self.product.manufacturer = self.manufacturer and
self.product.category = self.category and
self.product.taxClass = self.taxClass and
Language.allInstances()
-> forAll (l|
self.hasNewProductName -> select(language=l).name =
self.product.productInLanguage->select(language=l).name)
post :
self.product.lastModified = Now()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
173
Manufacturer
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditProductNotification
„
Event diagram
DomainEvent
EditProductNotification
ProductNotification 1
*
newGlobal : Boolean
newExplicitNotifications
effect()
„
Effect
context EditProductNotification::effect()
post :
self.productNotification.global = self.newGlobal and
self.productNotification.explicitNotifications = self.newExplicitNotifications
Event
EditProductOption
„
Event diagram
String
1
name
Option
Language
*
HasNewOptionName
ProductOptionNameEvent
1
DomainEvent
EditProductOption
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
174
ExistingOptionEvent
Product
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context EditProductOption::effect()
post :
Language.allInstances() ->
forAll (l| self.hasNewOptionName -> select(language=l).name =
option.hasOptionName->select(language=l).optionName)
Event
EditProductOptionValue
„
Event diagram
String
1
name
Value
Language
*
HasNewValueName
ProductValueNameEvent
1
DomainEvent
ExistingValueEvent
EditProductOptionValue
1..*
effect()
„
Effect
context EditProductOptionValue::effect()
post :
Language.allInstances() ->
forAll (l| self.hasNewValueName -> select(language=l).name =
value.hasValueName->select(language=l).valueName) and
self.value.option = self.option
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
175
Option
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditPSiGatePaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
status :Status
EditPSiGatePaymentMethod
newMerchantID : String
newMode : PSiGateMode
newType : PSiGateType
newCreditCardCollection : PSiGateCollection
* Currency
effect()
„
Initial Integrity Constraints
context EditPSiGatePaymentMethod::PaymentMethodIsInstalled():Boolean
body : PSiGate.allInstances() -> notEmpty()
„
Effect
context EditPSiGatePaymentMethod::effect()
post :
let pm: PSiGate= PSiGate.allInstances() -> any(true) in
pm.merchantID=self.newMerchantID and
pm.mode=self.newMode and
pm.type=self.newType and
pm.creditCardCollection=self.newCreditCardCollection and
pm.status=self.enabled and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
176
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditReview
„
Event diagram
Review
1
ExistingReviewEvent
DomainEvent
EditReview
newReview : String
newRating : Rating
1
newLanguage
effect()
„
Language
1
newProduct
Product
1
newCustomer
Customer
Effect
context EditReview::effect()
post :
self.review.review = self.newReview and
self.review.rating = self.newRating and
self.review.language = self.newLanguage and
self.review.product = self.newProduct and
self.review.customer = self.newCustomer
post :
self.review.lastModified = Now()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
177
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditSECPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
status : Status
EditSECPaymentMethod
newMerchantID : String
newMode : SECPayMode
* Currency
effect()
„
Initial Integrity Constraints
context EditSECPaymentMethod::PaymentMethodIsInstalled():Boolean
body : SECPay.allInstances() -> notEmpty()
„
Effect
context EditSECPaymentMethod::effect()
post :
let pm: SECPay= SECPay.allInstances() -> any(true) in
pm.merchantID=self.newMerchantID and
pm.mode=self.newMode and
pm.status=self.status and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
178
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditSpecial
„
Event diagram
Special
1
ExistingSpecialEvent
DomainEvent
EditSpecial
newSpecialPrice : Money
newExpiryDate : DateTime [0..1]
newStatus : SpecialStatus
effect()
„
Effect
context EditSpecial::effect()
post :
self.special.specialPrice = self.newSpecialPrice and
self.special.expiryDate = self.newExpiryDate and
self.special.status = self.newStatus
post :
self.special.lastModified = Now()
post :
self.special@pre.status <> self.newStatus implies
self.special.dateStatusChanged = Now()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
179
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditTableRateShippingMethod
„
Event diagram
HandlingFeeMethodEvent
DomainEvent
handlingFee : Money
ShippingMethodEvent
EditTableRateShippingMethod
newItems : ShippingTableItem [*]
newMethod : ShippingTableMethod
effect()
Initial Integrity Constraints
context EditTableRateShippingMethod::PaymentMethodIsInstalled():Boolean
body : TableRate.allInstances() -> notEmpty()
„
Effect
context EditTableRateShippingMethod::effect()
post :
let sm: TableRate= TableRate.allInstances() -> any(true) in
sm.items=self.newItems and
sm.method=self.newMethod and
sm.handlingFee=self.handlingFee and
sm.taxZone=self.taxZone and
sm.taxClass=self.taxClass and
sm.status = self.status
PFCAlbert tort
TaxClass
status : Status
SpecificZoneShippingMethodEvent
„
0..1
UNIVERSITAT POLITÈCNICA DE CATALUNYA
180
0..1
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditTaxClass
„
Event diagram
TaxClass
1
ExistingTaxClassEvent
DomainEvent
EditTaxClass
newName : String
newDescription : String [0..1]
effect()
„
Effect
context EditTaxClass::effect()
post :
self.taxClass.name = self.newName and
self.taxClass.description = self.newDescription
Event
EditTaxRate
„
Event diagram
TaxRate
1
ExistingTaxRateEvent
DomainEvent
EditTaxRate
TaxClass
1
newTaxClass
newRate : Natural
newPriority : Natural
newDescription : String [0..1]
1
newTaxZone
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
181
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context EditTaxRate::effect()
post :
self.taxRate.rate = self.newRate and
self.taxRate.priority = self.newPriority and
self.taxRate.description = self.newDescription and
self.taxRate.taxClass = self.newTaxClass and
self.taxRate.taxZone = self.newTaxZone
Event
EditTaxZone
„
Event diagram
TaxZone
0..1
ExistingTaxZoneEvent
DomainEvent
EditTaxZone
newName : String
newDescription : String [0..1]
*
newZones
effect()
„
Effect
context EditTaxZone::effect()
post :
self.taxZone.name = self.newName and
self.taxZone.description = self.newDescription and
self.taxZone.zone = self.newZones
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
182
Zone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditTwoCheckOutPaymentMethod
„
Event diagram
DomainEvent
OrderStatus
0..1
EditPaymentMethodEvent
0..1
TaxZone
statuts:Status
EditTwoCheckOutPaymentMethod
newLogin : String
newMode : TransactionMode
newMerchantNotification : Boolean
effect()
context EditTwoCheckOutPaymentMethod::PaymentMethodIsInstalled()
body : TwoCheckOut.allInstances() -> notEmpty()
context EditTwoCheckOutPaymentMethod::effect()
post :
let pm: TwoCheckOut = TwoCheckOut.allInstances() -> any(true)
in
pm.login=self.newLogin and
pm.model=self.newMode and
pm.merchantNotification=self.newMerchantNotification and
pm.status=self.status and
pm.orderStatus=self.orderStatus and
pm.taxZone=self.taxZone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
183
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditUSPostalServiceShippingMethod
„
Event diagram
HandlingFeeMethodEvent
DomainEvent
handlingFee : Money
ShippingMethodEvent
0..1
SpecificZoneShippingMethodEvent
0..1
EditUSPostalServiceShippingMethod
newUserID : String
newPassword : String
newServer : USPSServer
effect()
„
Initial Integrity Constraints
context EditUSPostalServiceShippingMethod::PaymentMethodIsInstalled():Boolean
body : USPostalService.allInstances() -> notEmpty()
„
Effect
context EditUSPostalServiceShippingMethod::effect()
post :
let sm: USPostalService= USPostalService.allInstances() -> any(true) in
sm.userID=self.newUserID and
sm.password=self.newPassword and
sm.server=self.newServer and
sm.handlingFee=self.handlingFee and
sm.taxZone=self.taxZone and
sm.taxClass=self.taxClass and
sm.status = self.status
PFCAlbert tort
TaxClass
status : Status
UNIVERSITAT POLITÈCNICA DE CATALUNYA
184
TaxZone
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EditZone
„
Event diagram
Zone
1
ExistingZoneEvent
DomainEvent
EditZone
newName : String
newCode : String
effect()
„
Effect
context EditZone::effect()
post :
self.zone.name = self.newName and
self.zone.code = self.newCode
Event
EditZoneRatesShippingMethod
„
Event diagram
DomainEvent
ShippingMethodEvent
0..1
TaxClass
*
Country
status : Status
EditZoneRatesShippingMethod
newItems : ShippingTableItem [*]
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
185
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context EditZoneRatesShippingMethod::PaymentMethodIsInstalled():Boolean
body : ZoneRates.allInstances() -> notEmpty()
„
Effect
context EditZoneRatesShippingMethod::effect()
post :
let sm:ZoneRates= ZoneRates.allInstances() -> any(true) in
sm.items=self.newItems and
sm.country=self.country and
sm.taxClass=self.taxClass and
sm.status=self.status
Event
EMailAddressChange
„
Event diagram
DomainEvent
StoreEvent
1
/myStore
EMailAddressChange
newEmailAddress : EMail [0..1]
effect()
„
Effect
context EMailAddressChange::effect()
post : myStore.eMailAddress = self.newEmailAddress
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
186
Store
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EMailAddressMinimumChange
„
Event diagram
DomainEvent
EMailAddressMinimumChange
newMinimum : Natural
effect()
„
Effect
context EMailAddressMinimumChange::effect()
post : MinimumValues.eMailAddress = self.newMinimum
Event
EMailFromChange
„
Event diagram
DomainEvent
StoreEvent
1
/myStore
EMailFromChange
newEmailFrom : EMail [0..1]
effect()
„
Effect
context EMailFromChange::effect()
post : myStore.eMailFrom = self.newEmailFrom
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
187
Store
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
EnableDownloadConfigurationChange
„
Event diagram
DomainEvent
EnableDownloadConfigurationChange
newValue : Boolean
effect()
„
Effect
context EnableDownloadConfigurationChange::effect()
post : Download.enableDownload= self.newValue
Event
ExpectedSortFieldChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
ExpectedSortFieldChange
newExpectedSortField : SortField
effect()
„
Effect
context ExpectedSortFieldChange::effect()
post : myStore.expectedSortField = self.newExpectedSortField
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
188
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ExpectedSortOrderChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
ExpectedSortOrderChange
newExpectedSortOrder : SortOrder
effect()
„
Effect
context ExpectedSortOrderChange::effect()
post : myStore.expectedSortOrder = self.newExpectedSortOrder
Event
FirstNameMinimumChange
„
Event diagram
DomainEvent
FirstNameMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context FirstNameMinimumChange::effect()
post : MinimumValues.firstName = self.newMinimum
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
189
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
GenderCustomerDetailChange
„
Event diagram
DomainEvent
GenderCustomerDetailChange
newValue : Boolean
effect()
„
Effect
context GenderCustomerDetailChange::effect()
post : CustomerDetails.gender = self.newValue
Event
IncrementAndSignAttributeChange
„
Event diagram
ProductAttribute
1
ExistingProductAttributeEvent
DomainEvent
IncrementAndSignAttributeChange
newIncrement : Money
newSign : Sign
effect()
„
Effect
context IncrementAndSignAttributeChange::effect()
post : self.productAttribute.increment = self.newIncrement and
self.productAttribute.sign = self.newSign
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
190
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
InstallAuthorizeNetPaymentMethod
„
Event diagram
DomainEvent
InstallAuthorizeNetPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallAuthorizeNetPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : AuthorizeNet.allInstances() -> isEmpty()
„
Effect
context InstallAuthorizeNetPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(AuthorizeNet)
Event
InstallCashOnDeliveryPaymentMethod
„
Event diagram
DomainEvent
InstallCashOnDeliveryPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallCashOnDeliveryPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : CashOnDelivery.allInstances() -> isEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
191
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context InstallCashOnDeliveryPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(CashOnDelivery)
Event
InstallCheckMoneyPaymentMethod
„
Event diagram
DomainEvent
InstallCheckMoneyPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallCheckMoneyPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : CheckMoney.allInstances() -> isEmpty()
„
Effect
context InstallCheckMoneyPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(CheckMoney)
Event
InstallCreditCardPaymentMethod
„
Event diagram
DomainEvent
InstallCreditCardPaymentMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
192
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context InstallCreditCardPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : CreditCard.allInstances() -> isEmpty()
„
Effect
context InstallCreditCardPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(CreditCard)
Event
InstallFlatRateShippingMethod
„
Event diagram
DomainEvent
InstallFlatRateShippingMethod
effect()
„
Initial Integrity Constraints
context InstallFlatRateShippingMethod::ShippingMethodIsNotInstalled():Boolean
body : FlatRate.allInstances() -> isEmpty()
„
Effect
context InstallFlatRateShippingMethod::effect()
post : sm.oclIsNew() and sm.oclIsTypeOf(FlatRate)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
193
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
InstallIPaymentPaymentMethod
„
Event diagram
DomainEvent
InstallIPaymentPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallIPaymentPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : IPayment.allInstances() -> isEmpty()
„
Effect
context InstallIPaymentPaymentMethod::PaymentMethodIsNotInstalled()
post : sm.oclIsNew() and sm.oclIsTypeOf(IPayment)
Event
InstallNochexPaymentMethod
„
Event diagram
DomainEvent
InstallNochexPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallNochexPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : Nochex.allInstances() -> isEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
194
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context InstallNochexPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(Nochex)
Event
InstallPayPalPaymentMethod
„
Event diagram
DomainEvent
InstallPayPalPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallPayPalPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : PayPal.allInstances() -> isEmpty()
„
Effect
context InstallPayPalPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(PayPal)
Event
InstallPerItemShippingMethod
„
Event diagram
DomainEvent
InstallPerItemShippingMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
195
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context InstallPerItemShippingMethod::ShippingMethodIsNotInstalled():Boolean
body : PerItem.allInstances() -> isEmpty()
„
Effect
context InstallPerItemShippingMethod::effect()
post : sm.oclIsNew() and sm.oclIsTypeOf(PerItem)
Event
InstallPSiGatePaymentMethod
„
Event diagram
DomainEvent
InstallPSiGatePaymentMethod
effect()
„
Initial Integrity Constraints
context InstallPSiGatePaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : PSiGate.allInstances() -> isEmpty()
„
Effect
context InstallPSiGatePaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(PSiGate)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
196
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
InstallSECPaymentMethod
„
Event diagram
DomainEvent
InstallSECPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallSECPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : SECPay.allInstances() -> isEmpty()
„
Effect
context InstallSECPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(SECPay)
Event
InstallTableRateShippingMethod
„
Event diagram
DomainEvent
InstallTableRateShippingMethod
effect()
„
Initial Integrity Constraints
context InstallTableRateShippingMethod::ShippingMethodIsNotInstalled():Boolean
body : TableRate.allInstances() -> isEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
197
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context InstallTableRateShippingMethod::effect()
post : sm.oclIsNew() and sm.oclIsTypeOf(TableRate)
Event
InstallTwoCheckOutPaymentMethod
„
Event diagram
DomainEvent
InstallTwoCheckOutPaymentMethod
effect()
„
Initial Integrity Constraints
context InstallTwoCheckOutPaymentMethod::PaymentMethodIsNotInstalled():Boolean
body : TwoCheckOut.allInstances() -> isEmpty()
„
Effect
context InstallTwoCheckOutPaymentMethod::effect()
post : pm.oclIsNew() and pm.oclIsTypeOf(TwoCheckOut)
Event
InstallUSPostalServiceShippingMethod
„
Event diagram
DomainEvent
InstallUSPostalServiceShippingMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
198
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context InstallUSPostalServiceShippingMethod::ShippingMethodIsNotInstalled():Boolean
body : USPostalService.allInstances() -> isEmpty()
„
Effect
context InstallUSPostalServiceShippingMethod::effect()
post : sm.oclIsNew() and sm.oclIsTypeOf(USPostalService)
Event
InstallZoneRatesShippingMethod
„
Event diagram
DomainEvent
InstallZoneRatesShippingMethod
effect()
„
Initial Integrity Constraints
context InstallZoneRatesShippingMethod::ShippingMethodIsNotInstalled():Boolean
body : ZoneRates.allInstances() -> isEmpty()
„
Effect
context InstallZoneRatesShippingMethod::effect()
post : sm.oclIsNew() and sm.oclIsTypeOf(ZoneRates)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
199
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
LastNameMinimumChange
„
Event diagram
DomainEvent
LastNameMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context LastNameMinimumChange::effect()
post : MinimumValues.lastName = self.newMinimum
Event
LinkProduct
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
LinkProduct
effect()
„
1
newCategory
Category
Effect
context LinkProduct::effect()
post: self.product.category -> includes(self.newCategory)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
200
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
LockNewsletter
„
Event diagram
Newsletter
1
ExistingNewsletter
DomainEvent
LockNewsletter
effect()
„
Effect
context LockNewsletter::effect()
post : self.newsletter.status = NewsletterStatus::locked
Event
LogIn
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
LogIn
1
Session
effect()
„
Initial Integrity Constraints
context LogIn::CustomerIsNotLoggedIn (): Boolean
body : self.customer.session -> isEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
201
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context LogIn::effect()
post :
self.session.customer = self.customer
post :
self.customer.lastLogon = Now() and
self.customer.numberOfLogons = self.customer.numberOfLogons@pre + 1
Event
LogOut
„
Event diagram
Session
Customer
1
ExistingSessionEvent
1
DomainEvent
ExistingCustomerEvent
Logout
effect()
„
Initial Integrity Constraints
context LogIn::CustomerIstLoggedIn (): Boolean
body : self.session.customer = self.customer
„
Effect
context LogOut::effect()
post : self.session.customer -> isEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
202
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NameChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
NameChange
newName : String [0..1]
effect()
„
Effect
context NameChange::effect()
post : self.myStore.name = self.newName
Event
MaximumNumberDownloadConfigurationChange
„
Event diagram
DomainEvent
MaximumNumberDownloadConfigurationChange
newMaximum : Natural
effect()
„
Effect
context MaximumNumberDownloadConfigurationChange::effect()
post : Download.maximumNumberOfDownloads= self.newMaximum
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
203
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
MaximumPackageWeightShippingConfigurationChange
„
Event diagram
DomainEvent
MaximumPackageWeightShippingConfigurationChange
newMaximum : Natural
effect()
„
Effect
context MaximumPackageWeightShippingConfigurationChange::effect()
post : ShippingAndPackaging.maximumPackageWeight = self.newMaximum
Event
MoveCategory
„
Event diagram
Category
1
ExistingCategoryEvent
DomainEvent
MoveCategory
effect()
„
0..1
Category
newParent
Effect
context MoveCategory::effect()
post : self.category.parent = self.newParent
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
204
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
MoveProduct
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
MoveProduct
effect()
1
oldCategory
Category
1
newCategory
„
Effect
context MoveProduct::effect()
post: self.product.category -> includes(self.newCategory) and
self.product.category -> excludes(self.oldCategory)
Event
NewBanner
„
Event diagram
DomainEvent
NewBanner
title : String
url : URL [0..1]
imagePath : String
html : HtmlText [0..1]
expires : Date [0..1]
scheduled : Date [0..1]
„
Initial Integrity Constraints
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
205
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
context NewBanner::bannerDoesNotExist(): Boolean
body : not Banner.allInstances() ->exists (b | b.title= self.title)
„
Effect
context NewBanner::effect()
post :
b.oclIsNew() and
b.oclIsTypeOf(Banner) and
b.title = self.title and
b.url = self.url and
b.imagePath = self.imagePath and
b.html = self.html and
b.expires = self.expires and
b.scheduled = self.scheduled and
b.status = BannerStatus::enabled
Event
NewBannerGroup
„
Event diagram
DomainEvent
NewBannerGroup
name : String
effect()
„
Initial Integrity Constraints
context NewBannerGroup::bannerGroupDoesNotExist(): Boolean
body : not BannerGroup.allInstances() ->exists (bg | bg.name= self.name)
„
Effect
context NewBannerGroup::effect()
post :
bg.oclIsNew() and
bg.oclIsTypeOf(BannerGroup) and
bg.name = self.name
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
206
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewCategory
„
Event diagram
String
1
Language
name
HasNewName
*
CategoryNameEvent
DomainEvent
NewCategory
Category
„
0..1
parent
imagePath : String [0..1]
sortOrder : Natural
effect()
Initial Integrity Constraints
context NewCategory::categoryDoesNotExist(): Boolean
body :
Language.allInstances() -> forAll ( l |
l.hasCategoryName.categoryName ->
excludes(self.hasNewName->select(language=l).name))
„
Effect
context NewCategory::effect()
post :
c.oclIsNew() and
c.oclIsTypeOf(Category) and
c.imagePath = self.imagePath and
c.sortOrder = self.sortOrder and
c.parent = self.parent and
Language.allInstances() ->
forAll (l| self.hasNewName -> select(language=l).name =
c.hasCategoryName->select(language=l).categoryName)
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
207
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewCountry
„
Event diagram
DomainEvent
NewCountry
name : String
isoCode2 : String
isoCode3 : String
effect()
„
Initial Integrity Constraints
context NewCountry::countryDoesNotExist(): Boolean
body :
not Country.allInstances() -> exists(c | c.name=self.name and
c.isoCode2=self.isoCode2 and
c.isoCode3=self.isoCode3)
„
Effect
context NewCountry::effect()
post :
c.oclIsNew() and
c.oclIsTypeOf(Country) and
c.name = self.name and
c.isoCode2 = self.isoCode2 and
c.isoCode3 = self.isoCode3
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
208
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewCurrency
„
Event diagram
DomainEvent
NewCurrency
title : String
code : String
symbolLeft : String [0..1]
symbolRight : String [0..1]
decimalPlaces : Natural
value : Decimal
effect()
„
Initial Integrity Constraints
context NewCurrency::currencyDoesNotExist(): Boolean
body :
not Currency.allInstances() -> exists(c | c.title=self.title and
c.code=self.code)
„
Effect
context NewCurrency::effect()
post :
c.oclIsNew() and
c.oclIsTypeOf(Currency) and
c.title = self.title and
c.code = self.code and
c.symbolLeft = self.symbolLeft and
c.symbolRight = self.symbolRight and
c.decimalPlaces = self.decimalPlaces and
c.value = self.value
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
209
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewCustomer
„
Event diagram
DomainEvent
NewCustomer
eMailAddress : EMail
dateOfBirth : Date [0..1]
phone : String
fax : String [0..1]
primary : Address
newsletter : Boolean
password : String
passwordConfirmation : String
effect()
„
Initial Integrity Constraints
context NewCustomer::customerDoesNotExist(): Boolean
body : not Customer.allInstances() -> exists (c | c.eMailAddress = self.eMailAddress)
context NewCustomer::passwordCorrect(): Boolean
body : password = passwordConfirmation
context NewCustomer::firstNameRight(): Boolean
body : self.primary.firstName.size() >= MinimumValues.firstName
context NewCustomer::lastNameRight(): Boolean
body : self.primary.lastName.size() >= MinimumValues.lastName
context NewCustomer::dateOfBirthRight(): Boolean
body :
CustomerDetails.dateOfBirth implies
self.dateOfBirth -> notEmpty() and
self.dateOfBirth.size() >= MinimumValues.dateOfBirth
context NewCustomer::genderRight(): Boolean
body : CustomerDetails.gender implies self.gender->notEmpty()
context NewCustomer::suburbRight(): Boolean
body : CustomerDetails.suburb implies self.suburb->notEmpty()
context NewCustomer::eMailRight(): Boolean
body : self.eMailAddress.size() >= MinimumValues.eMailAddress
context NewCustomer::streetAddressRight(): Boolean
body : self.primary.street.size() >= MinimumValues.streetAddress
context NewCustomer::companyRight(): Boolean
body :
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
210
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
CustomerDetails.company implies
self.primary.company -> notEmpty() and
self.primary.company.size() >= MinimumValues.companyName
context NewCustomer::postCodeRight(): Boolean
body : self.primary.postCode.size() >= MinimumValues.postCode
context NewCustomer::cityRight(): Boolean
body : self.primary.city.size() >= MinimumValues.city
context NewCustomer::stateRight(): Boolean
body :
CustomerDetails.state implies
self.primary.state -> notEmpty() and
self.primary.state.size() >= MinimumValues.state
context NewCustomer::telephoneRight(): Boolean
body : self.telephone.size() >= MinimumValues.telephoneNumber
context NewCustomer::passwordRight(): Boolean
body : self.password.size() >= MinimumValues.password
„
Effect
context NewCustomer::effect()
post :
c.oclIsNew() and
c.oclIsTypeOf(Customer) and
c.gender = self.primary.gender and
c.firstName = self.primary.firstName and
c.lastName = self.primary.lastName and
c.dateOfBirth = self.dateOfBirth and
c.eMailAddress = self.eMailAddress and
c.phone = self.phone and
c.fax = self.fax and
c.newsletter = self.newsletter and
c.password = self.password and
c.numberOfLogons = 0 and
c.address = Set{primary} and
c.primary = primary
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
211
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewCustomerAddress
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
NewCustomerAddress
0..1
gender : Gender [0..1]
firstName : String
lastName : String
company : String [0..1]
street : String
suburb : String
postCode : PostalCode
city : String
state : String [0..1]
Zone
*
1
1
Country
effect()
„
Initial Integrity Constraints
context NewCustomerAddress::firstNameRight(): Boolean
body : self.primary.firstName.size() >= MinimumValues.firstName
context NewCustomerAddress::lastNameRight(): Boolean
body : self.primary.lastName.size() >= MinimumValues.lastName
context NewCustomerAddress::genderRight(): Boolean
body : CustomerDetails.gender implies self.gender->notEmpty()
context NewCustomerAddress::suburbRight(): Boolean
body : CustomerDetails.suburb implies self.suburb->notEmpty()
context NewCustomerAddress::streetAddressRight(): Boolean
body : self.primary.street.size() >= MinimumValues.streetAddress
context NewCustomerAddress::companyRight(): Boolean
body :
CustomerDetails.company implies
self.primary.company -> notEmpty() and
self.primary.company.size() >= MinimumValues.companyName
context NewCustomerAddress::postCodeRight(): Boolean
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
212
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
body : self.primary.postCode.size() >= MinimumValues.postCode
context NewCustomerAddress::cityRight(): Boolean
body : self.primary.city.size() >= MinimumValues.city
context NewCustomerAddress::stateRight(): Boolean
body :
CustomerDetails.state implies
self.primary.state -> notEmpty() and
self.primary.state.size() >= MinimumValues.state
context NewCustomerAddress::addressesHaveZoneIfNeeded(): Boolean
body :
self.zone -> notEmpty() implies
self.state = self.zone.name and
self.country = self.zone.country
context NewCustomerAddress::numberOfAddressesRight(): Boolean
body : self.customer.address -> size() < MaximumValues.addressBookEntries
„
Effect
context NewCustomerAddress::effect()
post :
Address.allInstances() ->exists (a |
a.gender = self.gender and
a.firstName = self.firstName and
a.lastName = self.lastName and
a.company = self.company and
a.street = self.street and
a.suburb = self.suburb and
a.postCode = self.postCode and
a.city = self.city and
a.state = self.state and
a.zone = self.zone and
a.country = self.country and
self.customer.address -> includes(a))
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
213
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewDownloadableProductAttribute
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
NewProductAttribute
increment : Money
sign : Sign
filename : File
expiryDays : Natural [0..1]
maximumDownloadCount : Natural [0..1]
1
Option
1
Value
effect()
„
Initial Integrity Constraints
context NewDownloadableProductAttribute::productAttributeDoesNotExist(): Boolean
body :
not ProductAttribute.allInstances() -> exists (pa | pa.attribute.option = self.option and
pa.attribute.value = self.value and
pa.product = self.product)
„
Effect
context NewDownloadableProductAttribute::effect()
post :
dpa.oclIsNew() and
dpa.oclIsTypeOf(Downloadable) and
dpa.increment = self.increment and
dpa.sign = self.sign and
dpa.filename = self.filename and
dpa.product = self.product and
dpa.attribute.option=self.option and
dpa.attribute.value=self.value and
if self.expiryDays.notEmpty() then dpa.expiryDays = self.expiryDays
else self.expiryDays = Download.daysExpiryDelay
endif
and
if self.maximumDownloadCount .notEmpty() then
dpa.maximumDownloadCount = self.maximumDownloadCount
else self.maximumDownloadCount = Download.maximumNumberOfDownload
endif
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
214
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewLanguage
„
Event diagram
DomainEvent
NewLanguage
name : String
code : String
0..1
defaultCurrency
Currency
effect()
„
Initial Integrity Constraints
context NewLanguage::languageDoesNotExist(): Boolean
body :
not Language.allInstances() -> exists (l | l.name=self.name and
l.code = self.code)
„
Effect
context NewLanguage::effect()
post :
l.oclIsNew() and
l.oclIsTypeOf(Language) and
l.name = self.name and
l.code = self.code and
l.defaultCurrency = self.defaultCurrency
Event
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
215
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
NewManufacturer
„
Event diagram
Language
*
HasURL
1
url
ManufacturerURLEvent
<<dataType>>
URL
DomainEvent
NewManufacturer
name : String
imagePath : String [0..1]
effect()
„
Initial Integrity Constraints
context NewManufacturer::manufacturerDoesNotExist(): Boolean
body :
not Manufacturer.allInstances() -> exists (m | m.name=self.name)
„
Effect
context NewManufacturer::effect()
post :
m.oclIsNew() and
m.oclIsTypeOf(Manufacturer) and
m.name = self.name and
m.imagePath = self.imagePath and
Language.allInstances() ->
forAll (l|
self.hasURL -> select(language=l).url =
m.manufacturerInLanguage->select(language=l).url)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
216
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NewNewsletter
„
Event diagram
DomainEvent
NewNewsletter
title : String
content : String
effect()
„
Initial Integrity Constraints
context NewNewsletter::newsletterDoesNotExist(): Boolean
body : not Newsletter.allInstances() -> exists (n | n.title=self.title)
„
Effect
context NewNewsletter::effect()
post :
n.oclIsNew() and
n.oclIsTypeOf(Newsletter) and
n.title = self.title and
n.content = self.content and
n.status = NewsletterStatus::unlocked
Event
NewOrderStatus
„
Event diagram
DomainEvent
NewOrderStatus
name : String
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
217
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context NewOrderStatus::orderStatusDoesNotExist(): Boolean
body :
not OrderStatus.allInstances() -> exists (os | os.name=self.name)
„
Effect
context NewOrderStatus::effect()
post :
os.oclIsNew() and
os.oclIsTypeOf(OrderStatus) and
os.name = self.name
Event
NewProduct
„
Event diagram
String
1
Language
name
HasNewProductName
*
ProductNameEvent
DomainEvent
NewProduct
„
status : ProductStatus
available : DateTime [0..1]
netPrice : Money
quantityOnHand : Integer
model : String [0..1]
imagePath : String [0..1]
weight : Decimal
0..1
Manufacturer
0..1
Category
effect()
0..1
TaxClass
Initial Integrity Constraints
context NewProduct::productDoesNotExist(): Boolean
body :
Language.allInstances() -> forAll ( l |
l.productInLanguage.name
-> excludes( self.hasNewProductName -> select(language=l).name))
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
218
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context NewProduct::effect()
post :
p.oclIsNew() and
p.oclIsTypeOf(Product) and
p.status = self.status and
p.available = self.available and
p.netPrice = self.netPrice and
p.quantityOnHand = self.quantityOnHand and
p.model = self.model and
p.imagePath = self.imagePath and
p.weight = self.weight and
p.category = Set{self.category} and
p.manufacturer = self.manufacturer and
p.taxClass = self.taxClass and
Language.allInstances() ->
forAll (l|
self.hasNewProductName -> select(language=l).name =
p.productInLanguage->select(language=l).name)
Event
NewProductAttribute
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
NewProductAttribute
1
Option
1
Value
increment : Money
sign : Sign
effect()
„
Initial Integrity Constraints
context NewProductAttribute::productAttributeDoesNotExist(): Boolean
body :
not self.product.productAttribute ->
exists(attribute.value=self.value and
attribute.option = self.option)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
219
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
context NewProductAttribute::optionValueIsValid(): Boolean
body : self.option.value -> includes(self.value)
„
Effect
context NewProductAttribute::effect()
post :
pa.oclIsNew() and
pa.oclIsTypeOf(ProductAttribute) and
pa.increment = self.increment and
pa.sign = self.sign and
pa.product = self.product and
pa.attribute.option = self.option and
pa.attribute.value = self.value
Event
NewProductNotification
„
Event diagram
DomainEvent
NewProductNotification
title : String
content : String
global : Boolean
*
explicitNotifications
Product
effect()
„
Initial Integrity Constraints
context NewProductNotification::ProductNotificationDoesNotExist(): Boolean
body : not Newsletter.allInstances() -> exists (n | n.title = self.title)
„
Effect
context NewProductNotification::effect()
post :
n.oclIsNew() and
n.oclIsTypeOf(ProductNotification) and
n.title = self.title and
n.content = self.content and
n.global = self.global and
n.explicitNotifications = self.explicitNotifications and
n.status = self.NewsletterStatus::unlocked
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
220
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NewProductNotificationSubscription
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
NewProductNotificationSubscription
effect()
„
1
Product
newSubscribedProduct
Initial Integrity Constraints
context NewProductNotificationSubscription::ProductIsUnsubscribed(): Boolean
body :
not self.customer.globalNotifications and
self.customer.explicitNotifications -> excludes(self.newSubscribedProduct)
„
Effect
context NewProductNotificationSubscription::effect()
post : self.customer.explicitNotifications -> includes(self.newSubscribedProduct)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
221
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NewProductOption
„
Event diagram
String
1
Language
*
name
HasNewOptionName
ProductOptionNameEvent
DomainEvent
NewProductOption
effect()
„
Initial Integrity Constraints
context NewProductOption::productOptionDoesNotExist(): Boolean
body :
Language.allInstances() -> forAll ( l |
l.hasOptionName.optionName
-> excludes(self.hasNewOptionName -> select(language=l).name))
„
Effect
context NewProductOption::effect()
post :
po.oclIsNew() and
po.oclIsTypeOf(Option) and
Language.allInstances() ->
forAll (l| self.hasNewOptionName -> select(language=l).name =
po.hasOptionName->select(optionLanguage=l).optionName)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
222
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NewProductOptionValue
„
Event diagram
String
1
Language
*
name
HasNewValueName
ProductValueNameEvent
DomainEvent
NewProductOptionValue
1..*
effect()
„
Option
Initial Integrity Constraints
context NewProductOptionValue::optionValueDoesNotExist(): Boolean
body :
Language.allInstances() -> forAll ( l |
l.hasValueName.valueName
-> excludes(self.hasNewValueName -> select(Language=l).name))
„
Effect
context NewProductOptionValue::effect()
post :
pov.oclIsNew() and
pov.oclIsTypeOf(Value) and
Language.allInstances() ->
forAll (l| self.hasNewValueName -> select(language=l).name =
pov.hasValueName->select(valueLanguage=l).valueName) and
pov.option = self.option
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
223
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NewReview
„
Event diagram
DomainEvent
NewReview
Language
1
review : String
rating : Rating
effect()
„
Effect
context NewReview::effect()
post :
r.oclIsNew() and
r.oclIsTypeOf(Review) and
r.review = self.review and
r.rating = self.rating and
r.customer = self.customer and
r.product = self.product and
r.language = self.language
Event
NewSession
„
Customer
1
Product
Initial Integrity Constraints
context NewReview::reviewRight(): Boolean
body : self.review.size() >= MinimumValues.reviewText
„
1
Event diagram
DomainEvent
NewSession
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
224
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context NewSession::effect()
post :
s.oclIsNew() and
s.oclIsTypeOf(Session)
Event
NewSpecial
„
Event diagram
DomainEvent
NewSpecial
specialPrice : Money
expiryDate : DateTime [0..1]
status : SpecialStatus
1
Product
effect()
„
Effect
context NewSpecial::effect()
post :
self.product.oclIsTypeOf(Special) and
self.product.oclAsTypeOf(Special).specialPrice=self.specialPrice and
self.product.oclAsTypeOf(Special).expiryDate=self.expiryDate and
self.product.oclAsTypeOf(Special).status=self.status
Event
NewTaxClass
„
Event diagram
DomainEvent
NewTaxClass
name : String
description : String [0..1]
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
225
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context NewTaxClass::TaxClassDoesNotExist(): Boolean
body : not TaxClass.allInstances() -> exists (tc | tc.name = self.name)
„
Effect
context NewTaxClass::effect()
post :
tc.oclIsNew() and
tc.oclIsTypeOf(TaxClass) and
tc.name = self.name and
tc.description = self.description
Event
NewTaxRate
„
Event diagram
DomainEvent
NewTaxRate
TaxClass
1
rate : Natural
priority : Natural
description : String [0..1]
1
TaxZone
effect()
„
Initial Integrity Constraints
context NewTaxRate::TaxRateDoesNotExist(): Boolean
body :
not TaxRate.allInstances() -> exists (tr | tr.taxClass = self.taxClass and
tr.taxZone = self.taxZone)
„
Effect
context NewTaxRate::effect()
post :
tr.oclIsNew() and
tr.oclIsTypeOf(TaxRate) and
tr.rate = self.rate and
tr.priority = self.priority and
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
226
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
tr.description = self.description and
tr.taxClass = self.taxClass and
tr.taxZone = self.taxZone
Event
NewTaxZone
„
Event diagram
DomainEvent
NewTaxZone
name : String
description : String [0..1]
*
Zone
effect()
„
Initial Integrity Constraints
context NewTaxZone::TaxZoneDoesNotExist(): Boolean
body : not TaxZone.allInstances() -> exists (tz | tz.name = self.name)
„
Effect
context NewTaxZone::effect()
post :
tz.oclIsNew() and
tz.oclIsTypeOf(TaxZone) and
tz.name = self.name and
tz.description = self.description and
tz.zone = self.zone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
227
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
NewZone
„
Event diagram
DomainEvent
NewZone
name : String
code : String
1
Country
effect()
„
Initial Integrity Constraints
context NewZone::ZoneDoesNotExist(): Boolean
body :
not Zone.allInstances() -> exists (z | z.name = self.name and z.country = self.country or
z.code = self.code and z.country = self.country)
„
Effect
context NewZone::effect()
post :
z.oclIsNew() and
z.oclIsTypeOf(Zone) and
z.name = self.name and
z.code = self.code and
z.country = self.country
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
228
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
OrderConfirmation
„
Event diagram
DomainEvent
OrderConfirmation
delivery : Address
billing : Address
creditCardType : String [0..1]
creditCardOwner : String [0..1]
creditCardNumber : String [0..1]
creditCardExpires : Date [0..1]
comments : String [0..1]
1 CustomerShoppingCart
shoppingCart
1
ShippingMethod
1
PaymentMethod
1
Currency
effect()
„
Initial Integrity Constraints
context OrderConfirmation::ShippingMethodIsEnabled(): Boolean
body : self.shippingMethod.status= Status::enabled
context OrderConfirmation::PaymentMethodIsEnabled(): Boolean
body : self.paymentMethod.status= Status::enabled
context OrderConfirmation::CurrencyIsEnabled(): Boolean
body : self.currency.status = Status::enabled
context OrderConfirmation::CreditCardDetailsNeeded(): Boolean
body :
self.paymentMethod.oclIsTypeOf(AuthorizeNet) or
self.paymentMethod.oclIsTypeOf(CreditCard) or
self.paymentMethod.oclIsTypeOf(IPayment) or
self.paymentMethod.oclIsTypeOf(TwoCheckOut) or
self.paymentMethod.oclIsTypeOf(PSiGate)
implies
creditCardType.notEmpty() and
creditCardOwner.notEmpty() and
creditCardNumber.notEmpty() and
creditCardExpires.notEmpty()
context OrderConfirmation::StockAllowsOrder(): Boolean
body :
Stock.allowCheckout or
not Stock.checkStockLevel or
self.shoppingCart.shoppingCartItem.product -> forAll (p | p.quantityOnHand > 0)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
229
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context OrderConfirmation::effect()
post theOrderIsCreated:
o.oclIsNew() and
o.oclIsTypeOf(Order) and
o.customer = self.shoppingCart@pre.customer@pre and
o.billing = self.billing and
o.delivery = self.delivery and
o.shippingMethod = self.shippingMethod and
o.paymentMethod = self.paymentMethod and
o.currency = self.currency and
--The initial status of the order is pending
osc.oclIsNew() and
osc.oclIsTypeOf(OrderStatusChange) and
osc.comments = self.comments and
osc.orderStatus = Store.allInstances() -> any(true).defaultStatus and
osc.order = o and
--There is an order line for each shopping cart item
shoppingCart@pre.shoppingCartItem@pre->forAll
(i|OrderLine.allInstances() -> one
(ol|ol.order = o and
ol.product = i.product@pre and
ol.quantity = i.quantity@pre and
i.attribute@pre->forAll
(iAtt|OrderLineAttribute.allInstances() -> one
(olAtt|olAtt.orderLine = ol and
olAtt.attribute = iAtt))))
post theShoppingCartIsRemoved:
not self.shoppingCart@pre.oclIsKindOf(OclAny)
post updateProductQuantities:
let productsBought:Set(Product) =
self.shoppingCart@pre.shoppingCartItem@pre.product@pre->asSet()
in productsBought -> forAll (p|
let quantityBought:PositiveInteger =
self.shoppingCart@pre.shoppingCartItem@pre->select
(sc | sc.product = p).quantity -> sum()
in
p.quantityOrdered = p.quantityOrdered@pre + quantityBought and
Stock.substractStock implies
p.quantityOnHand = p.quantityOnHand@pre – quantityBought)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
230
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
OwnerChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
OwnerChange
newOwner : String [0..1]
effect()
„
Effect
context OwnerChange::effect()
post : myStore.owner = self.newOwner
Event
PasswordChange
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
PasswordChange
oldPassword : String
newPassword : String
effect()
„
Initial Integrity Constraints
context ChangePassword::passwordRight(): Boolean
body : self.password.size() >= MinimumValues.password
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
231
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
context ChangePassword::OldPasswordIsCorrect(): Boolean
body : customer@pre.password = self.oldPassword
„
Effect
context ChangePassword::effect()
post : self.customer.password = self.newPassword
Event
PasswordMinimumChange
„
Event diagram
DomainEvent
PasswordMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context PasswordMinimumChange::effect()
post : MinimumValues.password = self.newMinimum
Event
PercentageIncreaseForLargerPackagesShippingConfigurationChange
„
Event diagram
DomainEvent
PercentageIncreaseForLargerPackagesShippingConfigurationChange
newPercentage : Decimal
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
232
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context PercentageIncreaseForLargerPackagesShippingConfigurationChange::effect()
post : ShippingAndPackaging.percentageIncreaseForLargerPackages= self.newPercentage
Event
PostCodeMinimumChange
„
Event diagram
DomainEvent
PostCodeMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context PostCodeMinimumChange::effect()
post : MinimumValues.postCode = self.newMinimum
Event
PostCodeShippingConfigurationChange
„
Event diagram
DomainEvent
PostCodeShippingConfigurationChange
newPostCode : PostalCode [0..1]
effect()
„
Effect
context PostCodeShippingConfigurationChange::effect()
post : ShippingAndPackaging.postCode = self.newPostCode
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
233
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
PrimaryCustomerAddressChange
„
Event diagram
<<dataType>>
Customer
Address
1
1
ExistingAddressEvent
DomainEvent
ExistingCustomerEvent
PrimaryCustomerAddressChange
effect()
„
Initial Integrity Constraints
context PrimaryCustomerAddressChange::AddressOfCustomer(): Boolean
body : self.customer.address -> includes(self.address)
„
Effect
context PrimaryCustomerAddressChange::effect()
post : self.customer.primary = self.address
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
234
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ProductAttributeStatusChange
„
Event diagram
ProductAttribute
1
ExistingProductAttributeEvent
DomainEvent
ProductAttributeStatusChange
newStatus : Status
effect()
„
Effect
context ProductAttributeStatusChange::effect()
post : self.productAttribute.status = self.newStatus
Event
ProductDownload
„
Event diagram
Product
Customer
1
1
ExistingCustomerEvent
DomainEvent
ExistingProductEvent
ProductDownload
1
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
235
Downloadable
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context ProductDownload::DownloadEnabled(): Boolean
body : Download.enableDonwload
context ProductDownload::ProductWasPurchasedByCustomer(): Boolean
body : self.customer.order.orderLine.product -> includes (self.product)
context ProductDownload::DownloadableIsFromProduct(): Boolean
body : self.product.productAttribute -> select(pa | pa.oclIsTypeOf(Downloadable))
-> includes (self.downloadable)
context ProductDownload::DownloadIsNotExpired(): Boolean
body :
let datePurchased:DateTime =
self.customer.order
-> select (o | o.orderLine.product -> includes(self.product))
->sortedBy(purchased)->last().purchased
in
Now() <= datePurchased + self.downloadable.expiryDays
context ProductDownload::DownloadsCountNotExceeded(): Boolean
body :
let DownloadCountFromProduct:Natural =
self.customer.order.orderLine.orderLineAttribute
-> select (ola | ola.oclIsTypeOf(OrderDownload) and ola.orderLine.product = self.product)
-> sortedBy(orderLine.order.purchased)->last().oclAsType(OrderDownload).downloadCount
in
DownloadCountFromProduct < self.downloadable.maximumDownloadCount
„
Effect
context ProductDownload::effect()
post :
let OrderDownloadFromProduct:OrderDownload=
self.customer.order.orderLine.orderLineAttribute
-> select (ola | ola.oclIsTypeOf(OrderDownload) and ola.orderLine.product = self.product)
-> sortedBy(orderLine.order.purchased) -> last()
.oclAsType(OrderDownload)
in
let OldOrderDownloadCount:Integer =
self.customer.order.orderLine.orderLineAttribute@pre
-> select (ola | ola.oclIsTypeOf(OrderDownload) and ola.orderLine.product = self.product)
-> sortedBy(orderLine.order.purchased) -> last()
.oclAsType(OrderDownload).downloadCount
in
OrderDownloadFromProduct.downloadCount = OldOrderDownloadCount +1
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
236
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ProductOptionAttributeChange
„
Event diagram
ProductAttribute
1
ExistingProductAttributeEvent
DomainEvent
ProductOptionAttributeChange
1
Option
effect()
„
Effect
context ProductOptionAttributeChange::effect()
post : productAttribute.attribute.option = self.option
Event
ProductOptionValueAttributeChange
„
Event diagram
ProductAttribute
1
ExistingProductAttributeEvent
DomainEvent
ProductOptionValueAttributeChange
1
effect()
„
Effect
context ProductOptionValueAttributeChange::effect()
post : productAttribute.attribute.value = self.value
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
237
Value
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ProductStatusChange
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
ProductStatusChange
newStatus : ProductStatus
effect()
„
Effect
context ProductStatusChange::effect()
post : self.product.status = self.newStatus
Event
ReadProductInfo
„
Event diagram
Product
1
ExistingProductEvent
DomainEvent
ReadProductInfo
1
Language
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
238
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ReadProductInfo::effect()
post : self.product.productInLanguage->select(pil | pil.language=self.language).viewed =
self.product@pre.productInLanguage@pre->select(pil | pil.language=self.language).viewed + 1
Event
ReadReview
„
Event diagram
Review
1
ExistingReviewEvent
DomainEvent
ReadReview
effect()
„
Effect
context ReadReview::effect()
post : self.review.timesRead = self.review@pre.timesRead + 1
Event
ReorderLevelStockConfigurationChange
„
Event diagram
DomainEvent
ReorderLevelStockConfigurationChange
newValue : Natural
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
239
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ReorderLevelStockConfigurationChange::effect()
post : Stock.stockReorderLevel = self.newValue
Event
RestorePreviousShoppingCart
„
Event diagram
Customer
1
ExistingCustomerEvent
DomainEvent
RestorePreviousShoppingCart
1
Session
effect()
„
Initial Integrity Constraints
context RestorePreviousShoppingCart::CustomerHasAPreviousShoppingCart(): Boolean
body : self.customer.customerShoppingCart->notEmpty()
„
Effect
context RestorePreviousShoppingCart::effect()
post : self.session.shoppingCart = self.customer.customerShoppingCart
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
240
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ReviewTextMinimumChange
„
Event diagram
DomainEvent
ReviewTextMinimumChange
newMinimum : Natural
effect()
„
Effect
context ReviewTextMinimumChange::effect()
post : MinimumValues.reviewText = self.newMinimum
Event
SendExtraOrderEmailChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
SendExtraOrderEMailChange
newSendExtraOrderEMail : NameEMail [*]
effect()
„
Effect
context SendExtraOrderEmailChange::effect()
post : myStore. sendExtraOrderEmail = self.newSendExtraOrderEmail
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
241
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
SendNewsletter
„
Event diagram
Newsletter
1
ExistingNewsletter
DomainEvent
SendNewsletter
effect()
„
Effect
context SendNewsletter::effect()
post : self.newsletter.sent = Now()
Event
SetCancelledOrderStatus
„
Event diagram
Store
1
/myStore
StoreEvent
DomainEvent
SetCancelledOrderStatus
effect()
„
Effect
context SetCancelledOrderStatus::effect()
post : self.myStore.cancelledStatus = self.orderStatus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
242
1
OrderStatus
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
SetCurrentCurrency
„
Event diagram
Session
1
ExistingSessionEvent
DomainEvent
SetCurrentCurrency
effect()
„
1
newCurrentCurrency
Currency
Effect
context SetCurrentCurrency::effect()
post : self.session.currentCurrency = self.newCurrentCurrency
Event
SetCurrentLanguage
„
Event diagram
Session
1
ExistingSessionEvent
DomainEvent
SetCurrentLanguage
1
newCurrentLanguage
effect()
<<create>>
SetCurrentCurrency
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
243
Language
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ChangeCurrentLanguage::effect()
post :
session.currentLanguage = self.newCurrentLanguage
post :
Store.allInstances() -> any(true).switchToDefaultLanguageCurrency and
self.language.defaultCurrency -> notEmpty()
implies
ccc.oclIsNew() and
ccc.oclIsTypeOf(ChangeCurrentCurrency) and
ccc.session = self.session and
ccc.newCurrentCurrency = self.language.defaultCurrency
Event
SetDefaultCurrency
„
Event diagram
Currency
1
ExistingCurrencyEvent
DomainEvent
SetDefaultCurrency
effect()
„
Effect
context SetDefaultCurrency::effect()
post : Store.allInstances() -> any(true).defaultCurrency = self.currency
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
244
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
SetDefaultLanguage
„
Event diagram
Language
1
ExistingLanguageEvent
DomainEvent
SetDefaultLanguage
effect()
„
Effect
context SetDefaultLanguage::effect()
post : Store.allInstances() -> any(true).defaultLanguage = self.language
Event
SetDefaultOrderStatus
„
Event diagram
Store
1
/myStore
StoreEvent
DomainEvent
SetDefaultOrderStatus
effect()
„
Effect
context SetPendingOrderStatus::effect()
post : self.myStore.defaultStatus = self.orderStatus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
245
1
OrderStatus
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ShowBanner
„
Event diagram
DomainEvent
1
ExistingBannerEvent
Banner
ShowBanner
effect()
„
Effect
context ShowBanner::effect()
post :
BannerHistory.allInstances() -> one
(bh | bh.banner = self.banner and
bh.date = today() and
bh.shown = bh@pre.shown + 1)
Event
ShowBestPurchasedProducts
„
Event diagram
Query
ShowBestPurchasedProducts
answer
1
Language
effect()
„
Effect
context ShowBestPurchasedProducts::effect()
post :
answer =
Product.allInstances()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
246
answer:
Set(TupleType(product:String,
quantity:Natural))
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
-> sortedBy(quantityOrdered)
-> collect (p | Tuple {product = ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name,
quantity = p.quantityOrdered})->asSet()
Event
ShowBestViewedProducts
„
Event diagram
Query
ShowBestViewedProducts
1
answer
answer:
Set(TupleType(product:String,
quantity:Natural))
Language
effect()
„
Effect
context ShowBestViewedProducts::effect()
post :
answer =
Product.allInstances()
-> sortedBy(timesViewed)
-> collect (p | Tuple {product = ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name,
timesViewed = p.timesViewed})->asSet
Event
ShowCustomersOrdersTotal
„
Event diagram
Query
ShowCustomersOrdersTotal
answer
answer:
Set(TupleType(name:String,
total:Money))
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
247
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ShowCustomersOrdersTotal::effect()
post :
answer =
Customer.allInstances()
-> collect (c | Tuple {name = c.firstName.concat(c.lastName),
total = c.order.total -> sum()}) -> asSet()
Event
ShowExpectedProducts
„
Event diagram
Query
ShowExpectedProducts
answer
1
answer:
Set(TupleType(product:String,
dateAvailable:DateTime))
Language
effect()
„
Effect
context ShowExpectedProducts::effect()
post :
answer =
Product.allInstances() -> select(p|p.available.notEmpty() and p.available > Now())
-> sortedBy(available)
-> collect (p | Tuple {product = ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name,
dateAvailable = p.available}) ->asSet()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
248
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ShowNewProducts
„
Event diagram
Query
ShowNewProducts
1
answer
answer:
Set(TupleType(product:String,
added:DateTime))
Language
effect()
„
Effect
context ShowNewProducts::effect()
post :
answer =
Product.allInstances()
-> SortedBy(added)
-> collect (p | Tuple {product = ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name,
added = p.added})->asSet()
Event
ShowOnlineCustomers
„
Event diagram
Query
ShowOnlineCustomers
answer:Set(String)
answer
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
249
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ShowOnlineCustomers::effect()
post :
answer =
Session.allInstances().customer
-> collect (c | c.firstName.concat(c.lastName))->asSet()
Event
ShowOrdersOfCustomer
„
Event diagram
Customer
1
ExistingCustomerEvent
Query
answer:
Set(TupleType(id:Natural,
total:Money,
status:OrderStatus))
ShowOrdersOfCustomer
answer
effect()
„
Effect
context ShowOrdersOfCustomer::effect()
post :
answer =
self.customer.order
-> collect (o | Tuple {id = o.id,
total = o.total
status = o.orderStatusChange -> sortedBy(added) -> last()})->asSet()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
250
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ShowProductsOfCategory
„
Event diagram
Category
1
ExistingCategoryEvent
Query
answer:Set(String)
ShowProductsOfCategory
answer
1
Language
effect()
„
Effect
context ShowProductsOfCategory::effect()
post :
answer =
Product.allInstances() -> select(p | p.category -> includes(self.category))
-> collect (p | ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name)->asSet()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
251
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ShowProductsOfManufacturer
„
Event diagram
Manufacturer
1
ExistingManufacturerEvent
Query
ShowProductsOfManufacturer
answer
1
Language
answer:Set(String)
effect()
„
Effect
context ShowProductsOfManufacturer::effect()
post :
answer =
Product.allInstances() -> select(p | p.manufacturer=self.manufacturer)
-> collect (p | ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name)->asSet()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
252
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
ShowReviewsOfProduct
„
Event diagram
Product
1
ExistingProductEvent
Query
ShowReviewsOfProduct
1
answer
answer:
Set(TupleType(review:String,
rating:Rating))
Language
effect()
„
Effect
context ShowReviewsOfProduct::effect()
post :
answer =
self.product.review -> select (r | r.language = self.language)
-> collect (r | Tuple {review = r.review
rating= r.rating})->asSet()
Event
ShowSpecials
„
Event diagram
Query
answer:
Set(TupleType(product:String,
oldPrice:Money,
netPrice: Money))
ShowSpecials
answer
1
Language
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
253
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context ShowSpecials::effect()
post :
answer =
Special.allInstances()
-> collect (s | Tuple {product = ProductInLanguage.allInstances() ->select
(pil | pil.product = s and
pil.language=language).name,
oldPrice = s.netPrice
newPrice = s.specialPrice})->asSet()
Event
ShowUnderStockProducts
„
Event diagram
Query
ShowUnderStockProducts
answer
1
answer:
Set(TupleType(product:String,
quantity:Natural))
Language
effect()
„
Effect
context ShowUnderStockProducts::effect()
post :
answer =
Product.allInstances() -> select(p | p.quantityOnHand < Stock.stockReorderLevel)
-> SortedBy(Store.allInstances()->any(true).sortedBy(expectedSortField)
-> collect (p | Tuple {product = ProductInLanguage.allInstances() ->select
(pil | pil.product = p and
pil.language=language).name,
quantity = p.quantityOnHand}) -> asSet()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
254
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
StateCustomerDetailChange
„
Event diagram
DomainEvent
StateCustomerDetailChange
newValue : Boolean
effect()
„
Effect
context StateCustomerDetailChange::effect()
post : CustomerDetails.state = self.newValue
Event
StateMinimumChange
„
Event diagram
DomainEvent
StateMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context StateMinimumChange::effect()
post : MinimumValues.state = self.newMinimum
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
255
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
StatusPaymentMethodChange
„
Event diagram
PaymentMethod
1
ExistingPaymentMethodEvent
DomainEvent
StatusPaymentMethodChange
newStatus : Status
effect()
„
Effect
context StatusPaymentMethodChange::effect()
post : self.paymentMethod.status = self.newStatus
Event
StatusShippingMethodChange
„
Event diagram
ShippingMethod
1
ExistingShippingMethodEvent
DomainEvent
StatusShippingMethodChange
newStatus : Status
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
256
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context StatusShippingMethodChange::effect()
post : self.shippingMethod.status = self.newStatus
Event
StoreAddressAndPhoneChange
„
Event diagram
DomainEvent
StoreEvent
1
Store
/myStore
StoreAddressAndPhoneChange
newStoreAddressAndPhone : String [0..1]
effect()
„
Effect
context StoreAddressAndPhoneChange::effect()
post : myStore.storeAddressAndPhone = self.newStoreAddressAndPhone
Event
StreetAddressMinimumChange
„
Event diagram
DomainEvent
StreetAddressMinimumChange
newMinimum : PositiveInteger
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
257
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context StreetAddressMinimumChange::effect()
post : MinimumValues.streetAddress = self.newMinimum
Event
SubstractStockConfigurationChange
„
Event diagram
DomainEvent
SubstractStockConfigurationChange
newValue : Boolean
effect()
„
Effect
context SubstractStockConfigurationChange::effect()
post : Stock.substrackStock= self.newValue
Event
SuburbCustomerDetailChange
„
Event diagram
DomainEvent
SuburbCustomerDetailChange
newValue : Boolean
effect()
„
Effect
context SuburbCustomerDetailChange::effect()
post : CustomerDetails.suburb = self.newValue
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
258
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
SwitchToDefaultLanguageCurrencyChange
„
Event diagram
DomainEvent
StoreEvent
Store
1
/myStore
SwitchToDefaultLanguageCurrencyChange
newSwitchToDefaultLanguageCurrency : Boolean
effect()
„
Effect
context SwitchToDefaultLanguageCurrencyChange::effect()
post : myStore.switchToDefaultLanguageCurrency = self.newSwitchToDefaultLanguageCurrency
Event
TaxDecimalPlacesChange
„
Event diagram
DomainEvent
StoreEvent
1
<<Constant>>
/myStore
Store
TaxDecimalPlacesChange
newTaxDecimalPlaces : Natural
effect()
„
Effect
context TaxDecimalPlacesChange::effect()
post : myStore.taxDecimalPlaces = self.newTaxDecimalPlaces
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
259
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
TelephoneMinimumChange
„
Event diagram
DomainEvent
TelephoneMinimumChange
newMinimum : PositiveInteger
effect()
„
Effect
context TelephoneMinimumChange::effect()
post : MinimumValues.telephoneNumber = self.newMinimum
Event
TypicalPackageTareWeightShippingConfigurationChange
„
Event diagram
DomainEvent
TypicalPackageTareWeightShippingConfigurationChange
newValue : Natural
effect()
„
Effect
context TypicalPackageTareWeightShippingConfigurationChange::effect()
post : ShippingAndPackaging.typicalPackageTareWeight = self.newValue
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
260
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
UnInstallAuthorizeNetPaymentMethod
„
Event diagram
DomainEvent
UninstallAuthorizeNetPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallAuthorizeNetPaymentMethod::PaymentMethodIsInstalled():Boolean
body : AuthorizeNet.allInstances() -> notEmpty()
„
Effect
context UninstallAuthorizeNetPaymentMethod::effect()
post : AuthorizeNet.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallCashOnDeliveryPaymentMethod
„
Event diagram
DomainEvent
UninstallCashOnDeliveryPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallCashOnDeliveryPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CashOnDelivery.allInstances() -> notEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
261
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context UninstallCashOnDeliveryPaymentMethod::effect()
post : CashOnDelivery.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallCheckMoneyPaymentMethod
„
Event diagram
DomainEvent
UninstallCheckMoneyPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallCheckMoneyPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CheckMoney.allInstances() -> notEmpty()
„
Effect
context UninstallCheckMoneyPaymentMethod::effect()
post : CheckMoney.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallCreditCartPaymentMethod
„
Event diagram
DomainEvent
UninstallCreditCardPaymentMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
262
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context UninstallCreditCardPaymentMethod::PaymentMethodIsInstalled():Boolean
body : CreditCard.allInstances() -> notEmpty()
„
Effect
context UninstallCreditCardPaymentMethod::effect()
post : CreditCard.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallIPaymentPaymentMethod
„
Event diagram
DomainEvent
UninstallIPaymentPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallIPaymentPaymentMethod::PaymentMethodIsInstalled():Boolean
body : IPayment.allInstances() -> notEmpty()
„
Effect
context UninstallIPaymentPaymentMethod::effect()
post : IPayment.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
263
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
UninstallNochexPaymentMethod
„
Event diagram
DomainEvent
InstallNochexPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallNochexPaymentMethod::PaymentMethodIsInstalled():Boolean
body : Nochex.allInstances() -> notEmpty()
„
Effect
context UninstallNochexPaymentMethod::effect()
post : Nochex.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallPayPalPaymentMethod
„
Event diagram
DomainEvent
UninstallPayPalPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallPayPalPaymentMethod::PaymentMethodIsInstalled():Boolean
body : PayPal.allInstances() -> isEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
264
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context UninstallPayPalPaymentMethod::effect()
post : PayPal.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallPerItemPaymentMethod
„
Event diagram
DomainEvent
UninstallPerItemShippingMethod
effect()
„
Initial Integrity Constraints
context UninstallPerItemShippingMethod::ShippingMethodIsInstalled():Boolean
body : PerItem.allInstances() -> notEmpty()
„
Effect
context UninstallPerItemShippingMethod::effect()
post : PerItem.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallPSiGatePaymentMethod
„
Event diagram
DomainEvent
UninstallPSiGatePaymentMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
265
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context UninstallPSiGatePaymentMethod::PaymentMethodIsInstalled():Boolean
body : PSiGate.allInstances() -> notEmpty()
„
Effect
context UninstallPSiGatePaymentMethod::effect()
post : PSiGate.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallSECPaymentMethod
„
Event diagram
DomainEvent
UninstallSECPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallSECPaymentMethod::PaymentMethodIsInstalled():Boolean
body : SECPay.allInstances() -> notEmpty()
„
Effect
context UninstallSECPaymentMethod::effect()
post : SECPay.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
266
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
UninstallTableRatePaymentMethod
„
Event diagram
DomainEvent
UninstallTableRateShippingMethod
effect()
„
Initial Integrity Constraints
context UninstallTableRateShippingMethod::ShippingMethodIsInstalled():Boolean
body : TableRate.allInstances() -> notEmpty()
„
Effect
context UninstallTableRateShippingMethod::effect()
post : TableRate.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallTwoCheckOutPaymentMethod
„
Event diagram
DomainEvent
UninstallTwoCheckOutPaymentMethod
effect()
„
Initial Integrity Constraints
context UninstallTwoCheckOutPaymentMethod::PaymentMethodIsInstalled():Boolean
body : TwoCheckOut.allInstances() -> notEmpty()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
267
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context UninstallTwoCheckOutPaymentMethod::effect()
post : TwoCheckOut.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallUSPostalServicePaymentMethod
„
Event diagram
DomainEvent
UninstallUSPostalServiceShippingMethod
effect()
„
Initial Integrity Constraints
context UninstallUSPostalServiceShippingMethod::ShippingMethodIsInstalled():Boolean
body : USPostalService.allInstances() -> notEmpty()
„
Effect
context UninstallUSPostalServiceShippingMethod::effect()
post : USPostalService.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallZoneRatesShippingMethod
„
Event diagram
DomainEvent
UninstallZoneRatesShippingMethod
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
268
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Initial Integrity Constraints
context UninstallZoneRatesShippingMethod::ShippingMethodIsInstalled():Boolean
body : ZoneRates.allInstances() -> notEmpty()
„
Effect
context UninstallZoneRatesShippingMethod::effect()
post : ZoneRates.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
Event
UninstallFlatRateShippingMethod
„
Event diagram
DomainEvent
UninstallFlateRateShippingMethod
effect()
„
Initial Integrity Constraints
context UninstallFlatRateShippingMethod::ShippingMethodIsInstalled():Boolean
body : FlatRate.allInstances() -> notEmpty()
„
Effect
context UninstallFlatRateShippingMethod::effect()
post : FlatRate.allInstances() -> any(true)@pre.oclIsKindOf(OclAny)
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
269
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
UnlockNewsletter
„
Event diagram
Newsletter
1
ExistingNewsletter
DomainEvent
UnlockNewsletter
effect()
„
Effect
context UnlockNewsletter::effect()
post : self.newsletter.status = NewsletterStatus::unlocked
Event
UpdateCurrencyValueChange
„
Event diagram
Currency
1
ExistingCurrencyEvent
DomainEvent
UpdateCurrencyValueChange
newValue : Decimal
effect()
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
270
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
„
Effect
context UpdateCurrencyValueChange::effect()
post : self.currency.value = self.newValue
post : self.currency.lastUpdated = Now()
Event
UpdateOrderStatus
„
Event diagram
Order
1
ExistingOrderEvent
DomainEvent
UpdateOrderStatus
comments : String [0..1]
1 OrderStatus
newOrderStatus
effect()
„
Effect
context ChangeOrderStatus::effect()
post :
osc.oclIsNew() and
osc.oclIsTypeOf(OrderStatusChange) and
osc.comments = self.comments and
osc.order = self.order and
osc.orderStatus = self.newOrderStatus
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
271
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
Event
UpdateShoppingCart
„
Event diagram
Session
1
SessionEvent
ActionRequest
DomainEvent
ExistingShoppingCartItem
RemoveProduct
UpdateShoppingCart
effect()
<<dataType>>
LineChange
remove : Boolean
quantity : PositiveInteger
1..*
effect()
{ordered}
ChangeQuantity
quantity : PositiveInteger
effect()
„
Initial Integrity Constraints
context UpdateShoppingCart::complete(): Boolean
body : self.lineChange->size() = self.session.shoppingCart.shoppingCartItem->size()
„
Effect
context RemoveProduct::effect()
post : not self.shoppingCartItem@pre.oclIsKindOf(OclAny)
context ChangeQuantity::effect()
post : self.shoppingCartItem.quantity = self.quantity
context UpdateShoppingCart::effect()
post :
self.lineChange ->forAll
(lc|let cartItem:ShoppingCartItem =
self.shoppingCart.shoppingCartItem->
at(lineChange->indexOf(lc))
in
(lc.remove or lc.quantity <> cartItem.quantity)
implies
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
272
1
ShoppingCartItem
esquemaconceptual
3/ BEHAVIORAL SCHEMA
OsCommerce
if lc.remove then
rp.oclIsNew and
rp.oclIsTypeOf(RemoveProduct) and
rp.shoppingCartItem = cartItem
else
cq.oclIsNew() and
cq.oclIsTypeOf(ChangeQuantity) and
cq.shoppingCartItem = cartItem and
cq.quantity = quantity
endif )
Event
ZoneChange
„
Event diagram
DomainEvent
StoreEvent
1
/myStore
ZoneChange
effect()
„
1
newZone
Zone
Effect
context ZoneChange::effect()
post : myStore.zone = self.newZone
PFCAlbert tort
UNIVERSITAT POLITÈCNICA DE CATALUNYA
273
Store